はじめまして、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>
すみませんが、ご存知の方いましたら、よろしくお願いいたします。
No.5ベストアンサー
- 回答日時:
連投すみません。
そちらが #2の補足に提示されたソースを PHPエディタにコピペした所、中括弧が全角になっている部分が2ヶ所ありましたが、そちらのソースでは 大丈夫でしょうか?
> }
> //↓↓↓まだここのエラーとeclipseが表示。。
> //次の10件.--ここからエラー行ですが、、解決策がわかりません。。
> if(($page_num+1)*10<$cnt){
> echo "<a href = kensaku.php?nm=".$nm.",".$page_num+1 .">";
> echo " 次の10件 &g</a>t";
> }
もしかして、シンプルなパースエラー?
この回答への補足
bm_hiroさん、ありがとうございます。
いろいろやってみましたが、SQLエラーに変わりした。。
エラーMSGはeclipseのエラーですが
データベース選択エラーSQLエラー[]2
id name
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in 34
SQLエラー
SQLエラー[select count(*) from member where name like '%安%' order by id ]4
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in 49
Warning: mysql_free_result():66
ソースは(汚くてすみません)
<html>
<body>
<?php
$nm=$_GET['nm'];
$page_num=$_GET['page_num'];
//データベースに接続
if(!$conn =mysql_connect("","user","pass")){
echo "接続エラー" ;
echo "SQLエラー[$sql]1<BR>" ;
}
//データベースを選択
if(!mysql_select_db("member",$conn)){
echo "データベース選択エラー" ;
echo "SQLエラー[$sql]2<BR>" ;
}
//LIMITを使ったSELECT文を作成
$TMP=$page_num*10;
$sql ="select id,name from member where name like '%$nm%' order by id limit ".$TMP.",1";
//SQL実行
if(!$rs = mysql_query("SET NAMES 'sjis' ",$conn)){
echo "SQLエラー<BR>3" ;
echo $TMP."<br>";
echo $page_num;
exit ;
}
//検索結果表示
echo "<table border=1>" ;
echo "<tr><td>id</td><td>name</td></tr>" ;
//--ここが↓34行目エラー
while($row=mysql_fetch_array($rs))
{
echo "<tr>" ;
echo "<td>" . $row["id"] . "</td>" ;
echo "<td>" . $row["name"] . "</td>" ;
echo "</tr>" ;}
echo "</table>" ;
//検索条件に該当する全データの件数取得
$sql2 = "select count(*) from member " ;
$sql2.="where name like '%$nm%' order by id " ;
if(!$rs=mysql_query($sql2,$conn))
{
echo "SQLエラー<BR>" ;
echo "SQLエラー[$sql2]4<BR>";}
//--ここが↓49行目エラー
$row = mysql_fetch_array($rs) ;
$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";
}
//結果セットの開放
//--ここが↓66行目エラー
mysql_free_result($rs);
//データベースから切断
mysql_close($conn);
?>
</body></html>
多分$rsの箇所のエラーだと思いますが、解決策がまだ。。
私もいろいろ試してみますが、
ご存知の方いましたら、教えていただけないでしょうか?
bm_hiroさん,たびたびすみません。。
おかげ様で解決しました。
上記の補足の部分はsqlデータdbの選択ミスですした。。
お恥ずかしい限りです。。。
でも、GETの件や{の全角の指摘がなければ、解決しませんでした。
本当に、私のような、初心者の質問にも回答いただけこと感謝したします。ありがとうございました。
また、掲示板で見かけたら、すみませんが、お願いいたします。
No.3
- 回答日時:
デバックする方法を、もう少し勉強した方が良いと思いますが ^ ^;
アルゴリズム的な問題は無視して、記述されたスクリプトを読むと・・・
>$sql.="limit".$TMP.",10" ;
$sql.="limit△".$TMP.",10" ;
△は半角スペースですが・・・分かりませんでしたか ^ ^;
>//↓↓↓まだここのエラーとeclipseが表示。。
>//次の10件.--ここからエラー行ですが、、解決策がわかりません。。
>if(($page_num+1)*10<$cnt){
>echo "<a href = kensaku.php?nm=".$nm.",".$page_num+1 .">";
eclipseの経験ないので、どのようなエラーか不明ですが、下記の記載があるので、
>$nm=$_POST['nm'];
>$page_num=$_POST['page_num'];
href=kensaku.php?nm=(数字)&page_num=(数字)と記述する形式です。
「=kensaku.php?nm=".$nm.",".$page_num+1 .">」は、上記の形式になっていないです!!
「=kensaku.php?nm=".$nm."&".$page_num+1 .">」
「,」を「&」に置き換えるが正解と思います。
でも・・・POSTではなくGETでないですか?
FORMでの受け渡しなど基礎的なことが違って気がしますよ
No.2
- 回答日時:
LIMIT 使ってましたね ^ ^;
> $sql.="limit" . $page_num * 10 . ", 10" ;
計算式を直接記述しているのが不味いとお思います。
「$page_num * 10」
TMP= $page_num * 10;
$sql.="limit" . $TMP . ", 10" ;
バックスラッシュが有効なら・・・
$sql.="limit" . `$page_num * 10` . ", 10" ;
デバックですが・・・
>echo "SQLエラー<BR>" ;
echo "SQLエラー[$sql ]<BR>" ; とした方が分かり易いです
この回答への補足
qaz_qwerty_me さん
ご指摘があった箇所訂正してみましたが、無理でした。。。
でも、お答え頂いた事に感謝してます。ありがとうございます。
私自身もがんばってみますが、解決策ご存知の方いましたら、すみませんが、教えていただけないでしょうか?
//訂正後のkensaku.phpです、
<html>
<body>
<?
$nm=$_POST['nm'];
$page_num=$_POST['page_num'];
//データベースに接続
if(!$conn =mysql_connect("","user","pass")) {
echo "接続エラー" ;
exit ;
}
//データベースを選択
if(!mysql_select_db("member",$con)) {
echo "データベース選択エラー" ;
exit ;
}
//LIMITを使ったSELECT文を作成
//ご指摘があった訂正箇所↓↓↓
$TMP=$page_num*10;//訂正箇所
$sql = "select id,name from member " ;
$sql.= "where name like '%$nm% ' order by id " ;
$sql.="limit".$TMP.",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件";
}
//↓↓↓まだここのエラーとeclipseが表示。。
//次の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>
すみません。教えてください。。
No.1
- 回答日時:
まじめにコードを読んでいないので・・・外しているかも知れませんが SQLを使っているならページ制御は Limit句を使うのが簡単で確実&早い? と思います。
これで先頭から3行 select できます
(SQL)... Limit 0, 3;
取り合えず見つけたURL
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アラートでyes noを作りたいです。
-
sortableを使用したデータのUPDATE
-
エクセルVBAについて
-
PHP 10件表示 "前へ" "次へ"
-
WHERE句で一致しない場合を判断...
-
取得データの置き換え方法
-
DBに入力されている値で、セ...
-
syntax errorの原因について
-
php5のコンストラクタをphp4仕...
-
PHP 関数呼び出し後に配列添字...
-
MySQLでデータベースにデータin...
-
実行時エラー3131 FROM 句の構...
-
SQL文が実行できません
-
PHP データの抽出&相関検定の...
-
CSVをダウンロードさせた際、CS...
-
PHP+MySQLでの検索結果の横並び...
-
csvをDBへ読み込んだら、NULLが...
-
php データ削除
-
zendframework
-
MySQL5のデータを、SQL文を使い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで[]の使い方について
-
アラートでyes noを作りたいです。
-
checkboxクリック時、SQLを実行...
-
dbに登録したデータをphpのプル...
-
PHPでMySQLデータを呼び出し、w...
-
PHP・MySQL使用で、年齢制限を...
-
Smartyを用いたコードの書き方...
-
文字化けが解決できません。お...
-
DBで検索結果に該当するデータ...
-
テーブル内の文字によりログイ...
-
PHP+MySQLでの配列のinsert文に...
-
ラジオボタンをループすること...
-
sortableを使用したデータのUPDATE
-
記事のコメント数表示について
-
htmlとphpの分離
-
エクセルVBAについて
-
入れ子のようにしてデータを作...
-
重複したフィールドに関して
-
VBA初心者です。
-
PHPでの検索機能がうまく動きま...
おすすめ情報