mysql>PHPにデータ表示、10件ごとにページ分割
はじめまして、PHP勉強中の初心者です。。
MYSQLから取り出したデータを件数でページ分割したいのですが、
うまくきません。。
環境:eclipse3.5、mysql5.0、php5.0、xampp
(phpで、sql接続、select * from でデータは表示は確認できてます)。。
ソースは↓です。。(初心者なもので不備がればすみません)。。
eclipse上では
if (($page_num+1)*10<$cnt) {}でエラーで表示されます。。
どなたかご存知の方いましたら、教えていただけないでしょうか?
<!--kensaku.html-->
<html>
<body>
<form action ="kensaku.php" method="post">
名前:<input type="text" name="nm">
年齢:<input type="hidden" name="page_num" value="0">
<input type="submit" name="exec" value="検索">
</form>
</body>
</html>
//kensaku.php ソース
<html>
<body>
<?
$nm=$_POST['nm'];
$page_num=$_POST['page_num'];
//データベースに接続
if (!$conn =mysql_connect("","user","PASS")) {
echo "接続エラー" ;
exit ;
}
//データベースを選択
if (!mysql_select_db("table", $con)) {
echo "データベース選択エラー" ;
exit ;
}
//LIMITを使ったSELECT文を作成
$sql = "select id,name from table " ;
$sql.= "where name like '%$nm% ' order by id " ;
$sql.="limit" . $page_num * 10 . ", 10" ;
//SQL実行
if (!$res = mysql_query($sql)) {
echo "SQLエラー<BR>" ;
exit ;
}
//検索結果表示
echo "<table border=1>" ;
echo "<tr><td>id</td><td>name</td></tr>" ;
while($row = mysql_fetch_array($res)){
echo "<tr>" ;
echo "<td>" . $row["id"] . "</td>" ;
echo "<td>" . $row["name"] . "</td>" ;
echo "</tr>" ;
}
echo "</table>" ;
//検索条件に該当する全データの件数取得
$sql = "select count(*) from member " ;
$sql.="where name like '% $nm % ' order by id " ;
if (!$res = mysql_query($sql)) {
echo "SQLエラー<BR>" ;
exit ;
}
$row = mysql_fetch_array($res) ;
$cnt = $row[0] ;
//ページ表示
if(!$cnt > 10)
echo ceil($cnt / 10), "ページの中の", $page_num + 1, "ページ目を表示<br>";
//前の10件
if ($page_num !=0) {
echo "<a href = kensaku.php?nm=".$nm.",".$page_num -1..">";
echo "< 前の10件";
}
//次の10件.--ここからエラー行ですが、、解決策がわかりません。。
if (($page_num+1)*10<$cnt) {
echo "<a href = kensaku.php?nm=".$nm.",".$page_num +1..">";
echo " 次の10件 &g</a>t";
}
//結果セットの開放
mysql_free_result ($res) ;
//データベースから切断
mysql_close($con) ;
?>
</body>
</html>
すみませんが、ご存知の方いましたら、よろしくお願いいたします。
補足
非常にわかり難い説明ですみません。 掲示板などで、前のページ、次のページというリンクがあると思いますが、このような呼び出しSQL文を作りたいのですが、どうすればいいのかわかっていません。 次のページなら SELECT * FROM table_name LIMIT 0,10; 前のページなら SELECT * FROM table_name [先頭レコードID],LIMIT 10; 見たいな感じで教えていただけると助かりますm(_ _)mペコリ