データを一括で処理する方法

このQ&Aのポイント
  • Mysql4.1,PHP5環境でデータを一括処理する方法について紹介します。
  • Web上に表示されたテーブルデータを一括で更新・削除する方法について解説します。
  • ラジオボタンを使用してレコードごとに更新・削除を区別する方法について説明します。
回答を見る
  • ベストアンサー

データを一括で処理する方法について

環境はMysql4.1,PHP5です。 テーブルに ID name tel ------------------ 1 aaa 03-3333-3333 2 bbb 022-222-2222 3 ccc 0120-00-0000        があります。 これをWeb上に表示させ <form action=exe.php method=post> while ($col = mysql_fetch_array($rst)) { print"名前<INPUT size='30' type='text' name='name' value='$col[name]'> TEL<INPUT size='12' type='text' name='tel' value='$col[tel]'> 更新<input type=radio name=$col[id] value=0> 削除<input type=radio name=$col[id] value=1>"; } <INPUT type=submit value=実行></form> と3件表示させた後、3件一括で更新・削除の 処理をしたいと思っています。3件は固定ではないです。 1件ずつの更新・削除はできました。 ラジオボタンのnameをIDにしてレコードごとに 更新・削除を区別すればいいのかと思いましたが、 やり方がわからず行き詰っています。。 ご教授よろしくお願いします。

  • MySQL
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

んーちょっと意図がずれていると思いますが・・・ 以下のようにしてみてください。 <?PHP if($_POST){ if($_POST["kind"]){ foreach($_POST["kind"] as $key =>$val){ if($val=="delete") print "DELETE FROM `A` WHERE `ID`='$key';<br>"; if($val=="modify") print "UPDATE `A` SET `name`='".$_POST['name'][$key]."',`tel`='".$_POST['tel'][$key]."' WHERE `ID`='$key';<br>"; } } } $Link=mysql_connect("host","user","password"); mysql_select_db("A",$Link); $sql="SELECT `ID`,`name`,`tel` FROM `A`;"; $res=mysql_query($sql,$Link) ; print <<<eof <form action="$_SERVER[PHP_SELF]" method="post"> eof; while($col = mysql_fetch_array($res,MYSQL_ASSOC)){ print <<<eof 名前<INPUT size='30' type='text' name='name[$col[ID]]' value='$col[name]'> TEL<INPUT size='12' type='text' name='tel[$col[ID]]' value='$col[tel]'> 更新<input type=radio name="kind[$col[ID]]" value="modify"> 削除<input type=radio name="kind[$col[ID]]" value="delete"><br> eof; } print <<<eof <INPUT type="submit" value="実行"> </form> eof; ?>

99Micchi
質問者

お礼

yambejpさん、できました!ほんとうに感謝しております(TT) SQL構文まで教えていただいてしまい・・ありがとうございました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

すみません。曲解していました。 こういうことですね? 受け取った側はID値でkindの値をみて更新や 削除をすればいいでしょう。 <?PHP $Link=mysql_connect("host","user","password"); mysql_select_db("データベース",$Link); $sql="SELECT `ID`,`name`,`tel` FROM `テーブル`;"; $res=mysql_query($sql,$Link); print <<<eof <form action="hoge.php" method="post"> eof; while($col = mysql_fetch_array($res,MYSQL_ASSOC)){ print <<<eof 名前<INPUT size='30' type='text' name='name[$col[ID]]' value='$col[name]'> TEL<INPUT size='12' type='text' name='tel[$col[ID]]' value='$col[tel]'> 更新<input type=radio name="kind[$col[ID]]" value="modify"> 削除<input type=radio name="kind[$col[ID]]" value="delete"><br> eof; } print <<<eof <INPUT type="submit" value="実行"> </form> eof; ?>

99Micchi
質問者

お礼

すべてのnameに$col[ID]をつけて判別するのですね! まったくわからなかったのですが、とても感謝しております。 >受け取った側はID値でkindの値をみて更新や 削除をすればいいでしょう。 についてなのですが、 $sql = "SELECT * from A"; $rst = mysql_query($sql,$con); while ($col = mysql_fetch_array($rst)) { if($kind$col[ID]==0 ){ $sql="update shop set name='$name$col[ID]',tel='$tel$col[ID]' where ID='$id$col[ID]' mysql_query($sql); のようにしました。 ID='$id$col[ID]'は <input type=hidden name=id$col[ID] value='$col[ID]' > としております。 結果はwhere ID='$id$col[ID]'の部分はうまくいったようなのですが、 nameとtelが$col[ID]の値になってしまいました。 ID name tel -------------- 1   1   1 2   2  2 3   3   3 $kind1==0 の「1」のように固定にはしたくないので できずに進めない状態です。 恐縮ではありますが、よろしくお願いします。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

whileのループの外側に更新・削除確認ラジオボタン をおけばよいのでは? IDは大文字?小文字? print <<<eof <form action=exe.php method=post> eof; while ($col = mysql_fetch_array($rst)) { print <<<eof 名前<INPUT size='30' type='text' name='name[$col[ID]]' value='$col[name]'> TEL<INPUT size='12' type='text' name='tel[$col[ID]]' value='$col[tel]'><br> eof; } print <<<eof 更新<input type=radio name="kind" value=0> 削除<input type=radio name="kind" value=1> <INPUT type=submit value=実行> </form> eof;

99Micchi
質問者

お礼

yambejpさん、ご回答ありがとうございます。 ループの外側に更新・削除をおいてみました。 こうすると、1件ずつ更新・削除が選べないのが ちょっと問題です。 このような処理はどのような仕組みになっているのでしょうか。 アドバイスなど頂けたら幸いです。

関連するQ&A

  • POSTデータのNAME属性をVALUEによって取得する方法

    HTML→PHPのPOSTデータのやりとりについて、 【HTML】 <form name="form1" method="post" action="xxx.php"> <input name="01" type="text" value="1"> <input name="02" type="text" value="0"> <input name="03" type="text" value="0"> <input name="04" type="text" value="1"> <input type="submit" name="Submit" value="送信"> </form> 【xxx.php】 フォームから送信されたデータを使って、「value」が"1"の「name」を拾うのにはどのように書けばいいでしょう? ↓このように取得したいです。 $data[0]="01"; $data[1]="04"; よろしくお願いします。

    • ベストアンサー
    • PHP
  • formの入れ子の回避方法

    アドバイス下さい。 <form method="post" name="addForm" id="addForm" action="aaa.php"> <input type="text" name="textA" id="textA"> <form method="post" name="uploadFormA" id="uploadFormA" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text1" id="text1"> <input type="file" name="upload_fileA" id="upload_fileA"> <input type="button" value="アップロード"> </form> <form method="post" name="uploadFormB" id="uploadFormB" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text2" id="text2"> <input type="file" name="upload_fileB" id="upload_fileB"> <input type="button" value="アップロード"> </form> <form method="post" name="uploadFormC" id="uploadFormC" enctype="multipart/form-data" action="aaa.php"> <input type="text" name="text3" id="text3"> <input type="file" name="upload_fileC" id="upload_fileC"> <input type="button" value="アップロード"> </form> <input type="text" name="textB" id="textB"> <input type="submit" value="送信"> </form> のような、formが入れ子になってしまっているformがあります。 これを回避する方法を教えていただきたいです。 条件としては、 ・見た目はこの順番がいい。 ・javascript、CSS等なんでも良いです。 ・各「アップロード」ボタンで、text1,2,3,4、upload_fileA,B,C,Dを送信、「送信」ボタンでtextA,Bを送信したい。 以上、お願いいたします。

    • ベストアンサー
    • HTML
  • 複数のフォームデータの更新

    こんにちは、 現在下記のような感じで、それぞれのIDごとに、 データを更新しておりますが、 これを一度の更新で、複数のデータの更新を行うには、 どうすればよいでしょうか?SQL文を繰り返せば出来そうですが!? いまひとつ、ピンとこないのでよろしくお願いいたします。 <form name="form1" method="post" action="kousin.php?id=1"> <td>あいう</td> <td><input name="A" type="text" id="A" size="2"></td> <td><input name="B" type="text" id="B" size="2"></td> <td><input name="C" type="text" id="C" size="2"></td> <input type ="submit" name = "submit" value = " 更新 "> <form name="form1" method="post" action="kousin.php?id=2"> <td>かきく</td> <td><input name="A" type="text" id="A" size="2"></td> <td><input name="B" type="text" id="B" size="2"></td> <td><input name="C" type="text" id="C" size="2"></td> <input type ="submit" name = "submit" value = " 更新 "> kousin.php側 $id = $_GET['id']; $time0 = $_POST['A']; $time1 = $_POST['B']; $time2 = $_POST['C']; $update = "update time_tb set "$time" where id='$id'";

    • 締切済み
    • PHP
  • HTML画面でデータの更新

    こんにちは まずはソースを・・・ <form action="text.php" method="post"> <table> <tr> <th>名前</th> <th>メモ</th> <th>更新</th> <tr> <? while($data = mysql_fetch_array($result)){ ?> <tr> <th><input type="text" name="name" value="<?= $data['name'] ?>" /></th> <th><input type="text" name="memo" value="<?= $data['memo'] ?>" /></th> <th><input type="submit" name="submit" value="更新" /></th> <tr> <? } ?> </table> </form> Mysqlにデータを登録してPHPで読み込んでHTMLに表示をしているのですが 更新ボタンを押した時にそのデータの更新ができるようにするにはどうしたら良いでしょうか? 説明が微妙かもしれませんが・・・。 ↓こんな感じに・・・(これはダメですが) <table> <tr> <th>名前</th> <th>メモ</th> <th>更新</th> <tr> <? while($data = mysql_fetch_array($result)){ ?> <form action="text.php" method="post"> <tr> <th><input type="text" name="name" value="<?= $data['name'] ?>" /></th> <th><input type="text" name="memo" value="<?= $data['memo'] ?>" /></th> <th><input type="submit" name="submit" value="更新" /></th> <tr> </form> <? } ?> </table> tableタグでやるのは難しいのでしょうか? なにかいいアドバイスがあればよろしくお願いします!

    • 締切済み
    • PHP
  • PHPで隠しデータをPOST送信する方法

    <form name="example" method="POST" action="example.php"> <input type="text" name="id" value="" /> <input type="password" name="pw" value="" /> <input type="submit" value="ログイン" /> </form> 上記のようなログインフォームがあるとします。 <input type="hidden" />のようにソースを見たらわかってしまう方法ではなく、 クライアント側で完全に見えないよう、id,pwの送信と同時にPHPで隠しデータをPOST送信する方法はございますでしょうか。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • phpでmysqlに接続してデータを登録

    入力フォームをhtmlに作って それをidとpassを入力して それをmysqlに登録したいのですが うまくできません <html> <head> <meta http-equiv="Content-Type"content="text/html;charset="utf-8"/> <title>登録</title> </head> <body> <form action="touroku.php"method="post"> 登録id :<br /> <input type="text"name="id"size="10"value="" /><br /> パス:<br /> <input type="text"name="pass"size="10"value="" /><br /> <br /> <input type="submit"value="登録する" /> </form> </body> </html> という感じに 入力フォームは作ったのですが それからそれをmysqlにどうやって登録をするのかわかりません 詳しく解説されてわかりやすいサイトなどを教えてください もしくは教えてください

  • mysql データ登録

    phpにてmysqlにデータ登録の流れを作っているのですが、わからないことがあり投稿しました。 簡単に流れを説明しますと mysqlのテーブル(テーブル名member)の構成は id | name だとして phpのフォームで <input type="text" name="name1" value=""> <input type="text" name="name2" value=""> <input type="text" name="name3" value=""> というものを作っています。 ここでフォームのname1、name2、name3をそれぞれ入力したときにmysqlに登録されるのですが、 mysqlのなかに id | name 1 | A 2 | B 3 | C としたいのですが、下記の記述ではできません。 (INSERT INTO `member` SET `name`='$name1',`name`='$name2',`name`='$name3') エラー文はColumn 'name' specified twiceと表示されます。 レコード数は増やしたくないので、何か方法が御座いましたら教えていただけないでしょうか? まだ、PHPを勉強し始めたばかりで困っています。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 同一ページで複数のformを扱う場合

    同一のページ内にhiddenでIDを振った削除ボタンを用意しクリックされたIDを取得するにはどのようにすれば良いでしょうか? <form action="/test.php" name="1" method="post"> <input type="hidden" name="id" value="1" /> <input type="submit" name="delete" value="削除"> </form> -- 省略 <form action="/test.php" name="10" method="post"> <input type="hidden" name="id" value="10" /> <input type="submit" name="delete" value="削除"> </form> formにnameを振ってみても最後のIDがPOSTされてしまいます。

    • 締切済み
    • PHP
  • 複数formの使用について

    お世話になります。 複数のFORMを入れ子で使用する方法はありますでしょうか? 下記の記述だと外側のFORMが無効になってしまいます。 表示の順は以下のようにしたいです。 aaa.phpへPOST変数でデータを受け渡して使用します。 <form method="post" name="test1" action="aaa.php"> <input type="text" name="text01" id="textA" value="10"> <input type="text" name="text02 id="textA" value="20"> <input type="text" name="text03" id="textA" value="30"> (上のinputタグ数は動的に変わります) <form method="POST" name="test2" action="bbb.php"> <select name="select"> <option>selectA</option> <option>selectB</option> <option>selectC</option> <input type="submit" name ="read" value="読込"> </select> </form> <input type="submit" value="保存" > </form> 以上、よろしくお願いいたします。

    • 締切済み
    • PHP
  • フォームの値の再表示

    PostgreSQLのデータベースからPHPで問い合わせしたレコードをブラウザで更新するために問い合わせた結果をブラウザ上に表示させています。 $sql = "select col1,col2 from table where id = '$id' ;"; <form action = "update.php" method=post> タイトル: <input type="text"name="col1" value=<?print("$col1");?>> </form> $col1がスペースを含んでいるとこのフォームにはスペースの前まで文字列しか表示されません。 すべての文字列を正しく表示するためにはどういう方法が よいでしょうか?

    • ベストアンサー
    • PHP