パラメータを2個つけたい

このQ&Aのポイント
  • ある住所録があり、インデックスをつけてページング処理もさせたいと思っています。具体的には、「あ」を押すとあ行の人のデータが1~10件表示され、「next」を押すと、「あ」行の11~20件を表示するイメージになります。以下のPHPを作成しましたがうまく動作しません。どうしたらよろしいでしょうか。ご教授ください。宜しくお願い致します。
  • パラメータを2個つけて住所録のインデックスとページング処理を実現したいです。具体的には、「あ」を押すとあ行の人のデータが1~10件表示され、「next」を押すと、「あ」行の11~20件を表示する動作が欲しいです。作成したPHPはうまく動作しません。解決策を教えてください。
  • パラメータを2つ使用して住所録のインデックスとページング処理を実装したいです。例えば、「あ」を押すとあ行の人のデータが1~10件表示され、「next」ボタンを押すと、「あ」行の11~20件のデータが表示されるようにしたいです。しかし、作成したPHPは期待通りに動作していません。どのように修正すれば良いか教えてください。
回答を見る
  • ベストアンサー

パラメータを2個つけたい

ある住所録があり、インデックスをつけてページング処理もさせたいと思っています。 具体的には、「あ」を押すとあ行の人のデータが1~10件表示され、 「next」を押すと、「あ」行の11~20件を表示するイメージになります。 以下のPHPを作成しましたがうまく動作しません。 どうしたらよろしいでしょうか。 ご教授ください。宜しくお願い致します。 ********************************** エラーメッセージ ********************************** Notice: Undefined variable: dtcnt in C:\Program Files\Apache…テスト.php on line 359 359行目が「back」を表示するコードになります↓。 if ($p > 1) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$prev\"> back</a>"; } ****************************** 作成したPHP 環境:PGSQL8.24 PHP5 Apache2.2 ****************************** <a href="テスト.php?x=a">あ</a> <a href="テスト.php?x=ka">か</a> … <a href="テスト.php?x=wa">わ</a> <table> <tr> <th>NO</th> <th>氏名</th> <th>住所</th> </tr> <?php // データベースに接続する $conn = pg_connect("host=サーバ dbname=データベース user=ユーザ password=パスワード") or die("接続エラー"); // 取り出す最大レコード数 $lim = 10; // 表示するページ位置を取得する $p = intval(@$_GET["p"]); if ($p < 1) { $p = 1; } // 表示するデータの位置を取得する $st = ($p - 1) * $lim; // 前のページ/次のページのページ番号を取得する $prev = $p - 1; if ($prev < 1) { $prev = 1; } $next = $p + 1; // データを取り出す if ($_GET['x']=='a') { // あ行 $sql = "select no, name, address from テーブル WHERE (name LIKE N'あ%' OR name LIKE N'い%' OR name LIKE N'う%' OR name LIKE N'え%' OR name LIKE N'お%') ORDER BY name LIMIT $lim OFFSET $st;"; } …(か行~ら行) if ($_GET['x']=='wa') { // わ行 $sql = "select no, name, address from テーブル WHERE (name LIKE N'わ%' OR name LIKE N'を%' OR name LIKE N'ん%') ORDER BY name LIMIT $lim OFFSET $st;"; } // 取り出したデータを表示する for ($i = 0; $i < pg_num_rows($res); $i++) { $row = pg_fetch_array($res, $i, PGSQL_ASSOC); echo "<tr>"; echo "<td>".$row["id"]."</td>"; echo "<td>".cnv_enc($row["name"], $enc_disp, $enc_db)."</td>"; echo "<td>".$row["address"]."</td>"; echo "</tr>"; } echo "</table>"; // 前のページ/次のページへのリンク if ($p > 1) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$prev\"> back</a>"; } if (($next - 1) * $lim < $dtcnt) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$next\"> next</a>"; } // 接続を解除する pg_close($conn); ?> </table> </body> </html>

  • PHP
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • syuuiwsd
  • ベストアンサー率56% (17/30)
回答No.2

#1です。 もとのエラーメッセージによって、dtcntという変数が見つからなかったですよね。 今度dtcntがありますのに、$_GET配列にxという変数がないらしいです。 前のページのリンクに、xをちゃんとつけていますか? よくわからないですが、ご参考になればうれしいです。

smorgas030
質問者

お礼

回答ありがとうございます。 >前のページのリンクに、xをちゃんとつけていますか? 前のページはありません。ここがトップページになります。 また行が抜けていました。 ********************** 抜けていた行 ********************** <a href=テスト.php?x=a>あ</a><br> <a href=テスト.php?x=ka>か</a><br> … <a href=テスト.php?x=wa>わ</a><br> ここで「あ」を押すと、「x」の値をGETできるようにしています。

その他の回答 (1)

  • syuuiwsd
  • ベストアンサー率56% (17/30)
回答No.1

if (($next - 1) * $lim < $dtcnt) dtcntの値は?

smorgas030
質問者

お礼

回答ありがとうございます。 4行抜けておりました。データベースに接続した後に4行入ります。 「next」が表示されるようになりましたが、11~20件が表示されず、また、例えば「か」行が10件以下の場合も「next」が表示されてしまいます。 どうしたらよろしいでしょうか。 ご教授ください。宜しくお願い致します。 ********************************** エラーメッセージ ********************************** Notice: Undefined index: x in C:\Program Files\Apache Software Foundation\Apache…テスト.php on line 290 290行目はデータを取り出すするコードになります↓。 // データを取り出す if ($_GET['x']=='a') { // あ行 $sql = "select no, name, address from テーブル WHERE (name LIKE N'あ%' OR name LIKE N'い%' OR name LIKE N'う%' OR name LIKE N'え%' OR name LIKE N'お%') ORDER BY name LIMIT $lim OFFSET $st;"; } ****************************** 作成したPHP 環境:PGSQL8.24 PHP5 Apache2.2 ****************************** >// データベースに接続する >$conn = pg_connect("host=サーバ dbname=データベース >user=ユーザ password=パスワード") or die("接続エラー"); $sql = "SELECT COUNT(*) AS cnt FROM clip2;"; $res = pg_query($conn, $sql) or die("データ抽出エラー"); $row = pg_fetch_array($res, 0, PGSQL_ASSOC); $dtcnt = $row["cnt"]; >// 取り出す最大レコード数 >$lim = 10;

関連するQ&A

  • PHP+MYSQLで検索画面を作成しています。プルダウンとキーワードを使用していますがうまくいきません。

    住所録を作成し、プルダウンとキーワードで作成しましたがうまくいきません。実行すると最後に記載のエラーがでます。教えてください。フリーワードだけの検索はうまくいきましたが。 ---kensaku.php--- <?php extract($_POST); $dfrom = sprintf("%04d-%02d-%02d",$year1,$mon1,$date1); $dto = sprintf("%04d-%02d-%02d",$year2,$mon2,$date2); if($kai == ''){ }else{ $jouken = "(ocrdate between '$dfrom' and '$dto')"; if ($kai <> "*"){ $jouken = "$jouken and kai like '%$kai%'"; } if ($fuk <> "*"){ $jouken = "$jouken and fuk like '%$fuk%'"; } if ($jic <> "*"){ $jouken = "$jouken and jic like '%$jic%'"; } if ($key1 <> ""){ $jouken = "$jouken and (keyword like '%$key1%' or detail like '%$key1%' or treat like '%$key1%' or remark like '%$key1%')"; if (key2 <> ""){ $jouken = "$jouken and (keyword like '%$key2%' or detail like '%$key2%' or treat like '%$key2%' or remark like '%$key2%')"; if (key3 <> ""){ $jouken = "$jouken and (keyword like '%$key3%' or detail like '%$key3%' or treat like '%$key3%' or remark like '%$key3%')"; } } } mysql_connect('localhost','***','****'); mysql_select_db('****'); $sql = "select * from jyusho where $jouken"; $result = mysql_query($sql); $num = mysql_num_rows($result); if ($num == 0){ echo "該当データがありません<br>"; exit; }else { echo "<table border=\"1\">\n"; echo "<tr>\n"; echo "<th>加入日</th>\n"; echo "<th>加入地域<br></th>\n"; echo "<th>加入県</th>\n"; echo "</tr>\n"; while($row = mysql_fetch_array($result)){ $id = $row["id"]; echo "<tr>"; echo "<td align=\"right\"><a href=\"meisai.php?id=$id\">",$id,"</a>\n"; echo "</td><td>"; echo $row["kai"]; echo "</td><td>"; echo $row["fuk"]; echo "</td><td>"; echo $row["jic"]; echo "</td></tr>"; }(ここまで170行目、次は、/htmlとなっています) ---ここまで--- エラーは、「Parse error: parse error, unexpected $end in c:\(省略)\kensaku.php on line 171」

  • 検索結果を出すためには?(phpとmysql利用で)

    ある画像を押したら、検索結果が出る方法がわかりません。 たとえば、「A」「B」「C」の画像を作成しておき、「A」の画像を押したときにMYSQLで作成したデータベースの中から「A」だけ出す方法がわかりません。(画像からリンクする方法はわかります) 「A」という画像を押すと「akekka.php」を出すように作成したのですが、できません。知恵を貸してください。 <?php $sql= "select * from jyusyo where fuk = '愛媛県'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>\n"; exit; } else { echo "<table border=\"1\">\n"; echo "<tr>\n"; echo "<th>詳細</th>\n"; echo "<th>登録日<br></th>\n"; echo "<th>府県名<br></th>\n"; echo "<th>住所<br></th>\n"; echo "<th>名前</th>\n"; echo "</tr>\n"; while($row = mysql_fetch_array($result)){ $id = $row["id"]; echo "<tr>"; echo "<a href=\"meisai.php?id=$id\">",$id,"</a>\n"; echo "</td><td>"; echo $row["sho"]; echo "</td><td>"; echo $row["day"]; echo "</td><td>"; echo $row["fuk"]; echo "</td><td>"; echo $row["jyu"]; echo "</td><td>"; echo $row["nam"]; echo "</td></tr>"; } echo "</table>\n"; } ?>

  • 動的パラメータ値を渡しURLへ移動したいのですが

    クロネコヤマトのカード決済ページへリンクを張っています。 動的パラメータ値を渡し//カードのURLへ移動したいのですが、下記のようにソース単体では正常に移動します。 <?php //カードのURL define(PHP_CARD, 'https://*********.jp/'); //このスクリプト名 define(PHP_SELF, 'index.php'); <tr><th colspan="2">総合計</th></tr> <tr><td colspan="2" align="right">'.$goukei2.' 円</td></tr> (確認表示部分) echo"<form action=\"".PHP_CARD."\" method=\"post\" target=\"_blank\" accept-charset=\"Shift_JIS\"> <input type=\"hidden\" name=\"settle_price\" value=\"$goukei2\" /> <input type=\"submit\" value=\"お支払手続きへ\" name=\"card\" /></form> "; $card=$_POST["card"]; //お支払手続きへボタンが押された場合 ?> 下記のスクリプトにソースを貼り付けると、お支払手続きへのボタンをクリックしても//このスクリプト名(index.php)へ移動してしまいます。どうかご指導よろしくお願いします。 <?php //このスクリプト名 define(PHP_SELF, 'index.php'); //■お会計 function last($name,$mail,$yno,$ad,$tel,$way,$ps,$dm,$ad2,$time,$title2,$goukei,$goukei2,$dai2,$so){ global $lines,$cmdend; $data = '<table class="m"><tr><th colspan="2">商品情報</th></tr> '.$title2.' <tr><td>送料</td><td>'.$so.' 円</td></tr> <tr><td>手数料</td><td>'.$dai2.' 円</td></tr> <tr><th colspan="2">総合計</th></tr> <tr><td colspan="2" align="right">'.$goukei2.' 円</td></tr> <tr><th colspan="2">お客様情報</th></tr> <tr><td>お名前</td><td>'.$name.'</td></tr> <tr><td>メールアドレス</td><td>'.$mail.'</td></tr> <tr><td>郵便番号</td><td>'.$yno.'</td></tr> <tr><td>お届け先ご住所</td><td>'.$ad.'</td></tr> <tr><td>電話番号</td><td>'.$tel.'</td></tr> <tr><td>お支払い方法</td><td>'.$way.'</td></tr> <tr><td>連絡事項(配達希望日時等)</td><td>'.$ps.'</td></tr> <tr><td>お知らせ</td><td>'.$dm.'</td></tr> <tr><td>ご請求先ご住所</td><td>'.$ad2.'</td></tr> <tr><td>受注日時</td><td>'.$time.'</td></tr>'; if(!$_COOKIE['order']){ echo"<br />空です<br />"; }elseif($cmdend){ echo"<b class=\"stitle\">ご注文有難う御座いました。<br />このページを印刷して保存してください。メールも送信しております。</b>\n"; echo"$data\n"; echo"</td></tr></table>\n"; //カードのURL define(PHP_CARD, 'https://*********.jp/'); echo"<form action=\"".PHP_CARD."\" method=\"post\" target=\"_blank\" accept-charset=\"Shift_JIS\"> <input type=\"hidden\" name=\"TRS_MAP\" value=\"V_W02\" /> <input type=\"hidden\" name=\"trader_code\" value=\"900756001\" /> <input type=\"hidden\" name=\"order_no\" value=\"$time\" /> <input type=\"hidden\" name=\"goods_name\" value=\"$title2\" /> <input type=\"hidden\" name=\"settle_price\" value=\"$goukei2\" /> <input type=\"hidden\" name=\"buyer_name_kanji\" value=\"$name\" /> <input type=\"hidden\" name=\"buyer_tel\" value=\"$tel\" /> <input type=\"hidden\" name=\"buyer_email\" value=\"$mail\" /> <CENTER><FONT COLOR=\"#FF00FF\" SIZE=\"-2\">クレジットカードでお支払いされるお客様は<BR> 下記ボタンを押して手続きを行ってください。</FONT><BR> <BR><input type=\"submit\" value=\"お支払手続きへ\" name=\"card\" /></form> "; $card=$_POST["card"]; //お支払手続きへボタンが押された場合 echo"<br /><a href=\"".PHP_SELF."?\">トップへ戻る</a>\n"; }else{ echo"<b class=\"stitle\">お会計確認(ご確認後注文確定ボタンを押してください)</b><br />\n"; echo"$data\n"; echo"<tr><th colspan=\"2\"> </th>\n"; echo"<tr><td colspan=\"2\" align=\"center\"><a href=\"".PHP_SELF."?mode=reji\">戻る</a> \n"; echo"<input type=\"hidden\" name=\"cmdend\" value=\"cmdend\" />\n"; echo"<input type=\"submit\" value=\"注文確定\" name=\"cmdend\" onclick=\"DisableButton(this);\" /></td>"; echo"</td></tr></table>"; } } ?>

    • ベストアンサー
    • PHP
  • 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 ';' というエラーが出て自分なりにバグを消しているのですがまだエラーが消えずに困っています

    • ベストアンサー
    • MySQL
  • php_selfで複数の変数をパラメタとしたいとき

    php4.3.5にてdbデータをページ分けして表示する簡単なプログラムで、次ページへのリンクにページ番号をパラメタとして持たせていますが、もう1つの変数をパラメタに追加したいのですが私の追加方法では変数値が帰って来ません。 ~dbリード~dbデータの表示~ // 前のページ/次のページへのリンク if ($p > 1) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$prev\"> 前のページ</a>"; } if (($next - 1) * $lim < $dtcnt) { echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$next\">←ココに?age=$ageを追加したい。 次のページ</a>"; } 単なる書式の問題なのかも知れませんが、オンラインマニュアル・MLの検索でも分かりませんでした。 ご教授よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpphp,mysqlページングについて

    1つのphpファイルで作成を考えています。検索後(if($subsub){}を消せば)でなければページング機能は、可能です。1ページ目は、正常に表示しますが、2ページ目以降表示できません。データ保持ができません。同じ類の質問は、たくさん出てると思いますが・・・初心者ということもあり、ロジックがまだわかっていないのでできれば記述で教えていただければ幸いです。よろしくお願いします。 検索項目は、1項目で省略していますが、本来4~5項目で考えています。 <?php // データベースに接続する 省略 $test = $_POST[test]; echo' <form method="POST" action="".$_SERVER["PHP_SELF"].""> <tr> <input type="text" name="test"> <td><input type="submit" value="検索" name="subsub"></td> </form> '; //検索ボタンを押したら表示 if((isset($_POST['subsub']))or(isset($_GET['p'] ))){ //ページング処理 //総レコード数を取得する //条件がある場合は、where 条件式を書く $sql = "SELECT COUNT(*) AS reccnt FROM faq;"; $res = mysql_query($sql, $conn) or die ("データ抽出エラー"); $row = mysql_fetch_array($res, MYSQL_ASSOC); $reccnt = $row["reccnt"]; //取り出す最大レコード数 $lim = 3; //最初と最後のページ番号を定義 $first = 1; $last = ceil($reccnt / $lim); //表示するページ位置を取得 $p = intval($_GET['p']); if ($p < $first) { $p = $first; } elseif ($p > $last) { $p = $last; } //表示するレコード位置を取得 $st = ($p - 1) * $lim; //前後のページ移動数と表示数 $page = 3; //前後$pageページ移動した際のページ番号を取得 $prev = $p - $page; $next = $p + $page; //前後1ページ移動した際のページ番号を取得 $prev1 = $p - 1; $next1 = $p + 1; //SELECTコマンドを実行して、$stレコード目から$lim件の各データを取得し、大きい順に並べる $sql = "SELECT test FROM testtest WHERE test like '$test' ORDER BY id DESC LIMIT $st, $lim;"; $res = mysql_query($sql, $conn) or die ("データ抽出エラー"); echo' <table border="1"> <tr> <td>ID</td> <td>テスト</td> </tr> '; //取得したデータを一件ずつ表示 while($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo' <tr> <td>'.$row["id"].'</td> <td>'.$row["test"].'</td> </tr> '; } echo '</table>'; //ページ移動リンクの組み立て //1ページ前のページ if ($p > 1) { echo "<font size=\"1\"><a href=\"$_SERVER[PHP_SELF]?p=$prev1\"><</a></font>&nbsp"; } //各ページ番号への移動リンクを表示 for ($cnt = $p - $page; $cnt <= $last; $cnt++) { if ($cnt < 1) { $cnt = 1; } $pageno = "<font size=\"1\"><a href=\"$_SERVER[PHP_SELF]?p=$cnt\">$cnt</a></font>&nbsp"; //表示番号を指定数に区切る //ページ番号と現在のページが同一の場合は //リンク無しにする if ($cnt <= $p + $page) { if ($cnt == $p) { $pageno = "<font size=\"1\">$p</font>&nbsp"; } echo $pageno; } } //1ページ後のページ if (($next1 - 1) * $lim < $reccnt) { echo "<font size=\"1\"><a href=\"$_SERVER[PHP_SELF]?p=$next1\">></a></font>&nbsp"; } echo "<br>\n"; //最初のページへ移動 if ($p > 1) { echo "<font size=\"1\"><a href=\"$_SERVER[PHP_SELF]?p=$first\">最初</a></font>&nbsp"; } //前の$pageページへ移動 if ($p > $page) { // << を $page"."ページ戻る にする事もできる echo "<font size=\"1\"><a href=\"$_SERVER[PHP_SELF]?p=$prev\"><<</a></font>&nbsp"; } //次の$pageページへ移動 if (($next - 1) * $lim < $reccnt) { // >> を $page"."ページ進む にする事もできる echo "<font size=\"1\"><a href=\"$_SERVER[PHP_SELF]?p=$next\">>></a></font>&nbsp"; } //最後のページへ移動 if ($p < $last) { echo "<font size=\"1\"><a href=\"$_SERVER[PHP_SELF]?p=$last\">最後</a></font>&nbsp"; } } ?>

    • ベストアンサー
    • PHP
  • mysql sqlエラー

    先ほども質問したのですが再度質問させていただきます 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>

    • ベストアンサー
    • MySQL
  • Ajaxとページ分割について

    下記のようなスクリプトを作成しました。PEARのPagerによって取り込んだdataをページごとに分割して表示する というものです。 問題点は、最初のページを表示させるのは Ajaxによって実行されていますが、サイト上の「次のページ」をクリックしたときにAjaxから外れてしまう。 サイト上でクリックしてページを切り換えるときにも、Ajaxによって行いたいのですが、 どのような スクリプトにすればいいのか、ヒントなりを教えていただければ助かります。 ■p01.htmlファイル ----------------------- <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script type="text/javascript" src="prototype-1.6.0.2.js" ></script> <script type="text/javascript" src="p01.js" ></script> </head> <body> <p></p> <form name="am01">    name:<input type="text" name="data01">    age :<input type="hidden" name="page_num" value="0">    <input type="button" onClick="ajaxFunction01();" name="exec" value="aaa"/> </form> <div id="result01"></div> </body> </html> ■p01.jsファイル ------------------------- function ajaxFunction01(){ var ajax = new Ajax.Request("p01.php?data01=" + encodeURI(document.am01.data01.value), {method: "GET", onSuccess: gotData}); function gotData(xmlhttp) { document.getElementById("result01").innerHTML = xmlhttp.responseText; } } ■p01.phpファイル -------------------------- <?php require_once("MDB2.php"); $db_type = "mysql"; $sv = "localhost"; $db_name = "phplesson"; $user = "dbuster"; $pass_w = "pass"; $table = "address_t"; $lim = 3; $pg = 0 + $_GET['pg'];//ページ取得の引数 $thispg = 'p01.php'; //サイトのaddress $dsn = "$db_type://$user:$pass_w@$sv/$db_name"; $mdb2 =& MDB2::factory($dsn); if (PEAR::isError($mdb2)){ die($mdb2->getMessage());//"接続エラー" } $res =& $mdb2->query('SELECT * FROM '.$table); if (PEAR::isError($res)){ die($res ->getMessage());//"接続エラー" } if ($mdb2->getOption('result_buffering')) { $dtcnt = $res->numRows();//テーブルに記録された行数 } else { echo '"result_buffering" が無効で行数が取得出来ない'; } $result_types = true ; $mdb2->loadModule('Extended'); $mdb2->setLimit($lim, ($pg * $lim)); $res = $mdb2 -> extended-> autoExecute($table,null,MDB2_AUTOQUERY_SELECT,false,null,true,$result_types); if (PEAR::isError($res)){ die($res->getMessage());//"接続エラー" } if ($dtcnt > (($pg+1) * $lim)){ $nxt = "<a href=\"" .$thispg. "?pg=" .($pg+1). "\">次の" .$lim. "件</a>"; } else { $nxt = "このページが最終"; } if ($pg > 0){ $befr = "<a href=\"" .$thispg. "?pg=" .($pg-1). "\">前の" .$lim. "件</a>"; } else { $befr = "このページが最初"; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title></title> </head> <body> <p> <?php echo $befr ?> <?php echo $nxt ?> </p> <table border="1"> <tr> <td>number</td><td>name</td><td>birthday</td><td>address</td> </tr> <?php while ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)){ echo "<tr>"; echo "<td>" .$row["number"]. "</td>"; echo "<td>" .$row["name"]. "</td>"; echo "<td>" .$row["birthday"]. "</td>"; echo "<td>" .$row["address"]. "</td>"; echo "</tr>"; } ?> </table> <?php //切断 $mdb2 -> disconnect(); ?> </body> </html>

    • 締切済み
    • PHP
  • phpからdbへアクセスし、レコードを削除したい

    mysql・php初心者です。 現在、mysqlを使ってデータベースの構築をしています。 レコードの登録、検索に関しては出来たのですが、 何故かレコードの修正と削除が出来ません。 教えてください。 プライマリーキーはshop_id($shop_id)で、任意で数字を付けれるようにしてあります。 登録したデータベース側の表示は extract($_POST); $db = mysql_connect("localhost","********","********") or error_func(); mysql_select_db("******") or error_func(); mysql_query("set names utf8"); $result = mysql_query("select * from mobile_shop_entry where shop_name = '$shop_name'"); echo "<h3 class='message'>" . $shop_name . "の店舗情報を表示</h3>\n"; while($row = mysql_fetch_array($result)){ echo "<table id='table_02'><tr><th colspan='2' align='left' >" . $row['shop_name'] . "</th></tr>\n"; echo "<tr><th>会社名</th><td>" . $row['shop_name'] . "</td></tr>\n"; echo "<tr><th>住所</th><td>" . $row['shop_area'] . $row['shop_address'] . "</td></tr>\n"; echo "<tr><th>電話番号</th><td>" . $row['shop_tel'] . "</td></tr>\n"; echo "<tr><th>E-mail</th><td>" . $row['shop_mail'] . "</td></tr>\n"; echo "<tr><th>営業時間</th><td>" . $row['shop_time_am'] . "~" . $row['shop_time_pm'] . "</td></tr>\n"; echo "<tr><th>定休日</th><td>" . $row['shop_holiday'] . "</td></tr>\n"; echo "<tr><th>ID</th><td>" . $row['shop_id'] . "</td></tr>\n"; echo "<tr><td colspan='2' align='right'>\n"; echo "<img src='../images/edit-page-blue.gif'> <a href='shop_syuusei.php?shop_id="; echo $row['shop_id']; echo "'>ショップ情報を修正</a>\n"; echo " <img src='../images/delete-page-red.gif'> <a href='shop_sakujyo.php?shop_id="; echo $row['shop_id']; echo "'>ショップ情報を削除</a>\n"; echo " <img src='../images/edit-yellow.gif'> <a href='car_entry.php?car_id=\n"; echo $row['shop_id']; echo "'>在庫情報を登録</a></td></tr>\n"; } echo "</table>\n"; mysql_close($db) exit(); } ?> と記述しました。 このレコードを削除するには、上記のリンク部分 <a href='shop_sakujyo.php?shop_id="; echo $row['shop_id']; から、shop_sakujyo.phpという名前のファイルに <?php extract($_POST); extract($_GET); mysql_connect("localhost","*****","*****"); mysql_select_db("*******"); mysql_query("set names utf8"); //情報を削除 if($kakunin=="確認"){ $sql = "delete from mobile_shop_entry where shop_id = $shop_id "; mysql_query($sql); echo "<h1 class='message_red'>レコードの削除が完了しました。</h1>\n"; exit; } ?> 表示は削除が完了しました。と表示されるのですが、実際のデータは削除されていません。 どこが間違っているのかご存じのかたはいらっしゃいますでしょうか。。。 phpは5.0を使っています。

    • ベストアンサー
    • MySQL
  • 検索機能

    mysqlで検索フォームを作成しています 入力してデータに該当したら検索結果が出るのですが 該当者がいないときはテーブルの表のみ出力してしまう 該当者なしと入力フォーム側に表示したいです また ''''''を入力するとSQLになるのですが mysql_real_escapeを使えば出なくなります どうしたらいいですか <html> <body> <?php //データベースに接続 if (!$con = mysql_connect("localhost", "root", "admin")) { echo "接続エラー" ; exit ; } //データベースを選択 if (!mysql_select_db("db_test", $con)) { echo "データベース選択エラー" ; exit ; } //フォームで送られてきた条件を元にSELECT文を作成 $sql = "select * from tbl_test where (氏名 LIKE '%{$_GET['name']}%') or (住所 LIKE '%{$_GET['name']}%')"; //SELECT文を実行 if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; }else{ } //検索結果表示 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>"; if ($_GET) { // データがGETされていたら $event = isset($_GET['event']) ? $_GET['event'] : ''; // 取得 } } echo "</table>" ; //結果セットの開放 mysql_free_result ($res) ; //データベースから切断 mysql_close($con) ; ?> </body> </html>

    • ベストアンサー
    • MySQL

専門家に質問してみよう