配列表示の方法
ちょっと長いですが・・・このサイトを参考に、カンマ区切りのデータをテーブルデザインで表示したいのですが、うまくいきません。
参考サイト:
http://www.sakura-pc.jp/php/page.html
■$arrayにカンマデータを代入して表示しようと思ったコード
$data_file = "test.txt";
$array = file($data_file);
for($i=0; $i<count($array); $i++){
list($data1,$data2,$data3,$data4,$data5) = split(",", $array[$i]);
}
以下参考ソース
<?php
header("Content-type: text/html; charset=shift_jis");
$thisphp="page.php";
$page_line_num=5;#1つのページに表示させたい件数
if(!$page_num=$_GET["page"]){$page_num=1;}#最初は1ページ目とする
///////// この部分がわかりません。カンマデータを$arrayに代入してHTMLでテーブル表示する方法/////////////////////////////////
$array=array('1行目','2行目','3行目','4行目','5行目','6行目','7行目','8行目','9行目','10行目',
'11行目','12行目','13行目','14行目','15行目','16行目','17行目','18行目','19行目','20行目',
'21行目','22行目','23行目','24行目'
);
//////////////////////////////////////////////////////////////
$page_array=array_slice($array,($page_num-1)*$page_line_num,$page_line_num);#表示する分だけ別の配列に格納する 配列は0から数えるので処理上は1ページ目は0ページ目とする
print_r($page_array);#現在のページで表示される中身を確認
$next_page=$page_num+1;#次のページ
$back_page=$page_num-1;#前のページ
if($back_page >= 1){$back_str='<a href="'.$thisphp.'?page='.$back_page.'">前へ</a>';}#現在より前のページが存在すれば戻るリンクを作る
else{$back_str='<span style="color:gray">前へ</span>';}#存在しなければグレイ色で薄く表示
if(count($array) > ($next_page-1)*$page_line_num){$next_str='<a href="'.$thisphp.'?page='.$next_page.'">次へ</a>';}#現在より後のページが存在すれば進むリンクを作る
else{$next_str='<span style="color:gray">次へ</span>';}
$all_page_num=count($array) / ($page_line_num-1);#全部のページ数を計算
for($i=1;$i<$all_page_num;$i++){#存在するページ番号を生成
if($i != $page_num){$page_str.='[<a href="'.$thisphp.'?page='.$i.'">'.$i.'</a>]';}
else{$page_str.='[<span style="color:gray">'.$i.'</span>]';}
}
print '<p>'.$back_str.' '.$page_str.' '.$next_str.'</p>';#ページを切り替えるリンクを表示する
?>
お礼
おかげさまで解決しました。 書き込みデータの chop $data; をコメント化したところ上手くいきました。 またよろしくお願いします。
補足
回答ありがとうございました。 表示方法ですが正規は、 2006年9月1日(金)21時41分 遊び 広告 わーい と表示されるはずが、 2006年9月1日(金)21時41分 遊び 広告 わーい324 と表示されたり、 1行のみ表示するところが 全件(325件)表示されるはずが、 325件目と全然いじってもいない○○件目の2件しか 表示されません。 >テキストファイルも、CGIもHTMLも全てSJISですか? はい、おそらくすべてsjisになっていると思います。 あまり設定するところではないのでEUCなどに変えることはありません。 ちなみにテキストファイルに編集した内容を書き込むときの処理は、 foreach(@all){ $data = $_; chop $data; ( $fnum ) = ( split(/:/,$data) )[0]; if ( $fnum == $num ) { $data = "$num:$time:$title:$topic:$message\r\n"; &jcode'convert(*data, 'sjis'); } push @all_data, $data; } close(KEIJI); open(KEIJI, ">keijiban.dat") || die "File 'keijiban.dat' Open Error."; flock(KEIJI, 2); # (新規データ+過去データ)をファイルに上書き print KEIJI @all_data; flock(KEIJI, 8); close(KEIJI); 下記のような処理を行っています。 なにかヒントおありでしょうか?