はじめまして、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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
BASIC認証のフォームをデザイン...
-
awsにApacheとPHPを入れて、何...
-
返信機能のツリー構造の深さを...
-
phpでcookieがうまく保存されない
-
「基礎からのMySQL 第3版 Kindl...
-
SQLとPHPの連結方法がわからな...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
PHPについて。
-
phpのheader("Location:#pos")...
-
PHPからCSVをアップロード後、m...
-
[php初心者]サイトを見てデータ...
-
phpに関わる所での、form actio...
-
ゆゆにゃ。
-
【初心者】XAMPPのapacheの(恐...
-
プログラミング言語で、使える...
-
こちらはただの直列処理ですか?
-
PHPでこのコード自体に意味は無...
-
PHPとHTML+Xamppの掲示板で画像...
-
phpでPEAR::DBを使っているので...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アラートでyes noを作りたいです。
-
dbに登録したデータをphpのプル...
-
PHPで[]の使い方について
-
checkboxクリック時、SQLを実行...
-
php ログインフォーム作成
-
php5のコンストラクタをphp4仕...
-
PHPでMySQLデータを呼び出し、w...
-
phpでmysqlを使ってデータベー...
-
checkboxで複数選択して,OR...
-
SELECT結果から動的にコンボボ...
-
mysqlから取得した配列をカンマ...
-
DBで検索結果に該当するデータ...
-
sortable ギブアップです…助け...
-
ラジオボタンをループすること...
-
[php]mysqlデータ配列取得について
-
エクセルVBAについて
-
チェックボックスによる複数の...
-
文字化けが解決できません。お...
-
PHP、SQLite3のデーターでログ...
-
PHPとSmartyを使い、データベー...
おすすめ情報