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件を表示させたいのです。)
根本的な部分が間違っているような気がするのですが、
どのような考え方で作れば良いのか分かりません。
また皆様のお力をお貸しください。
宜しくお願いします。
お礼
すいません、分かりにくいですよね。 というか、自分自身どこが悪いのか分からないので ソースを貼ります。 基本的にコピペのあと自分のデータに合うように改変したものです。 読むのがご面倒ですがよろしくお願いします。 <%@ page contentType="text/html;charset=Shift_JIS" import="com.ycompany.paging.*,com.ycompany.util.*" %><% int no = Util.getInt(request, "no" , 1); int abc = Util.getInt(request, "abc" , 1); int age = Util.getInt(request, "age" , 1); String countQuery="select count(distinct no) from ******** "; StringBuffer selectQuery=new StringBuffer(); selectQuery.append("select no, abc, age from ********5 "); selectQuery.append(" group by no"); selectQuery.append(" order by no desc"); int rows = 10 ; Paging paging = new Paging(); PageContent pageContent = paging.init(rows, countQuery, selectQuery.toString(), no, abc); %><html><head><Script> function fnList(no, abc, age) { document.formGoto.no.value = no; document.formGoto.abc.value = abc; document.formGoto.age.value = age; document.formGoto.action="listup.jsp"; document.formGoto.submit(); } </script> <title>aboutjsp.com</title> </head> <body> <form name="formGoto" method="get"> <input type="hidden" name="no" value=""> <input type="hidden" name="abc" value=""> <input type="hidden" name="age" value=""> </form><center><table border=1><tr> <%=pageContent.getCurrentPage() +" / " + pageContent.getLastPage() %> <th>no</th><th>Name</th><th>Age</th></tr> <% if ( pageContent.getTotalRow() != 0 ) { Data[] data = pageContent.getData(); for ( int i =0 ; i < data.length; i++) { %> <tr> <td style="word-break:break-all" width=600> <a href="<%=data[i].getData1()%>" target="_blank"><%=data[i].getData1()%></a> </td> <td align=center><%=data[i].getData2()%></td> </tr><% } %><% } みたいな感じです。