for文内の重複する変数の書き方がわかりません

このQ&Aのポイント
  • for文内で変数の添字をうまく扱いたい場合、以下の記述方法を使用してください
  • フィールドの値を取得する際には$row1[sname'$i']のような形で添字を指定します
  • この方法を使えば、for文でループさせることができます
回答を見る
  • ベストアンサー

for 文内の重複する'$'の書き方がわかりません。

for 文内の重複する'$'の書き方がわかりません。 ''や[]や{}や()の使い方が悪いらしく 「$内に$をおく場合」 にどうしてもエラーになってしまいます。 問題は下記の <---- の部分です。 SQL部分はあまり気にしないでください。構文など間違いがあるかもしれません。 $sql = "select * from tapes where mem_no = '$mem_no; $result = mysql_query($sql, $con); $row = mysql_fetch_array($result); for ($i=0; $i<20; $i++) { $row1[sname'$i'] = $row[sname'$i']; <------- ここの記述方法を教えてください } フィールドが以下のようになっているため for文でルーをさせて $iの添え字をうまく使いたいのです。 <input name="sname0" type="text" size="20" value="<? echo $row1[sname0]; ?>"> <input name="sname1" type="text" size="20" value="<? echo $row1[sname1]; ?>"> <input name="sname2" type="text" size="20" value="<? echo $row1[sname2]; ?>"> . . . <input name="sname19" type="text" size="20" value="<? echo $row1[sname19]; ?>"> きっと簡単すぎる質問ですいません。 散々試しているのですがうまくいきません。よろしくお願いします。

  • PHP
  • 回答数8
  • ありがとう数4

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

  • ベストアンサー
  • togino
  • ベストアンサー率75% (97/129)
回答No.8

少し解説をしておきます。 まず下記のようなテーブル tapes があったとします ware_type | tape_no | title_no | sname ----------+---------+----------+------- Tape | t1 | 741859 | Suzuki Tape | t2 | 800000 | Yamada Tape | t1 | 900000 | Watanabe Tape | t1 | 750000 | Saito このテーブルに対し、以下のような SQL を実行すると $sql = "SELECT title_no, sname FROM tapes WHERE tape_no = 't1'" $result = mysql_query($sql, $con); title_no | sname ----------+------- 741859 | Suzuki 900000 | Watanabe 750000 | Saito の表が得られます。$result は、この表のことです。 この表には、初め先頭の1行目にカーソルがあります。   title_no | sname  ----------+------- ⇒ 741859 | Suzuki   900000 | Watanabe   750000 | Saito mysql_fetch_array() 関数は、このカーソルがある行を 連想配列として返し、カーソルを次の行に進めます。 つまり $row = mysql_fetch_array($result) の実行により $row["title_no"] = 741859 $row["sname"] = "Suzuki"   title_no | sname  ----------+-------   741859 | Suzuki ⇒ 900000 | Watanabe   750000 | Saito となるのです。 今、「表にある sname 欄のすべてのデータが欲しい」 とし、 $row1["sname0"] = "Suzuki" $row1["sname1"] = "Watanabe" $row1["sname2"] = "Saito" のように取得したいのであれば、 $i = 0; while ($row = mysql_fetch_array($result)) {  $row1["sname".$i] = $row["sname"];  $i ++; } とすればいいのが分かりますか? ただ僕なら、こうしますね。 $result = mysql_query($sql, $con); while ($row = mysql_fetch_array($result)) {  $field["sname"][] = $row["sname"]; } とした上で $i = 0 foreach($field["sname"] as $sname){ ?> <input name="sname<?php echo $i; ?>" type="text" value="<?php echo $sname; ?>"> <?php  $i ++; } とするかなっ。 まぁ、こんなのは人のすきずき(ケースバイケース)ですが(^^;) あと、最初にも回答しましたが <? echo $row1[sname1]; ?> は <? echo $row1["sname1"]; ?> または <? echo $row1['sname1']; ?> に改めるべきです。 define("sname1", "hogehoge") なんてされた日にはバグってしまいますから。

maigo100
質問者

お礼

toginoさん お返事遅くなってすいませんでした。ずっとあれ以来病気をしていました。それでこちらに来れなかったのです。 本当にご丁寧な説明ありがとうございます。こんな私でもすごく良くわかりました。 ご指摘通りにプログラムを修正したら、すべて動き始めました! 感謝しています。

その他の回答 (7)

  • togino
  • ベストアンサー率75% (97/129)
回答No.7

投稿した後、コピペで削除するのを忘れているのに 気がついたのですが、「maigo100 さん、気がついて くれるだろうなぁ」って思って再投稿しなかったん ですが・・・あぁすみません。 $sql = "select * from tapes where mem_no = '$mem_no'"; $result = mysql_query($sql, $con); // $row = mysql_fetch_array($result); ←★この行削除し忘れ!★ $i = 0; while ($row = mysql_fetch_array($result)) { $row1["sname".$i] = $row["sname"]; $i ++; } mysql_free_result($result);

  • togino
  • ベストアンサー率75% (97/129)
回答No.6

maigo100 さんは根本的に勘違いされてる? sname0, sname1, ... ってテーブルの横じゃなくて 縦に伸びるものじゃないでしょうか? $sql = "select * from tapes where mem_no = '$mem_no'"; $result = mysql_query($sql, $con); $row = mysql_fetch_array($result); $i = 0; while ($row = mysql_fetch_array($result)) { $row1["sname".$i] = $row["sname"]; $i ++; } mysql_free_result($result); $row はテーブルの1行を配列にしたものです。 1列ではありませんよ。

maigo100
質問者

補足

toginoさん ほんとお世話になっています。色々試していて、お返事が遅くなりました。 はい。まったくそのとおりだという事実に赤面です。 ただ、教えていただいたとおりにしてみましたが、 <input name="sname0" type="text" size="20" value="<? echo $row1[sname0]; ?>"> <input name="sname1" type="text" size="20" value="<? echo $row1[sname1]; ?>"> <input name="sname2" type="text" size="20" value="<? echo $row1[sname2]; ?>"> のうちのsname0だけが入るだけで、上手くいきません。 例えばSelect文の検索結果が、 Suzuki Watanabe Saito と3っつあったとすると、sname0がWatanabe、sname1がSaitoとなります。(期待している結果は、sname0がSUzuki、sname1がWatanabe、sname2がSaitoです。) 下のパターン1,2,3とかも色々自分なりに試してみたのですが、結果は、まったく同じです。 パターン1 $sql = "select * from tapes where mem_no = '$mem_no'"; $result = mysql_query($sql, $con); $row = mysql_fetch_array($result); $i = 0; while ($row = mysql_fetch_array($result)) { $row1["sname".$i] = $row["sname"]; $i ++; } mysql_free_result($result); パターン2 $sql = "select * from tapes where mem_no = '$mem_no'"; $result = mysql_query($sql, $con); $row = mysql_fetch_array($result); $i = 0; while ($row = mysql_fetch_array($result)) { $row1[sname.$i] = $row[sname]; $i ++; } mysql_free_result($result); パターン3 $sql = "select * from tapes where mem_no = '$mem_no'"; $result = mysql_query($sql, $con); $row = mysql_fetch_array($result); $i = 0; while ($row = mysql_fetch_array($result)) { $row1[sname.$i] = $row[sname]; $i ++; } mysql_free_result($result); しかし、初期値の$i = 0;を     $i = 1;にするとsname0は空白になり、sname1がWatanabe、sname2がSaitoが入ります。 同様に$i = 2;にするとsname0は空白になり、sname1も空白になり、sname2にWatanabe,sname3にSaitoが入ります。 同様に$i = 3;にするとsname0は空白になり、sname1も空白になり、sname2も空白になり、sname3にWatanabe,sname4にSaitoが入ります Suzukiはどこにも現れないですし、$iが増えれば結果が下へ下へと移動していきます。 まったくわけがわかりません。 宜しくお願いします。

  • imasyu
  • ベストアンサー率36% (19/52)
回答No.5

for ($i=0; $i<20; $i++) { $row1["sname".$i] = $row[$i]; } <input name="sname0" type="text" size="20" value="<? echo $row1["sname0"]; ?>"> <input name="sname1" type="text" size="20" value="<? echo $row1["sname1"]; ?>"> <input name="sname2" type="text" size="20" value="<? echo $row1["sname2"]; ?>"> としてみるとどうなりますか? 構文に誤りもあると思いますが print_rで出力した結果を見た感じでは、<input>内で参照している変数が定義されていないだけだと思います。

maigo100
質問者

補足

for ($i=0; $i<20; $i++) { $row1["sname".$i] = $row[$i]; } <input name="sname0" type="text" size="20" value="<? echo $row1["sname0"]; ?>"> <input name="sname1" type="text" size="20" value="<? echo $row1["sname1"]; ?>"> <input name="sname2" type="text" size="20" value="<? echo $row1["sname2"]; ?>"> 上記のとおり変更してやってみましたが上手くいきませんでしたので、下のようにprintを入れて中を見てみましたら、 for ($i=0; $i<20; $i++) { $row1["sname".$i] = $row[$i]; print("row[$i] = '$row[$i]'\n"); } row[0] = '' row[1] = '' row[2] = '' row[3] = '' ........ という感じで、全部空でした。 $resultをmysql_fetch_arrayで受けている今のsqlそのものに間違いがあるのでしょうか? $result = mysql_query($sql, $con); $row = mysql_fetch_array($result); 「mysql_fetch_array」以外で受けたほうが良いのでしょうか? ああ、今晩も寝れないのでしょうか。。。

  • togino
  • ベストアンサー率75% (97/129)
回答No.4

あうぅぅ > print_r("row= '$row'\n");の出力内容は、 勝手に変えないでください・・・ print_r($row) です・・・

maigo100
質問者

補足

ごめんなさい。 出力結果は、 Array ( [0] => Tape [ware_type] => Tape [1] => t1 [tape_no] => t1 [2] => 741859 [title_no] => 741859 [3] => Suzuki [sname] => Suzuki ) です。 宜しくお願いします。

  • togino
  • ベストアンサー率75% (97/129)
回答No.3

tapes テーブルの構成か、あるいは $sql = "select * from tapes where mem_no = '$mem_no'"; $result = mysql_query($sql, $con); $row = mysql_fetch_array($result); print_r($row) した結果、出力される内容を教えていただけませんか? maigo100 さん、そんなに間違っているとは 思いませんよ。ちょっとしたミスだと思いますが・・・

maigo100
質問者

補足

print_r("row= '$row'\n");の出力内容は、 row = 'Array' です。 宜しくお願いします。

  • togino
  • ベストアンサー率75% (97/129)
回答No.2

http://www.php.net/manual/ja/language.types.array.php#language.types.array.donts にもこう書いてありますし、"" でくくった方が よろしいかと・・・思います。

参考URL:
http://www.php.net/manual/ja/language.types.array.php#language.types.array.donts
maigo100
質問者

補足

toginoさん 下のとおりの結果でした。#1でtoginoさんだったらこういう風には書かないとのことでしたが、どのように書きますか?教えてください。PHPからmysqlコマンドの発行に慣れていなくて、resultやrowでの受ける時に用いているコマンドが間違っているのかとも思っています。for文の添字の$iも間違っているとも思っています。

  • togino
  • ベストアンサー率75% (97/129)
回答No.1

$row1["sname$i"] = $row["sname$i"]; ということではないのかな? $row1[sname0] という書き方は、僕は 全然しませんね。文字列リテラルなら""で 囲みますけど。

maigo100
質問者

補足

toginoさん ご回答ありがとうございました。でも教えていただいたままやってみましたが上手くいきません。 PHPからのmysqlコマンドでの取得の方法自体も間違っているのでしょうか。。。中身を見るためにprintで表示させたのですが、空です。でもコマンドラインで直接見に行くと、空じゃないのです。

関連するQ&A

  • 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
  • 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
  • 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
  • mysqlとphpを使った入力画面でチェックボックスのデータの受け取り方

    住所録を作成しています。 趣味をチェックボックスで選択するようにしましたが、1つしか選ばれません。例を挙げましたので教えてください。 if($tou<>""){ $sql = "insert into kainan values (0, '$tou', '$kai')"; $result = mysql_query($sql); $sql = "select * from jyusho where tou='$tou' order by tou asc limit 1"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ $id = $row["id"]; } echo "<p>登録完了しました</p>\n"; exit; } echo " <p>データを入力してください<p/> <form action=\"touroku.php\" method=\"post\"> <p>○登録日:<input type=\"file\" name=\"tou\" size=40 >\n <p>○趣味:\n <input type=\"checkbox\" name=\"kai\" value=\"不明\">不明\n <input type=\"checkbox\" name=\"kai\" value=\"英語\">英語\n <input type=\"checkbox\" name=\"kai\" value=\"算数\">算数\n </p>\n <p><input type=\"submit\" value=\"登録\">   <input type=\"reset\" value=\"クリア\"></p>\n </form>\n ";

  • MYSQL入門以前という本

    MYSQL入門以前という本を買って勉強を始めた初心者のものです。 書籍の中でMYSQLとPHPを使って住所録を作って行くのですが、どうも自己解決出来ない点があります。 DBにすでに入力済みの氏名、住所、電話番号などを修正する項目において、 echo "<p>氏名:<input type = \"text\" name = \"nam\" value =\""; echo $row["simei"]; echo "\" size = \"40\"></p>"; という記述がありまして、valueの中にレコードから取得したデータを入れ込んでいると解説があるのですが、コードを見てもどこで区切っているのかわかりません>< echo のダブルコーテーションで囲ってあるので textやnameの属性のところの " を \ でエスケープしてるのは分かっていて <input type = \"text\" name = \"nam\" value =\"";echo row["simei"];echo "\" size = \"40\">が一つのHTMLの構文になっているものだと理解しています。 value =\"" ~先がなぜこうなるかわかりません。valueの二個目の"の前に\が付かないのか、それともsizeの直前の"\までがvalueの中身になるのか?それであればその中の記述もおかしいと思うし。。。。 ちょっと初歩的なことで聞くのも恥ずかしかったのですが、どうしてもわからないので教えてください!! お願いします!!!

    • ベストアンサー
    • PHP
  • 配列として受け取った値を配列でない値に戻すには?

    お世話になります。 server_management.php(フォーム)から、server_management_remove_all.php(受け取り側ファイル)に配列としてデータを渡し、データを一括で更新するフォームを作成したのですが、server_management_remove_all.phpにおいて、header("Location: https://www.hogehoge/hogegege/server_management.php?id=".$id);というように戻り先のURLを指定し指定したURLに戻りたいのですが、変数$idに入れたい数字 (category_id)が配列として渡されてきているためかうまく変数$idに入れる事が出来ません。 【server_management.php】のソース ------------------------------------------------------------------ echo "<form action = \"server_management_remove_all.php\" method = \"post\">"; while($row = mysql_fetch_array($result)){ echo "<input type = \"hidden\" name = \"category_id[$row[item_id]]\" value =\""; echo $row["category_id"]; echo "\">"; 中略 } echo "<p>利幅1:<input type = \"text\" name = \"all\" value =\""; echo $row["all"]; echo "\" size = \"40\"></p>"; echo "<p>利幅2:<input type = \"text\" name = \"all2\" value =\""; echo $row["all2"]; echo "\" size = \"40\"></p>"; echo "<p>利幅3:<input type = \"text\" name = \"all3\" value =\""; echo $row["all3"]; echo "\" size = \"40\"></p>"; echo "<input type=\"submit\" value=\"一斉更新\">"; echo "</form>"; ?> ------------------------------------------------------------------ 【server_management_remove_all.php】のソース ------------------------------------------------------------------ $id=$_POST[category_id][$item_id]; header("Location:https://www.hogehoge/hogegege/server_management.php?id=".$id); if(isset($_POST['server_name'])){ foreach($_POST['server_name'] as $item_id=>$server_name) { $sql="update hametome_item set"; $sql.=" profit1='".$_REQUEST[all]."',"; $sql.=" profit2='".$_REQUEST[all2]."',"; $sql.=" profit3='".$_REQUEST[all3]."',"; 中略 $sql.=" category_id='".$_POST[category_id][$item_id]."'"; $sql.=" where item_id = ".$item_id; mysql_query($sql); } } ------------------------------------------------------------------ データを入力する際には、https://www.hogehoge/hogegege/server_management.php?id=15といったようなURL(戻りたいURL)から入力する形になっていて、同一のカテゴリーであれば、category_idは同じ数字です。 このような場合、どのようにすればよいのでしょうか?どうかご教授のほどよろしくお願いします。

    • ベストアンサー
    • PHP
  • (MySQLで修正スクリプトがうまくいかず困っています。

    最近MySQLをはじめました、まだ初心者の者です。 MySQLデータベースで、修正用のスクリプトがうまく起動いたしません。自分なりに色々書籍やネット検索致しましたがどこが間違っているのか見出せません。 お手数ですが、どうか指南お願い致します。 リンクから呼び出すスクリプトと削除スクリプトの二点です。 -------------------(始)ここから明細スクリプト(始)--------------- <?php extract($_GET); mysql_connect('localhost','root','xxxx'); mysql_select_db('xxxx'); $sql = "select * from xxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "検索データが見つかりませんでした。"; exit; } else { while($row = mysql_fetch_array($result)){ echo "<h2> " , $row["title"] , "</h2>"; echo "<p><font size=\"-2\">#", $row["id"] ," ●",$row["tourokubi"] ,"</font></p>\n"; echo "<p><div class=\"hon\">", nl2br($row["honbun"]), "</div></p>"; echo "<div class=\"key\">keywords: ", nl2br($row["keyword"]), "</div>"; $row["id"]; echo "</p>"; echo "</p>"; echo "<a href=\"correct.php?id="; echo $row["id"]; echo "\">[修正する]</a>"; echo "<a href=\"j_sakujo1.php?id="; echo $row["id"]; echo "\">[削除する]</a><hr>"; } } ?> ------------------------(終)ここまで(終)------------------------ -------------------(始)ここから削除スクリプト(始)--------------- <?php extract($_POST); extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); //修正レコード if($honbun<>""){ $sql = "update xxxxx set title='$title', honbun='$honbun', keyword='$keyword' where id = $id"; mysql_query($sql); echo "レコードの修正が完了しました"; exit; } // 修正ルーチン $sql = "select * from xxxxx where id = $id"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ $tourokubi = $row["tourokubi"]; $title = $row["title"]; $honbun = $row["honbun"]; $keyword = $row["keyword"]; } echo "<form action=\"correct.php\" method=\"post\" >\n"; echo "<p>・日付<br>\n"; echo $tourokubi, "</p>\n"; echo "<p>・タイトル<br>\n"; echo "<input type=\"text\" name=\"title\" value=\"",$title, "\"size=60 ></p>\n"; echo "<p>・本文<br>\n"; echo "<textarea name=\"honbun\" rows=20 cols=70 >\n"; echo $honbun; echo "</textarea></p>\n"; echo "<p>・キーワード(スペース区切りで列記)<br>\n"; echo "<textarea name=\"keyword\" rows=2 cols=70 >\n"; echo $keyword; echo "</textarea></p>\n"; echo "<p><input type=\"hidden\" name=\"i\" value=\"", $i, "\">  "; echo "<p><input type=\"submit\" value=\"修正\">  "; echo "<input type=\"reset\" value=\"クリア\"></p>\n"; echo "</form>\n"; ?> -------------------(終)ここまで(終)---------------------- 修正ボタンを押すと、修正しました。と表示されるのですが、 なぜかデータは更新されておりません。 自分なりに調べましたが、原因がどうしても分かりません。 ご指南よろしくお願い致します。

  • フォーム情報をDBに追加できない

    はじめまして。 初心者で現在参考書を使ってMYSQL、PHP、HTMLを学習してるんですが フォームの情報をデータベースに格納できません。 (ken1.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>県別人口面積その1</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql= "select * from todofuken"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["kenmei"]; echo " "; echo $row["kencho"]; echo " "; echo $row["jinko"]; echo " "; echo $row["menseki"]; echo "</p>"; } } ?> </body> </html> (ken2.html) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>フォーム文</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <p>データを入力してください</p> <form action="ken3.php" method="post" > <p>県   名<input type="text" name="ken" size="40"></p> <p>県庁所在地<input type="text" name="kec" size="40"></p> <p>人   口<input type="text" name="jin" size="40"></p> <p>面   積<input type="text" name="men" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form> </body> </html> (ken3.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>ここにページのタイトルが入る</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php error_reporting(E_ALL & ~E_NOTICE); extract($_POST); mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql = "insert into todofuken values('$ken', '$kec', $jin, $men, 0)"; mysql_query($sql); ?> </body> </html> ブラウザでken2.htmlのフォームにデータを埋め込み、そのデータを DBに追加したいんです。 問題はken2.htmlの登録ボタンを押してken3.php に移動するまでは良いんですが DBにデータが追加されません。 構文は参考書どうりにやっているので間違いないと思うのですが 原因がわかる方どうぞよろしくお願いします。

    • 締切済み
    • PHP
  • フォームデータをデータベースに追加したい

    はじめまして。 初心者で参考書を使ってPHP、MYSQLを学習してるんですが フォームに入力したデータをデータベースに追加するとこが 参考書どうりにやってるんですができません。 どうかお力を貸してください。 (ken1.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>県別人口面積その1</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql= "select * from todofuken"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["kenmei"]; echo " "; echo $row["kencho"]; echo " "; echo $row["jinko"]; echo " "; echo $row["menseki"]; echo "</p>"; } } ?> </body> </html> (ken2.html) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>フォーム文</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <p>データを入力してください</p> <form action="ken3.php" method="post" > <p>県   名<input type="text" name="ken" size="40"></p> <p>県庁所在地<input type="text" name="kec" size="40"></p> <p>人   口<input type="text" name="jin" size="40"></p> <p>面   積<input type="text" name="men" size="40"></p> <input type="submit" value="登録"> <input type="reset" value="リセット"> </form> </body> </html> (ken3.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <title>ここにページのタイトルが入る</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> <?php extract($_POST); mysql_connect('localhost','root','freedom'); mysql_select_db('lesson'); $sql = "insert into todofuken values('$ken', '$kec', $jin, $men, 0)"; mysql_query($sql); ?> </body> </html> ken2.htmlで入力したデータをデータベースに追加したいのですが ブラウザ上で登録ボタンを押してken3.phpに移動するまでうまくいっています。 参考書ではこの操作で入力したデータがデータベースに追加されると書いているのですが データベースを見ても追加されていません。 原因をいろいろ調べたのですが不明なのでお力添えお願いします。

    • 締切済み
    • 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が表示されません、どこが間違っていますか? 考え方がおかしいのでしょうか?