- ベストアンサー
MYSQL→PHP→10件表示
現在phpを勉強しているのですがどうしても分からないことがあり、 質問をさせて頂きました。 PHPとMYSQLを使い、プルダウンメニューから検索した結果を 10件表示をしていきたいのですが、どうしてもうまくいかず混乱しております。 どのなたかご存知の方、お伺いしても宜しいでしょうか? $PAGESIZE = 10; //ここにmysqlに接続するスクリプト extract($_REQUEST); if (!isset($page)) { $page = 1; } if(!empty($fld)) { //$fldに検索したい住所が入ってます。 $local = addslashes($fld); $where .= "add1 = '$fld' && "; } if(!empty($where)) { $where = substr($where, 0, -3); $where = "WHERE " . $where; } $sql = "select count(*) as cnt from ○○ ". $where; $rst = mysql_query($sql); $row = mysql_fetch_array($rst); $tcnt = $row["cnt"]; mysql_free_result($rst); $totalpage = ceil($tcnt / $PAGESIZE); $pagehead = "<B>$tcnt 件みつかりました。 " . "[" . ($PAGESIZE * ($page - 1) + 1) . "-"; if ($page < $totalpage) { $pagehead .= ($PAGESIZE * $page) . "] を表示</B>"; } else { $pagehead .= "$tcnt] を表示</B>"; } $sql = "select * from ○○ ". $where. " order by renban desc limit " . $PAGESIZE * ($page - 1) . ", $PAGESIZE"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>登録データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["renban"]; echo " "; echo $row["tourokubi"]; echo "<br />"; echo $row["people"]; echo " "; echo $row["add1"]; echo $row["add2"]; echo "-"; echo $row["sta"]; echo " "; echo $row["tel"]; echo $row["url"]; echo $row["sejitu"]; echo $row["pr"]; echo "</p><hr />"; } } ?> <?= $pagehead ?> <?php mysql_free_result($result); mysql_close; $param_local = rawurlencode($local); if ($page > 1) { $body .= "<A href = '$PHP_SELF?page=" . ($page - 1) . "&tcnt=$tcnt&local=". $param_local. $param_category. "'>" . "前の $PAGESIZE 件</A>"; } if ($totalpage > 1 and $page < $totalpage) { $body .= "<A href = '$PHP_SELF?page=" . ($page + 1) . "&tcnt=$tcnt&local=". $param_local. $param_category. "'>" . "次の $PAGESIZE 件</A>"; } ?> <?= $body ?> </body> </html>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
ページャを作りたいということですか? 回答になってないですが 私はサンプルで公開されていたスクリプトを使用しました。 結構便利ですよ。
その他の回答 (2)
- asuncion
- ベストアンサー率33% (2127/6289)
どうしてもうまくいかず、とは、具体的にどうなるのでしょうか? また、 > $sql = "select count(*) as cnt from ○○ ". $where; ここで最終的に組み立てたSQL文の内容は正しいでしょうか? クエリーを実行する前に、print_rするなりして確かめてみてください。
- kossy0121
- ベストアンサー率0% (0/1)
10件表示できないというのは、「次の10件」という部分? それとも、データベースから10件取り出せないという意味ですか? んーでもLIMIT使ってるようですし・・・??
補足
さっそくのご回答ありがとうございます。 次の10件表示、前の10件などを表示したくスクリプトを書いておりました。 正直のこのスクリプト自体本などを参照し、色々ためしていたので 自分で収集がつかなくなった次第です、、
補足
ご返答ありがとうございます。 どうしてもうまくいかないというのは、検索はできているのですが 十件表示などができない状況です。 もう一度スクリプトを確認してみます。 print_rはやっておりませんでした。ご指摘ありがとうございます!