電子書籍の厳選無料作品が豊富!

環境は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にしてレコードごとに
更新・削除を区別すればいいのかと思いましたが、
やり方がわからず行き詰っています。。
ご教授よろしくお願いします。

A 回答 (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;
?>
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/09 17:50

すみません。

曲解していました。
こういうことですね?
受け取った側は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;
?>
    • good
    • 0
この回答へのお礼

すべての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」のように固定にはしたくないので
できずに進めない状態です。
恐縮ではありますが、よろしくお願いします。

お礼日時:2006/08/05 16:51

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;
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/08/04 13:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!