プロが教えるわが家の防犯対策術!

先ほども質問したのですが再度質問させていただきます
mysql limitページ分割を行っていてエラーは消せたのですが今度
SQLエラーになり出来ません
前の人が質問したのを参考にしてつくったのですがうまくいかず困っています
検索結果を10件ずつ表示して
googleみたいに 1l 2l 3
みたいな感じやりたいです

<body>
<?php
error_reporting(E_ALL ^ E_NOTICE);
//データベースに接続
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 '%{$_GET['name']}%') or (住所 LIKE '%{$_GET['name']}%')";
$sql = "limit" . $page * 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 + 1, "ページ目を表示<br>" ;

//前の10件
if ($page_num != 0) {
echo "<a href = find.php?name=".$name. ". $page -1.>" ;
echo "&lt 前の10件";
}

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

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

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

A 回答 (3件)

>limit0, 10


>こう表示されます

前回、「下の行で$sqlが上書きされている」って書きましたよね
読まなかった?理解できなかった?わかってて無視した?

$sql = "limit" . $page * 10 . ", 10" ;
は、最低でも
$sql .= "limit" . $page * 10 . ", 10" ;
でしょ?

この回答への補足

すいませんスペース入ってました
エラーは消えたのですが
select * from tbl_test where (氏名 LIKE '%田%') or (住所 LIKE '%田%')limit0, 10

こう表示されデータが表示されません

補足日時:2014/04/24 13:56
    • good
    • 0
この回答へのお礼

すいません
$sql.= "limit" . $page * 10 . ", 10" ;にすると
Parse error: syntax error, unexpected '=' in
エラーが出たので記述が違うかなと思い消してしまいました
ごめんなさい
指摘ありがとうございます
なぜエラーが出るのでしょ?
ほかのところが間違っているのでしょうか

お礼日時:2014/04/24 13:54

で、print $sqlしてみて文法エラーを確認してほしいんですが



$sql .= " limit " . $page * 10 . ", 10" ;
と、limitの文字の前後に空白をいれるところから始めてみてください

決して差別をするわけではないですが、念のため教えてほしいのですが
「文字通りの意味しか理解できないコミュニケーション障害」的な
ハンデをお持ちの方ではないですよね?
それによって教える表現がだいぶかわってくるので・・・

この回答への補足

文法エラーを徐々に消すことができたのですが
例えば"田"と打つと引っかかるのは2件なのですが1件しか表示されません
あと1つ目のSQLエラーを抜けたのですが2つ目のSQLエラーが表示されたので1つも目同様
echo "SQLエラー<BR>" ;
をecho "$sql <BR>";にしたのでまずいですか?
入れたら
Warning: mysql_fetch_array(): 5 is not a valid MySQL result resource
こう表示されたのですがまずいですかね

補足日時:2014/04/24 15:16
    • good
    • 0
この回答へのお礼

そのようなハンデは持ってないです。
ただ少し頭の回転が悪いので丁寧に説明していただけるとありがたいです

" limit "にしたのですが変わりません
$sql.=" limit " . $page * 10 . ", 10";

お礼日時:2014/04/24 14:11

echo "SQLエラー<BR>" ;



のところに、$sql を表示してみましょう。

この回答への補足

$sql.=" limit " . $page * 10 . ", 10";
こうなりました
どこか他にいけないところがあるのでしょうか

補足日時:2014/04/24 14:44
    • good
    • 0
この回答へのお礼

回答ありがとうございます
$sqlを入れたところ

limit0, 10
こう表示されます

お礼日時:2014/04/24 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!