riaf の回答履歴

全1件中1~1件表示
  • 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件を表示させたいのです。) 根本的な部分が間違っているような気がするのですが、 どのような考え方で作れば良いのか分かりません。 また皆様のお力をお貸しください。 宜しくお願いします。

    • ベストアンサー
    • PHP