- 締切済み
MySQLによる一定件数表示
私は、PHPとMySQLを使ってHPを作成している初心者です。多数の参考書スクリプトを改造しながらやっています。私のHPではMySQLに登録してあるデータを全件表示する工程は考えていません。ドロップダウンメニュー1つとテキストボックスが3つある検索ページから検索して、その検索したデータを10件ずつ表示するやり方をしたいと考えています。現時点では、最初の10件は表示されるものの、「次ページ」以降が表示されません。2000文字以内の規定があるようなので飛び飛びになってしまうと思いますが、スクリプトを出来る限り記載しますのでご指摘いただけたら幸いです。 ※まずは、このようにempty関数を使って入力なしでの検索を回避 if( empty($検索項目1) && empty($検索項目2) && empty($検索項目3) && empty($検索項目4) ) { /* 何も入力がない場合 */ print "検索項目に何も入力がありません。\n"; ※部分一致検索のスクリプト /* 検索(部分一致検索) */ $query = " 検索項目1のフィールド名 LIKE '%" . $検索項目1 . "%' AND 検索項目2のフィールド名 LIKE '%" . $検索項目2 . "%' AND 検索項目3のフィールド名 LIKE '%" . $検索項目3 . "%' AND 検索項目4のフィールド名 LIKE '%" . $検索項目4 . "%'"; ※上記$queryを使って1ページ当りの表示件数を設定するスクリプト ※検索の一覧を表示するスクリプト 検索結果一覧<br><br> <table border="0"> <TR> <TH>一覧の題名部分のスクリプト</TH> </TR> <?php //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($sql)) { ?> <TR> <TD>一覧を表示させるスクリプト</TD> </TR> <?php } print "</table>\n"; ※ページ移動用リンクの組み立てをするスクリプト //各ページ番号への直接移動用 for ($cnt = 1; $cnt <= $pgmax; $cnt++) { $startprm = ($cnt - 1) * $ROWMAX; $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm&検索項目1のname属性=$検索項目1&検索項目2のname属性=$検索項目2&検索項目3のname属性=$検索項目3&検索項目4のname属性=$検索項目4'>$cnt</A> "; } //1つ次のページへの移動用 if ($curpage < $pgmax) { $startprm = $curpage * $ROWMAX; } else { $startprm = ($curpage - 1) * $ROWMAX; } $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm&検索項目1のname属性=$検索項目1&検索項目2のname属性=$検索項目2&検索項目3のname属性=$検索項目3&検索項目4のname属性=$検索項目4'>></A> "; 大変長くて申し訳ありません。あと、前ページ・先頭ページ・最終ページのスクリプトの中にも同じように検索ページから入力された内容(値)を渡すようにGETで組んでみたのですが、最初の1ページ目が表示されるだけで「次ページ」以降が表示されません。リンク番号を見ると検索の内容分のデータは読み込まれている感じはします。また、empty関数を取り除いてしまうと、リンクはうまくいくのですが、登録されている全件に対しての表示になってしまいます。分かりづらいと思いますが、どうかご指導の程よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mookun2007
- ベストアンサー率59% (28/47)
MySQLを使っているならページングにはLIMIT句を使用しましょう。
お礼
ご指摘ありがとうございます。