PHPでMySQLデータを呼び出し、ループする方法

このQ&Aのポイント
  • PHPでMySQLデータを呼び出し、whileループの中で別テーブルのデータをループする方法について説明します。
  • 作成中のプログラムでは、userテーブルのデータを表示し、同時にフォームとしてデータの変更も可能です。
  • しかし、userテーブルの中にある別のテーブルのデータをリストボックスで表示させることができていません。どうすれば解決できるでしょうか?
回答を見る
  • ベストアンサー

PHPでMySQLデータを呼び出し、whileループの中で別テーブルのデータをループするには

MySQLからuserというテーブルのデータを呼び出し、表示すると同時にフォームとしてデータの変更もできるプログラムを作成しています。 その項目の中に別のusergrというテーブルのデータをリストボックスで表示させたいのですが、うまくいきません。 現状では下記のスクリプトでuserの1番のデータだけが表示されている状態です。(リストボックスも問題なく表示はされていますが…) まわりに聞ける人もいず、本などを見よう見まねで作成したため、根本的に誤ってるところがあるかと思いますが、どうかアドバイス頂けませんでしょうか。 $sql = "SELECT * FROM user"; $mysql->query($sql); while($row = $mysql->fetch()){ $no = $row["no"]; $name = $row["name"]; $division = $row["division"]; $email = $row["email"]; $tel = $row["tel"]; $group = $row["group"]; echo <<<EOT <td align="center">$no</td> <td align="center"><input type="text" name="name[$no]" value="$name" size="10"></td> <td align="center"><input type="text" name="division[$no]" value="$division" size="20"></td> <td align="center"><input type="text" name="email[$no]" value="$email" size="30"></td> <td align="center"><input type="text" name="tel[$no]" value="$tel" size="10"></td> <td align="center"> <select name="group[$no]"> EOT; $sql = "SELECT * FROM usergr LEFT JOIN user ON usergr.grno=user.group"; $mysql->query($sql); while($row = $mysql->fetch()){ $group = $row["group"]; $grno = $row["grno"]; $grname = $row["grname"]; if($row["grno"]==$group){ echo "<option value=\"{$row['grno']}\" selected=\"selected\">{$row['grname']}</option>"; } else { echo "<option value=\"{$row['grno']}\">{$row['grname']}</option>"; } } echo <<<EOT </select> </td> <td align="center"><input type="submit" name="submit_upd[$no]" value="変更"> <input type="submit" name="submit_del[$no]" value="削除"></td> </tr> EOT; }

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

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

  • ベストアンサー
  • tols
  • ベストアンサー率46% (7/15)
回答No.1

$mysql->query($sql); ってことは、MySQLを操作するクラスがあるって事でしょうか? (クラスの実装がわからないので、できればクラスのソースコード、またはクラス仕様をもらえたら幸いです。) その場合、whileループ内の $mysql->query($sql)とやっている部分は、別のインスタンスで実行してやる必要があります。 1個目だけ表示される理由は、同じインスタンスを利用して その内部のプロパティを書き換えてしまっているからです。 (書き換えてしまっている部分をソース内に記述しておきました。) たとえば次のような感じになります↓ // この辺りで $mysqlがインスタンス化されているはず。 // たとえば次のように... // $mysql = new CMySQL(); // テーブル本体を作るためのインスタンス $mysql = new CMySQL(); $sql = "SELECT * FROM user"; $mysql->query($sql); // リストボックスを作るためのインスタンス $mysql2 = new CMySQL(); $sql = "SELECT * FROM usergr LEFT JOIN user ON usergr.grno=user.group"; $mysql2->query($sql); while($row = $mysql->fetch()){   $no = $row["no"];   $name = $row["name"];   $division = $row["division"];   $email = $row["email"];   $tel = $row["tel"];   $group = $row["group"]; echo <<<EOT   <td align="center">$no</td>   <td align="center"><input type="text" name="name[$no]" value="$name" size="10"></td>   <td align="center"><input type="text" name="division[$no]" value="$division" size="20"></td>   <td align="center"><input type="text" name="email[$no]" value="$email" size="30"></td>   <td align="center"><input type="text" name="tel[$no]" value="$tel" size="10"></td>   <td align="center">   <select name="group[$no]"> EOT; /* ---------------- 上で記述したため不要 $sql = "SELECT * FROM usergr LEFT JOIN user ON usergr.grno=user.group"; ↓ これが書き換えてしまっています。 $mysql->query($sql); ---------------- */ while($row = $mysql2->fetch()){   $group = $row["group"];   $grno = $row["grno"];   $grname = $row["grname"];   if($row["grno"]==$group){     echo "<option value=\"{$row['grno']}\" selected=\"selected\">{$row['grname']}</option>";   } else {     echo "<option value=\"{$row['grno']}\">{$row['grname']}</option>";   } } echo <<<EOT   </select>   </td>   <td align="center"><input type="submit" name="submit_upd[$no]" value="変更">   <input type="submit" name="submit_del[$no]" value="削除"></td>   </tr> EOT; } わかりにくい点があれば、何なりと~

quakeandb
質問者

お礼

回答ありがとうございます!! 恥ずかしながら本を丸写ししていたため $mysql->query($sql);が一般的な処理なのだと思ってました… リストボックス用に新たにクラス?を作成しないといけないんですね。 現在は補足欄のようになっていますが 教えて頂いた「リストボックスを作るためのインスタンス」を追加すれば大丈夫でしょうか? さっそく試してみます。

quakeandb
質問者

補足

ありがとうございます! 別ファイルに、クラスの記述がありました。 class MySQL {   // DB接続(略) // SQLクエリの処理 function query($sql){ $this->m_Rows = mysql_query($sql, $this->m_con); if(!$this->m_Rows) { die("MySQLでエラーが発生しました <br><b>{$sql}</b><br>" .mysql_errno().":".mysql_error()); } return $this->m_Rows; } // 検索結果をfetch function fetch() { return mysql_fetch_array($this->m_Rows); } // 変更された行の数を得る //直近の操作で変更された行数の取得 function affected_rows() { return mysql_affected_rows(); } // 列数 //結果の列数(フィールド数)の取得 function cols() { return mysql_num_fields($this->m_Rows); } // 行数 //結果の行数を取得 function rows() { return mysql_num_rows($this->m_Rows); } // 検索結果の開放 function free() { mysql_free_result($this->m_Rows); } // MySQLをクローズ function close() { mysql_close($this->m_con); } // エラーメッセージ //直近に実行されたMySQL操作のエラーメッセージを返す function errors() { return mysql_errno().":".mysql_error(); } // エラーナンバー //直近に実行されたMySQLの操作エラー番号を返す function errorno() { return mysql_errono(); } }

関連するQ&A

  • MySQL 5 PHP 5 データの受け渡しについて 困ってます。。

    MySQL 5 PHP 5 データの受け渡しについて 困ってます。。 下記内容で困ってます。機能としては (1)プロダクトテーブルからデータを読み込み表示。 ※プロダクトテーブルには商品データが8件登録されています。 (2)注文ボタンが押されたら受注テーブルにデータをカキコミ。 なんですが。。。 プロダクトテーブルから読み込んだデータを受注テーブルに書き込むと $product_id がいつも8(受注テーブルデータの一番最後の数字) $product_name  同じ $product_price 同じ ・・・ になってしまいます。 whileループしているので変数に代入するのも繰り返されて一番最後のデータが いつも格納されている状態だと思うのですが、この解決策を教えて下さい! 最近始めたばかりで良く理解出来ないので噛み砕いて教えてくれる方お願いします>< <?php //---------------------------------------- // □:テーブルからデータを読む //---------------------------------------- $mysql->query("SELECT * FROM products ORDER BY product_id") or die(mysql_error()); while($row = $mysql->fetch()){ $product_id = $row["product_id"]; $product_name = $row["product_name"]; $product_price = $row["product_price"]; echo <<<EOT <tr> <td align="center">$product_id<input name="product_id" type="hidden" value="$product_id" size="10" /></td> <td align="center">$product_name<input name="product_name[$product_id]" type="hidden" value="$new_product_name" size="10" /></td> <td align="right">$product_price<input name="product_price[$product_id]" type="hidden" value="$new_product_price" size="10" /></td> <td><input name="new_use_date[$product_id]" type="text" value="$new_use_date" size="20" /></td> <td><input name="new_use_time[$product_id]" type="text" value="$new_use_time" size="20" /></td> <td><input name="remarks[$product_id]" type="text" value="$new_remarks" size="40" /></td> <td><input name="submit_add" type="submit" value="注文する" /></td> </tr> EOT; } //ここまでwhileループ[終了の閉じカッコ] ?>

    • ベストアンサー
    • MySQL
  • MySQL + PHP 同じテーブル内でのクエリについて

    PHP+MySQL勉強中の初心者です。 PHP+MySQL環境でのクエリについて、以下の条件でのクエリ結果を求めたいのですが、上手くできませんので、質問させてください。 MySQLのテーブルは以下のようになっています。 date        no   name ---------------------------- 2009-12-10   15   takada 2009-12-15   10   hirooka 2009-12-18   13   wakada 2010-01-10   15   takada 2010-01-11   13   wakada ----------------------------- 出力させたいクエリは、前月データを元にno列をKEYとした重複チェックです。 前月データを全件出力し、当月データに同じnoがあった場合、当月日付を 表示させたいと思っています。 (PHPで希望する出力結果) date       no   name     date2 ---------------------------------------- 2009-12-10  15   takada   2010-01-10 2009-12-15  10   hirooka 2009-12-18  13   wakada   2010-01-11 ----------------------------------------- 以下のようなソースでは、1行のみの出力結果しか表示されず、 whileの使い方に問題があると思うのですが、どのように解決すれば良いのかが解りません。 どうか、解決策をよろしくお願いいたします。 $mysql->query("SELECT * FROM xxxx where date LIKE '$y-$m%'"); while($row = $mysql->fetch()){ $date = $row["date"]; $no = $row["no"]; $name = $row["name"]; $mysql->query("SELECT * FROM xxxx where upddate LIKE '$y2-$m2%' and no = '$no'"); while($row = $mysql->fetch()){ $date2 = $row["date"]; echo <<<EOT <td>$date</td> <td>$no</td> <td>$name</td> <td>$date2</td><tr> EOT; } }

    • 締切済み
    • PHP
  • mysql と php で、2テーブル結合の検索!

    mysql と php を勉強しはじめで、解からないので、どなたか教えてください! 2テーブルあります。( 例 ’name’ と ’jusyo’ テーブルです。) ’name’テーブルは、NO int、IC_NO char(5)、NAME char(18)、 ・・・・・です。 ’jusyo’テーブルは、NO int、NAME_KANA char(30)、TEL char(6)、JUSYO char(50)、 ・・・・です。 この2テーブルを、《NO int、》で、左結合(レフトジョイン)させます。 テキスト入力フィールド、があり、検索ボタンで検索させようと思っています。 テキスト入力フィールドには、IC_NO を入力し、’jusyo’テーブルの、NAME_KANA TEL JUSYO・・・ を表示させたいと思っています。 <?php extract($_POST); echo " <form action=\"kensaku2.php\" method=\"post\" > <p>検索番号 : <input type=\"text\" name=\"nam\" value=\"$nam\" size=\"10\">   <input type=\"submit\" value=\"検索\"></p>\n </form> "; if($nam<>''){ mysql_connect('localhost','root','******'); mysql_select_db('データベース名'); $sql= "select * from name left join jusho on NO=NO"; $sql= "select * from name where IC_NO like '%$nam%'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>\n"; } else { while($row = mysql_fetch_array($result)){ echo "詳細情報"; echo "<br />\n"; echo "<br />\n"; echo "インター名 : "; echo $row["NAME_KANA"]; echo "     "; echo "<p>";               ↓ としてますが、NAME_KANAが表示されません、どこが間違っていますか? 考え方がおかしいのでしょうか?

  • PHP 未定義の変数について

    以前にも質問しましたが、新たに壁にぶつかってしまったので再度投稿させていただきます。 ToDoリストを作っており、予定を入力フォームからデータベースへ登録、表示することまではできました。 現在は、表示されている全ての予定レコードの右端に"更新"と"削除"のボタンを設置し、それぞれの動作を行いたいと考えております。 それぞれのボタンに<input type=hidden name=No value='.$row[No].'>と記述し、更新箇所を入力するフォームを別ファイルで用意してあります。 しかし"更新"ボタンを押しても、 Notice: Undefined variable: No in C:\××××××××××\input_update.php on line 17 データは削除済か、もしくは存在しません。 というエラーメッセージが出てしまいます。(※"データは削除済みか~"は自分で記述したメッセージです。)実際にデータはあるので、変数の受け渡しがうまくいってないと思うのですが・・・ 調べると、「未定義の変数があるよ」という事なのでしょうが、未定義の変数というものが分かりません。 all_todo.php <?php $conn = mysql_connect("localhost","root","×××"); if($conn == false) {die("MySQL 接続エラー");} mysql_set_charset("sjis"); mysql_select_db("todo"); $sql="SELECT * FROM `todo`"; $todo_list=mysql_query($sql); while($row=mysql_fetch_array($todo_list)) { echo("<tr id='honbun'>"); echo("<td>"."<input id='c_change' type='checkbox' name='check' value='check'>".$row["済"]."</td>"); echo("<td id='No'>".$row["No"]."</td>"); echo("<td id='title'>".$row["タイトル"]."</td>"); echo("<td id='todo'>".$row["内容"]."</td>"); echo("<td id='limit'>".$row["期限"]."</td>"); echo("<td id='priority'>".$row["優先度"]."</td>"); echo("<form action=input_update.php method=post>"); echo("<input type=hidden name=No value='.$row[No].'>"); echo("<td><input type=submit value=更新></td>"); echo("</form>"); echo("<form action=input_update.php method=post>"); echo("<input type=hidden name=No value='.$row[No].'>"); echo("<td><input type=submit value=削除></td>"); echo("</form>"); echo("</tr>\n"); } mysql_free_result($todo_list); mysql_close(); ?> input_update.php <?php $conn = mysql_connect("localhost","root","×××"); if($conn == false) {die("MySQL 接続エラー");} mysql_set_charset("sjis"); mysql_select_db("todo"); $sql="SELECT `No`,`タイトル`,`内容`,`期限`,`優先度` FROM `todo` WHERE `No`='$No'"; $todo_list=mysql_query($sql); if(!$row=mysql_fetch_array($todo_list)) {die("データは削除済か、もしくは存在しません。");} echo "<form action=update.php method=post>"; echo "タイトル<input type=text name=タイトル value=\"" . $row["title"] . "\"> "; echo "内容<input type=text name=内容 value=\"" . $row["todo"] . "\"> "; echo "期限<input type=text name=期限 value=\"" . $row["limit"] . "\"> "; echo "優先度<input type=text name=優先度 value=" . $row["priority"] . "> "; echo "<input type=hidden name=id value=" . $id . ">"; echo "<input type=submit value=更新>"; echo "</form>"; mysql_free_result($todo_list); mysql_close(); ?> というコードです。 私の推測では、 >{die("データは削除済か、もしくは存在しません。");} というメッセージが表示されていることから、フォームからデータの受け渡しは出来ているのだと思います。ただ、意図した変数が渡されていないと思うのですが、フォームのvalue='.$row[No].'という記述に問題があるのか、はたまたname=Noの部分か、SELECT文の記述が悪いのかまったく分かりません。 どなたか知恵をお貸しください。 お願いいたします。

    • ベストアンサー
    • PHP
  • PHP & MySQL 抽出したデータの1番目が出力されない

    学校の課題で、PHP & MySQLを使ってウェブを作っています。 BBTapahtumaテーブルからJas_nroをキーにデータを抽出して、Tap_nroとTap_nimiを降順に出力します。 実行してもエラーはでません。現在BBTapahtumaには10件、該当Jas_nroのレコード数は5件(Tap_nro:10-8-7-6-1)ですが、表示されるのは4件(Tap_nro: 8-7-6-1)で、一番初めにくるべきデータが出てきません。where Jas_nro=$no を外し全レコード抽出(Tap_nro: 9-8-7-6-5-4-3-2-1)したり、order by Tap_nro desc を外して昇順(Tap_nro: 6-7-8-10)にしても、やはり1件目に当たるデータが出力されません。 $_SESSION['no']=$noは「1」が入っており、MySQL consoleで「select * from BBTapahtuma where Jas_nro=1 order by Tap_nro desc;」を実行すると、5件出てくるのでその次の出力の方に誤りがあるのだと思います。 テーブルは下記の3項目。テーブルを閉じた後に Lisa (別ページへのリンクボタン)があります。 Tap_nro, Tap_nimi, Lisatietoja(各データの詳細へのリンクボタン) ソースは次の通りです。どこに間違いがあるのか見つけられません。よろしくお願いいたします。 <?php $host="localhost"; $user="xxxx"; $password="xxxx"; $dbname="bb"; $yhteys = mysqli_connect($host, $user, $password, $dbname); $no = $_SESSION['no']; $sql = "select * from BBTapahtuma where Jas_nro=$no order by Tap_nro desc"; if(!$tulos=mysqli_query($yhteys, $sql)) { echo "error"; exit; } if(!$row=mysqli_fetch_array($tulos, MYSQLI_BOTH)) { echo "tiedot eivat ole tietokannassa."; } echo "<table border=0>"; echo "<tr><td>Numero &nbsp&nbsp</td><td>Tapahtuman nimi &nbsp&nbsp</td><td></td></tr>"; while($row=mysqli_fetch_array($tulos, MYSQLI_BOTH)){ echo "<tr>"; echo "<td>". $row['Tap_nro'] ."</td>"; echo "<td>". $row['Tap_nimi'] ."</td>"; echo "<form action='omatkeikkatiedot11.php' method='POST'>"; echo "<span class='button'><input type=hidden name=Tap_nro value=". $row['Tap_nro'] .">"; echo "<td><input type=submit name=lisa id=lisa value='Listietoja'></td></form></span></tr>"; } echo "</table>"; echo "<br><br>"; echo "<form action=omatkeikkatiedot2.php method=POST>"; echo "<div class='button'><input type=hidden name=Jas_nro value=". $row['Jas_nro'].">"; echo "<input type=submit name='Lisaa' id='laheta' value ='Lisaa'>"; echo "</div></form>"; ?>

    • ベストアンサー
    • PHP
  • PHPでMySQLデータを更新するとエラー

    PHPで作成したプログラムでMySQLにデータを登録しています。 新規にデータの追加はできるのですが、更新するとエラーになります。 スクリプトは if (isset($_POST["submit_upd"])){ $no = key($_POST[submit_upd]); $name = htmlspecialchars($_POST["name"][$no], ENT_QUOTES); $division = htmlspecialchars($_POST["division"][$no], ENT_QUOTES); $email = htmlspecialchars($_POST["email"][$no], ENT_QUOTES); $tel = htmlspecialchars($_POST["tel"][$no], ENT_QUOTES); $group = htmlspecialchars($_POST["group"][$no], ENT_QUOTES); $sql = "UPDATE user SET name='$name',division='$division',email='$email',tel='$tel',group='$group' WHERE no=$no"; $mysql->query($sql); $error = "{$no}番のデータを変更しました"; エラーは(例:4番のデータのグループを3番に変更) 1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group='3' WHERE no=4' at line 1 となっています。 以前同じプログラムで下記の質問をして、こちらは解決したのですが 結合していたり、whileループの設定などのせいでgroupの値を上手く得られないのか?と悩んでいます。 http://okwave.jp/qa3972723.html クラスも上記に記載してあります。 まわりに聞ける人が全くおらず困っています。 どうかお力を貸していただければと思いますので よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHPでMySQLにデーターを追加するところで壁に当たってしまいました

    PHPでMySQLにデーターを追加するところで壁に当たってしまいました。 PHP5.3&MYSQL5.1 1.フォームへ入力 2.確認画面 3.MySQLへデーター追加 1.form <html> <head><title></title></head> <body> <form method="post" action="conf.php"> <table> <tr><th>番号</th><td><input type="text" name="id" /></td></tr> <tr><th>タイトル</th><td><input type="text" name="title" /></td></tr> <tr><th>テキスト</th><td><textarea name="cont" cols="40" rows="5" /></textarea></tr> <tr><th>日付け</th><td><input type="text" name="update" size="10" /></td></tr> </table> <input type="submit" value="送信" /><input type="reset" value="リセット" /> </form> </body> </html> 2.確認画面 <html> <head><title></title></head> <body> <table> <tr><th>番号</th><td><?php echo htmlspecialchars($_POST["id"]) ?></td></tr> <tr><th>タイトル</th><td><?php echo htmlspecialchars($_POST["title"]) ?></td></tr> <tr><th>テキスト</th><td><?php echo htmlspecialchars($_POST["cont"]) ?></td></tr> <tr><th>日付け</th><td><?php echo htmlspecialchars($_POST["update"]) ?></td></tr> </table> <form method="post" action="upld.php"> <input type="hidden" name="did" value="<?php echo htmlspecialchars($_POST["id"]) ?>" /> <input type="hidden" name="title" value="<?php echo htmlspecialchars($_POST["title"]) ?>" /> <input type="hidden" name="cont" value="<?php echo htmlspecialchars($_POST["cont"]) ?>" /> <input type="hidden" name="update" value="<?php echo htmlspecialchars($_POST["update"]) ?>" /> <input type="submit" value="登録" /> </form> </body> </html> 3.MySQLへデーター追加 <?php $Con = mysql_connect("localhost","root",""); if ($Con == false) {dir ("MySQLの接続に失敗。");} if (!mysql_select_db("phpdata",$Con)) {dir ("データーベース接続に失敗。");} $sql = "insert into daimoku(id,title,cont,update) values('".$_POST["id"]."','".$_POST["title"]."','".$_POST["cont"]."','".$_POST["update"]."')";//SQL文の作成 $res = mysql_query($sql) or die(mysql_error());//クエリの実行 mysql_close($Con);//切断 ?> <html> <head> <title></title> </head> <body> <p>ご登録ありがとうございました。</p> <a href="01.php">戻る</a> </body> 以上のコードでデーターの追加が出来ません。 どなたか教えていただけないでしょうか?

    • ベストアンサー
    • PHP
  • フォームからMySQLにデータが書き込めません。

    CentOS5.3 + php5.1.6 + MySQLServer version: 5.0.77の環境です。 下記のスクリプトを書きましたが、点数を書いてsubmitすると、「登録できませんでした」が表示され、データの書き込みができません。 var_dump($sql); で$sqlの内容も表示されますし、echo($conn) も Resource id #2が返ります。 .MYD, .MYI,.frm のパーミッションは777です。 どこが不具合の原因でしょうか? データを登録するためには、どのように修正すれば良いでしょうか? ご教示願えれば幸甚です。 [tensuform.php] <HTML><BODY> <H1 ALIGN="CENTER">点数</H1> <TABLE BORDER="1" ALIGN="CENTER" CELLSPACING="0"> <FORM action="tensuinst.php" METHOD ="POST"> <TR><TD BGCOLOR="#CCCCCC">点数</TD> <TD><INPUT TYPE="TEXT" NAME="tensu" value="" maxlength="3"></TD></TR> <INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE=" 書 込 "> <INPUT TYPE="RESET" VALUE=" ク リ ア "></TD> </TR></TABLE></FORM></BODY></HTML> [ tensuinst.php] <HTML><BODY> <?php $tensu=$_POST['tensu']; print $tensu."<br/>"; if($tensu ==" "){ echo ("点数が書き込まれていません。"); ?> <a href="tensupoform.php">"こちらからデータを書き込んで下さい。"</a><BR> </BODY></HTML>); <?php exit(); }elseif(!$conn = mysql_connect('localhost', "abcd", "efgh")){ die("データベース接続エラー.<br />"); }else{ mysql_select_db("wxyz", $conn); $sql = "INSERT INTO kokugo('tensu') VALUES('$tensu')"; // var_dump($sql); echo("<br>"); // echo($conn)."<br>"; mysql_query($sql, $conn) or die("登録できませんでした" ); mysql_close($conn); print("登録しました。"); } ?>

    • ベストアンサー
    • MySQL
  • mysql データ更新

    一覧画面に更新ボタンを作成しました 更新ボタンを押すとkoushin_input.phpにデータを渡し入力フォームを表示され番号、氏名、住所が選択されたデータが表示されるようにしたいのでが更新ボタンを押しても下記のように出ます string(64) "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`=0" bool(false) データが削除されています ソースコードはtop.php 一覧画面です <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>一覧画面</title> </head> <body> <BLOCKQUOTE> <BR>一覧画面<BR><BR> <?php $con=mysqli_connect("localhost","root","admin","db_test"); if(isset($_GET["del"]) and isset($_GET["id"]) and $_GET["del"]==1){ $id=(int) $_GET["id"]; $result = mysqli_query($con,"DELETE FROM tbl_test where `番号`={$id}"); } // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,"SELECT * FROM tbl_test"); echo "<table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> </tr>"; while($row = mysqli_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['番号'] . "</td>"; echo "<td>" . $row['氏名'] . "</td>"; echo "<td>" . $row['住所'] . "</td>"; echo "<form action=koushin_input.php method=get>"; echo "<td><input type=submit value=更新></td>"; echo "</form>"; echo "<td><a href=\"".$_SERVER["SCRIPT_NAME"]."?del=1&amp;id=".$row['番号']."\">削除</a></td>"; echo "</tr>"; } echo "</table>"; mysqli_close($con); ?> <BR><BR><BR> <A HREF="http://localhost/regist.php"> <INPUT TYPE = "SUBMIT" VALUE = "新規登録"></A> </BLOCKQUOTE> </body> </html> 受け取る側 koushin_input.phpです <html> <body> <?php // データベースに接続 if(!$con=mysql_connect("localhost","root","admin")){ echo"接続エラー"; exit; } // データベースを選択 if(!mysql_select_db("db_test",$con)){ echo"データベース選択エラー"; exit; } // SELECT文を実行 $id=(isset($_GET["id"]))?((int) $_GET["id"]):0; $sql = "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`={$id}"; var_dump($sql); if(!$res=mysql_query($sql)){ echo "SQL実行時エラー"; exit; } // データの存在チェック if(!$row=mysql_fetch_array($res)){ $row=mysql_fetch_array($res); var_dump($row); echo "データが削除されています"; exit; } // 入力画面の出力 echo "<form action=koushin.php method=post>"; echo "名前:<input type=text name=NAME value=\"" . $row['氏名'] . "\"> "; echo "住所:<input type=text name=ADDR value=" . $row['住所'] . "> "; echo "<input type=submit value=更新>"; echo "</form>"; // 結果セットの解放 mysql_free_result($res); // データベースから切断 mysql_close($con); ?> </body> </html> どこが原因なんでしょうか?

    • ベストアンサー
    • MySQL
  • MySQLとPHP(HTML)の連携について

    送信側では、PHP(HTML)下記のように書きました。 ----------------------------- <form action="input.php" method="post"> ボタン1:<input type="submit" name="input" value="入力">   ボタン2:<input type="submit" name="input2" value="入力"> </form> ----------------------------- 受信側(input.php)は下記のように書きました。 ----------------------------- <?php $url = "***.sakura.ne.jp"; $user = "abc"; $pass = "12345"; $db = "sakura_db"; if (isset($_POST["$input"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN"; }elseif (isset($_POST["$input2"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN2"; } //Connect MySQL Server $my_Con = mysql_connect($url,$user,$pass); mysql_query("SET NAMES utf8",$my_Con); if ($my_Con == false){ die("MySQL Server接続に失敗しました。"); } //Connect MySQL DataBase if (!mysql_select_db($db,$my_Con)){ die("MySQL DataBase選択に失敗しました。"); } //MySQL Deta Read $my_Row = mysql_query($sql,$my_Con); if (!$my_Row){ die(mysql_error()); } $a = 1; while ($row = mysql_fetch_array($my_Row) or $a <= 50) { echo ' <p>'; echo ' A'.$a.':<input name="date" type="text" size="4" value="'.$row["a"].'">'; echo ' B'.$a.':<input name="date" type="text" size="4" value="'.$row["b"].'">'; echo ' C'.$a.':<input type="checkbox" name="example"'.check($row["c"]).'>'; echo ' D'.$a.':<input type="checkbox" name="example"'.check($row["d"]).'>'; echo ' </p>'; $a++; } //Close MySQL Server $my_Con = mysql_close($my_Con); if (!$my_Con) { exit("MySQL Server閉じられませんでした。"); } ?> ----------------------------- この状態で送信側のボタンをクリックすると、input.php側では”Query was empty”とエラーがでます。 送信側の2つあるボタンによって表示されるテーブルを変えたいのですが、何が原因なのでしょうか? そもそもSQLの内容をif文での条件分岐は出来ないのでしょうか? 最近PHPを勉強し出した初心者です。 出来れば分かりやすく教えていただけないでしょうか。 よろしくお願い致します!

    • ベストアンサー
    • PHP