DBを使用しないで条件にマッチしたもののみページング
以前DBを使用しないページングについてお教えいただいた者です。
少し改良して降順ソートを出来るようになったのですが、
リスト表示の際にある条件に一致したもののみを表示する場合の
やり方が分かりません。。。
現在は以下のようになっています。
■sample.csv
no0001,あああああ,20050101,ON
no0002,いいいいい,20050102,OFF
略)
no0020,ととととと,20050120,OFF
■index.php
(800字オーバーしてしまうので、省略しています。)
//ファイルを配列に格納
$rec = file("sample.csv");
//レコード数を取得して、最後尾の行番号を取得
$rec_number = sizeof($rec) -1;
//ページ範囲を出力
for ( $i = $rec_number-$page*$max; $i > $rec_number-$page*$max-$max; $i -- ) {
$data = explode(",","$rec[$i]");
if ($data[3]==("ON") && $data[2]<=date("Ymd")) {
print $data[0].("<br>");
print $data[1].("<br>");
print $data[2].("<br><br>\n");
}
}
print "<a href=\"?page=".($page+1)."\">次のページへ</a>\n";
?>
CSVの各行の[3]が
「ON」となっていれば表示し、
「OFF」となっていれば表示しないようにし、
また、[2]が
今日以降の日付であれば表示しないようにしたいのですが、
for文の中に上記のようなif文を使ってしまうとオカシナことに
なってしまいます。
(no0020が抜けただけで1ページ目に9件しか表示されません。本当は
no0020が抜けたので、no0010までの10件を表示させたいのです。)
根本的な部分が間違っているような気がするのですが、
どのような考え方で作れば良いのか分かりません。
また皆様のお力をお貸しください。
宜しくお願いします。
お礼
有難うございます。大変助かりました。 繰り返し文はいろいろあって、どのような時にどれを使えばいいのか、まだあまり理解できていないため、whileと書いてみました。 この場合はfor文がよいのでしょうか。勉強になりました。