※ ChatGPTを利用し、要約された質問です(原文:PHPとMysqlのページ分割表示について)
PHPとMysqlのページ分割表示について
2012/01/05 01:33
このQ&Aのポイント
PHPとMysqlを使用して、ページ分割表示を実装する方法について教えてください。
質問者は、検索フォームから入力した情報をデータベースから取得し、表示制限を10個に設定し、次のページと前のページに移動できるシステムを作りたいとしています。
エラーが発生しており、特に前の10件を表示する部分でエラーが発生しているようです。
以前こちらで質問させて頂きまして
htmlの検索フォームから入力した情報をデータベースから引っ張ってきて
表示するまでは出来たのですが、表示制限を10個にして、次のページ、前のページと移動させるようなシステムにしたいのですが、うまくいきません(エラーが出てしまいます)
どうか、お力をお貸し願えないでしょうか。
search.html
<html>
<head><title>検索</title></head>
<body>
<form action="/search/"method="post">
/*page_numを入れた*/
<input type="hidden" name="page_num" value="0">
<li>会社名</li>
<li><input type="text"name="name"></li>
<li>電話番号</li>
<input type="text"name="phone" maxlength="11">
<input type="submit" name="submit" value="検索">
</body>
</html>
index.php(データベースから情報を引っ張り出す)
<?php
$host="localhost";
if(!$conn=mysql_connect($host,"usr","passwd")){
die("データベース認証エラー.<br />");
}
mysql_select_db("usr",$conn);
$condition="";
if(isset($_POST["name"])&&($_POST["name"]!="")){
$name=mysql_real_escape_string($_POST["name"]);
$name=str_replace("%","\%",$name);
$condition="WHERE name LIKE \"%".$name."%\"";
}
if(isset($_POST["phone"])&&($_POST['phone']!="")){
$phone=mysql_real_escape_string($_POST["phone"]);
$phone=str_replace("%","\%",$phone);
if($condition==""){
$condition="WHERE phone LIKE \"%".$phone."%\"";
}else{
$condition.="AND phone LIKE \"%".$phone."%\"";
}
}
$tmp=$page_num*10;
$sql="SELECT * FROM table".$condition."ORDER BY id limit".$tmp.",10";
while($row=mysql_fetch_array($res)){
print("<table border=\"1\">");
print("<tr><td>会社名</td><td>電話番号</td></tr>");
print("<tr>");
print("<td>".$row['name']."</td>");
print("<td>".$row['phone']."</td>");
print("</tr>");
print("</table>");
}
$cnt=$row[0];
//ページ表示
if(!$cnt>10){
echo ceil($cnt/10), "ページの中の",$page_num+1,"ページ目を表示<br>";
}
//前の10件
if ($page_num!=0){
echo "<a href=index.php?name=",$name,".$page_num -1.">";
echo "<</a>;
echo "前の10件";
}
//次の10件
if (($page_num+1)*10<$cnt){
echo "<a href=index.php?name=",$name,".$page_num +1.">";
echo "次の10件";
echo "&g</a>t";
}
mysql_free_result($res);
//データベースから切断
mysql_close($conn);
?>
ちなみにエラーが出ている行はここの
//前の10件
if ($page_num!=0){
echo "<a href=index.php?name=",$name,".$page_num -1.">";
echo "<</a>;
echo "前の10件";
}
>>echo "<</a>;
この部分がエラーになっています。
質問の原文を閉じる
質問の原文を表示する
お礼
今まで、色々と教えて下さりありがとうございました。 後は自分で頑張って解決してみます。 本当に感謝しています。
補足
ご指摘ありがとうございます。 下記の通り入れたところエラーもなくなり一覧表示しました。 $res = mysql_query($sql); if ( ! $res ) { die('Invalid query: ' . mysql_error());} ですが、肝心の//ページ表示//次のページ//前のページが表示されません。 検索のフォームのhtmlでは <input type="hidden" name="page_num" value="0"> にてGETにてデータを以下のPHPに引渡ししているのですが、引き渡された後がうまくいきません。 色々と試していますが駄目です。 今登録されている件数が11件であれば//次の10件の部分が表示されるはずなのですが。 不思議とhtmlのvalue="1"にすると、//前の10件の部分は表示されるようになりました。 $page=mysql_real_escape_string($_GET["page"]); $cnt=$row[0]; //ページ表示 if(!$cnt>10){ echo ceil($cnt/10),"ページの中の",$page +1,"ページ目を表示<br>"; } //前の10件 if($page!=0){ echo "<a href=index.php?name=".$name."&phone=".$phone."&page_num=".($page_num -1).">"; echo "<</a>"; echo "前の10件"; } //次の10件 if(($page+1)*10<$cnt){ echo "<a href=index.php?name=".$name."&phone=".$phone."&page_num=".($page_num +1).">"; echo "次の10件"; echo "></a>"; } mysql_free_result($res); //データベースから切断 mysql_close($conn); ?> 2日間もお付き合いいただき本当にありがとうございます。 もし面倒で無ければアドバイスいただけたらと思います。 アドバイスいただけなくても、superside0さまをベストアンサーにさせて頂きます