• 締切済み

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
  • 回答数1
  • ありがとう数2

みんなの回答

回答No.1

「なぜ外れてしまうか」の原因は理解していますか? ちなみに↓ $nxt = "<a href=\"" .$thispg. "?pg=" .($pg+1). "\">次の" .$lim. "件</a>"; ここでページ遷移が発生するからです ここではページ遷移を発生させず、onclickで次のデータを取得して、 ページを動的に書き換える必要があります jqueryあたりを使ってDOM制御ですね

tonbeisan
質問者

お礼

ありがとうございます。 なるほど。 「次のベージ」をclickしたときに、 ページを遷移させることを前提にして phpからのデータをどう返すかということのみを考えていました。 ページの遷移を発生させないというところに ポイントがあるんですね。 これは、大きなヒントになりました。ありがとうございます。

関連するQ&A

  • ページ間の値の受け渡しについて

    緊急でPHPを用いて開発しなければならず、値の受渡し方法が調べても 結果がうまく出来ないために教えて下さい。 説明がうまくできないので、ソースの一部を下記に記載しております。 【keikaku.php】 <?php $link = DB接続 $query = "SELECT (1) , (2) , (3) FROM KEIKAKU WHERE 営業所= '東京'"; $res_result = mysql_query($query,$link); echo ("<form action='keikaku_input.php' method='POST'>"); while($row = mysql_fetch_array($res_result)){  echo ("<table border=1>");  echo ("<tr>");  echo ("<td><input type='radio' name='name' value=''></td>");  echo ("<td>");  echo $row['(1)'];  echo ("</td><td>");  echo $row['(2)'];  echo ("</td><td>");  echo $row['(3)'];  echo ("</td>");  echo ("</tr>"); } echo ("<input type='submit' value='次へ'>"); echo ("</form>"); ?> というSQLで一覧を表示させて、対象行のラジオボタンが選択されると (1)と(2)の値を使い、【keikaku_input.php】で更に別のSQLを実行後に 結果を表示させる事を行ないたいのです。 【keikaku.php】→【keikaku_input.php】へ(1)と(2)の値を渡したい場合 はどのようにすれば良いかご教授願えませんでしょうか?

    • ベストアンサー
    • PHP
  • mysql>PHPにデータ表示、10件ごとにページ分割

    はじめまして、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 "&lt 前の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> すみませんが、ご存知の方いましたら、よろしくお願いいたします。

    • ベストアンサー
    • 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
  • jQueryでajax

    ajax(jQuery使用)を使った以下のサンプルは、 セレクトボックスを選択すると、ボタンを表示するのですが、 そのボタンをクリックしても、アラート(This is success!)が表示されません。 ajaxで吐き出した<button>ボタン</button>のボタンのクリックイベントが 検知しないような感じですが、いったいどこが間違っているのかわかりません。 どなたか、ご教授いただけると助かります。 htmlソース ------------------------------------------- <meta http-equiv="content-script-Type" content="text/javascript" /> <meta http-equiv="content-style-Type" content="text/css" /> <link rel="stylesheet" href="./photo.css" media="all" /> <title> テスト</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $("button").click(function() { alert("Test is success!"); }); $(".first").change(function() { var param = ''; $.ajax ({ type: "POST", url: "ajax.php", data: param, cache: false, success: function(res) { $("#result").html(res); } }); }); }); </script> </head> <body> <select name="first" class="first" id="first"> <option value="1">項目1</option> <option value="2">項目2</option> </select> <p>結果:</p> <div id="result" style="width:808px;"></div> </body> </html> phpソース ---------------------------------------- <?php echo '<button>ボタン</button>'; ?>

    • ベストアンサー
    • AJAX
  • パラメータを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
  • PHPとMysqlのページ分割表示について

    以前こちらで質問させて頂きまして htmlの検索フォームから入力した情報をデータベースから引っ張ってきて 表示するまでは出来たのですが、表示制限を10個にして、次のページ、前のページと移動させるようなシステムにしたいのですが、うまくいきません(エラーが出てしまいます) どうか、お力をお貸し願えないでしょうか。 search.html <html> <head><title>検索</title></head> <body> <form action="/search/"method="post"> /*page_numを入れた*/ <input type="hidden" name="page_num" value="0"> <li>会社名</li> <li><input type="text"name="name"></li> <li>電話番号</li> <input type="text"name="phone" maxlength="11"> <input type="submit" name="submit" value="検索"> </body> </html> index.php(データベースから情報を引っ張り出す) <?php $host="localhost"; if(!$conn=mysql_connect($host,"usr","passwd")){ die("データベース認証エラー.<br />"); } mysql_select_db("usr",$conn); $condition=""; if(isset($_POST["name"])&&($_POST["name"]!="")){ $name=mysql_real_escape_string($_POST["name"]); $name=str_replace("%","\%",$name); $condition="WHERE name LIKE \"%".$name."%\""; } if(isset($_POST["phone"])&&($_POST['phone']!="")){ $phone=mysql_real_escape_string($_POST["phone"]); $phone=str_replace("%","\%",$phone); if($condition==""){ $condition="WHERE phone LIKE \"%".$phone."%\""; }else{ $condition.="AND phone LIKE \"%".$phone."%\""; } } $tmp=$page_num*10; $sql="SELECT * FROM table".$condition."ORDER BY id limit".$tmp.",10"; while($row=mysql_fetch_array($res)){ print("<table border=\"1\">"); print("<tr><td>会社名</td><td>電話番号</td></tr>"); print("<tr>"); print("<td>".$row['name']."</td>"); print("<td>".$row['phone']."</td>"); print("</tr>"); print("</table>"); } $cnt=$row[0]; //ページ表示 if(!$cnt>10){ echo ceil($cnt/10), "ページの中の",$page_num+1,"ページ目を表示<br>"; } //前の10件 if ($page_num!=0){ echo "<a href=index.php?name=",$name,".$page_num -1.">"; echo "&lt</a>; echo "前の10件"; } //次の10件 if (($page_num+1)*10<$cnt){ echo "<a href=index.php?name=",$name,".$page_num +1.">"; echo "次の10件"; echo "&g</a>t"; } mysql_free_result($res); //データベースから切断 mysql_close($conn); ?> ちなみにエラーが出ている行はここの //前の10件 if ($page_num!=0){ echo "<a href=index.php?name=",$name,".$page_num -1.">"; echo "&lt</a>; echo "前の10件"; } >>echo "&lt</a>; この部分がエラーになっています。

    • ベストアンサー
    • PHP
  • データーベースをフォームから入力し更新

    データーベースをフォームから入力し更新 登録済のデーターベースをフォームから入力し更新したいのですが、どうしてもうまくいきません。 http://park18.wakwak.com/~little-box/Dreamweaver/sql010.htm のサイトを参考にしているのですがitiran.phpのところからつまづいています。 // 検索した結果を全部表示 echo "<table border=1>"; echo "<tr><td>id</td><td>name</td></tr>"; while($row=mysql_fetch_array($res)){    echo "<tr>";    echo "<td>". $row["name"] . "</td>";    echo "<td>". $row["age"] . "</td>";    echo "<form action=koushin_input.php method=post>";    echo "<input type=hidden name=id value=" . $row["id"] . ">";    echo "<td><input type=submit value=更新></td>";    echo "</form>";    echo "<form action=sakujo.php method=post>";    echo "<input type=hidden name=id value=" . $row["id"] . ">";    echo "<td><input type=submit value=削除></td>";    echo "</form>";    echo "</tr>"; } echo "</table>"; の辺りがおかしいのではと思っているのですが… アドバイスください。また、他に参考になるサイトがありましたらぜひ教えてください。

    • ベストアンサー
    • PHP
  • 動的サイトを作ってみたのですが、うまくデータベースからデータが取得できません。。。

    よろしくお願いいたします。 趣味でゲームソフトのデータベースを作っています。 MYSQLを使って動的にデータを表示させるサイトです。 http://www.game-minzoku.jp/meisai.php?titleid=5362 例えばこのようにパラメータをつけてページを展開しているのですが、 この『?title=****』の数字をアドレスバー上で変更してほかのページを表示させようとすると、 該当データがありません。 がと出てしまいます。 これがようやくGoogleにインデックスされ始めてきましたが、自然検索から入ってもこのようなことが起こってしまって困っています。 自分で調べてはみたものの、独学で進めているため、どうやって解決したらよいか分からず困っています。 どなたかお力添えいただけますと幸いです。 問題のページのソースはこちらです。(cssなどの不要と思われる個所はけしてありますが、もし足りない箇所あればおっしゃっていただけますと幸いです) ================================================================ <?php extract($_GET); mysql_connect('****','****','****'); mysql_select_db('****'); mysql_query("set character_set_client=utf8"); mysql_query("set character_set_connection=utf8"); mysql_query("set character_set_results=utf8"); $sql = "select * from game,genre,hanbai,kaihatsu,hard where game.genreid=genre.genreid and game.hardid=hard.hardid and game.hanbaiid=hanbai.hanbaiid and game.kaihatsuid=kaihatsu.kaihatsuid and game.titleid =" . $titleid; $result = mysql_query($sql); $rows = mysql_num_rows($result); $title_name_sql = "select title from game where titleid =" . $titleid ; $res = mysql_query($title_name_sql); $title_name = mysql_result($res,0); echo "<title>"; echo "$title_name | ゲーム民族</title>"; echo "</head><body>"; echo "<a href=index.php>ゲーム民族</a>"; echo "<h1><font size=2>ゲーム民族は"; echo "$title_name"; echo "の詳細を網羅したデータベースのサイトです</font></h1>"; echo "<p><a href=index.php>TOP</a> > $title_name</p>"; echo $title_name の基本情報; if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<a href=",$row["url"],">"; echo "<img src=",$row["img"]," alt=",$row["title"],">"; echo "</a>"; echo "<table border=1 height=40 cellpadding=2 cellspacing=2 width=800>"; echo "<tr><td>タイトル</td><td>"; echo $row["title"]; echo "</td></tr>"; echo "<tr><td>発売元</td><td>"; echo "<p><a href=\"maker.php?hanbaiid=",$row["hanbaiid"],"\">", $row["hanbai"] ,"</a></p>\n"; echo "</td></tr>"; echo "<tr><td>開発元</td><td>"; echo "<p><a href=\"developer.php?kaihatsuid=",$row["kaihatsuid"],"\">", $row["kaihatsu"] ,"</a></p>\n"; echo "</td></tr>"; echo "<tr><td>機種</td><td>"; echo $row["hard"]; echo "</td></tr>"; echo "<tr><td>発売日</td><td>"; echo $row["hatsubai"]; echo "</td></tr>"; echo "<tr><td>ジャンル</td><td>"; echo "<p><a href=\"genre.php?genreid=",$row["genreid"],"\">", $row["genre"] ,"</a></p>\n"; echo "</td></tr>"; $sql2= "select * from game,title_creater,creater,roll where game.titleid=title_creater.titleid and title_creater.createrid=creater.createrid and title_creater.rollid=roll.rollid and game.titleid = " . $row["titleid"]; $result2 = mysql_query($sql2); $rows2 = mysql_num_rows($result2); while($row2 = mysql_fetch_array($result2)){ echo "<tr><td>クリエーター</td><td>"; echo $row2["creater"]; echo $row2["roll"]; echo "</td></tr>"; } } } ?> </body></html> ================================================================ 本当に見にくい意味不明のソースで申し訳ありませんが、よろしくお願いいたします!

    • ベストアンサー
    • PHP
  • PHPでの検索機能実装について(フレームワーク無し

    PHP初心者です。 現在、PHPにてDBからアクセスし、DBの検索を実装するプログラムを作成しております。 参考HPを元に下記のプログラムを作成したのですが、参考HPのコードではフレームワークが組み込まれており、 フレームワークを組んでいない私のコードではエラーが発生してしまいます。 エラー内容: Warning: mysql_fetch_array() expects parameter 1 to be resource, (省略) line63 Warning: mysql_free_result() expects parameter 1 to be resource, (省略) line74 参考HPでは、search.phpの17行目'$search'が宣言されてない状態で記載されて おりましたので、search.phpの最初にて宣言しました($searchでは検索キーを格納して おります)。 恐れいりますが、ご教示願います。 input.php 検索ワードを送信 <form action="search.php" method="POST"> <input type="text" name="searchkey"> <input type="submit" name="searchid" value="検索"> </form> search.php <?php $search = htmlspecialchars($_POST['searchkey']); //データベースに接続 if (!$con = mysql_connect("ホスト名", "user名", "パスワード")) { echo "接続エラー"; exit ; } //データベースを選択 if (!mysql_select_db("db名", $con)) { echo "データベース選択エラー"; exit ; } //フォームで送られてきた条件を元にSELECT文を作成 $sql = "SELECT * FROM listwhere name LIKE '% . $search . %'"; //SELECT文を実行 if ($res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } //検索結果<br> echo "<table border=1>" ; while($row = mysql_fetch_array($res)){ //エラー echo "<tr>" ; echo "<td>" . $row["id"] . "</td>" ; echo "<td>" . $row["name"] . "</td>" ; echo "<td>" . $row["date"] . "</td>" ; echo "<td>" . $row["registant"] . "</td>" ; echo "<td>" . $row["comment"] . "</td>" ; echo "</tr>" ; } echo "</table>" ; //結果セットの開放 mysql_free_result($res); //エラー //データベースから切断 mysql_close($con); ?>

    • ベストアンサー
    • PHP
  • AjaxでMySQLへのデータの追加と表示をしたい

    htmlで、jQueryでMySQLのテーブルmessage_tableのデータid(int auto_increment primary)、time(datetime)、message(varchar(1000))を<tr><td>id</td><td>time</td><td>message</td>というような形で、<table id="show_table"><table>の中で全行表示し、inputのtextから新たにmessageを送信したら、それがリロードなしに同じテーブルに追加されて、表示されるというAjaxを使ったプログラムをhtmlとPHPファイルで作成したいのですが、どのようなソースを書けばよろしいでしょうか。 PHP側はMySQLのデータの取得と、htmlから送られてきたデータの追加を行い、JSON形式でhtmlに投げるという風にしたいと考えています。 データの表示と送信をするhtmlと、データを受け取り、MySQLのテーブルに追加し、htmlに返すPHPのソースは、以下のような形を考えています。 [message.html] <!DOCTYPE html> <head> <meta charset="UTF-8"> <title>message.php</title> </head> <body> <p> <input type="text" id="messgage"> <input type="button" id="add" value="add"> </p> <table id="show_table"></table> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script type="text/javascript"> $(function(){ $('#add').click(function(){ $.post('post.php',{ }, function(引数){ //処理 }) }); }); </script> </body> </html> [post.php] <?php try{ $pdo = new PDO('mysql:dbname=test; host=localhost; charset=utf8', 'root'); }catch(PDOException $e){ die($e->getMessage()); } $st = $pdo->query("SELECT * FROM message_table"); // データの取得 header('Content-Type: application/json; charset=utf-8'); echo json_encode($result);

    • ベストアンサー
    • AJAX