みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

mysql limitページ分割

前の人が質問したのを参考にしてつくったのですがうまくいかず困っています
検索結果を10件ずつ表示して
googleみたいに 1l 2l 3
みたいな感じやりたいです

<html>
<body>
<?php
//データベースに接続
if (!$con = mysql_connect("localhost", "root", "admin")) {
echo "接続エラー" ;
exit ;
}

//データベースを選択
if (!mysql_select_db("db_test", $con)) {
echo "データベース選択エラー" ;
exit ;
}

//LIMITを使ったSELECT文を作成
$sql = "select * from tbl_test where (氏名 LIKE '%{$_POST['name']}%') or (住所 LIKE '%{$_POST['name']}%')";
$sql = "limit" . $page_num*10 . ", 10" ;

//SQL実行
if (!$res = mysql_query($sql)) {
echo "SQLエラー<BR>" ;
exit ;
}

//検索結果表示
echo "<table border=1>" ;
echo "<tr>
<th>番号</th>
<th>氏名</th>
<th>住所</th>
<th>操作</th>
</tr>" ;
while($row = mysql_fetch_array($res)){
$ID = htmlspecialchars($row['番号']);
$NAME = htmlspecialchars($row['氏名']);
$ADDR = htmlspecialchars($row['住所']);
echo "<tr>
<td>$ID</td>
<td>$NAME</td>
<td>$ADDR</td>
<td><a href='edit.php?番号=$ID'>修正</a>
<a href='delete.php?番号=$ID'>削除</a></td>
</tr>";
//検索条件に該当する全データの件数取得
$sql = "select count(*) from tbl_test " ;
$sql = "where (氏名 LIKE '%{$_POST['name']}%') or (住所 LIKE '%{$_POST['name']}%')";
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 = find.php?name=",$name, ", $page_num -1.">" ;
echo "&lt 前の10件";
}

//次の10件
if (($page_num + 1)*10 < $cnt) {
echo "<a href = find.php?name=",$name, ", $page_num +1.">" ;
echo " 次の10件 &g</a>t" ;
}

//結果セットの開放
mysql_free_result ($res) ;

//データベースから切断
mysql_close($con) ;
?>
</body>
</html>



Parse error: syntax error, unexpected '前の10件' (T_STRING), expecting ',' or ';'
というエラーが出て自分なりにバグを消しているのですがまだエラーが消えずに困っています

投稿日時 - 2014-04-24 11:34:16

QNo.8566900

すぐに回答ほしいです

質問者が選んだベストアンサー

構造うんぬんではなく、文法エラーのようですね。

echo "<a href = find.php?name=",$name, ", $page_num -1.">" ;

の部分、

echo "<a href = find.php?name=". $name . ", $page_num -1.">" ;

ではないですか?

" " と " " など、文字列と文字列を連結するのは , ではなく . ですよね。

次の10件の部分も同様かと思います。

投稿日時 - 2014-04-24 11:51:49

補足

文法エラーを消したら出来たのですが今度はSQLエラーになってしまい先に進みません
また改めて質問させていただいたのでよかったらまたそちらでご指摘お願いします

今回ベストアンサーに選ばせていただきます

投稿日時 - 2014-04-24 13:34:52

お礼

ありがとうございます
指摘した点をなおしたのですがまだ同じエラーが出ます

投稿日時 - 2014-04-24 11:58:12

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

たとえば

>$sql = "select * from tbl_test where (氏名 LIKE '%{$_POST['name']}%') or (住所 LIKE '%{$_POST['name']}%')";
>$sql = "limit" . $page_num*10 . ", 10" ;

下の行で$sqlが上書きされている
もうなんていうか、そういうチェックをこの掲示板でさせたいの?

>if (!$res = mysql_query($sql)) {

いままでmysqliだPDOで苦労してきたことをすべてすてて
非推奨環境に逆戻り?プリペアド処理はもうやめた?

投稿日時 - 2014-04-24 11:49:04

お礼

ありがとうございます
参考したサイトやサンプルなのがみんなこのやり方だったので。
すいません
いい方法ありますか?

投稿日時 - 2014-04-24 12:00:38

あなたにオススメの質問