- 締切済み
PHPボタンの判定が正常に機能しません
phpによるWEBアプリケーションスーパーサンプルという参考書を用いて データ更新・削除プログラムを作成したのですが、データベースにつないだ後の作業として下記のソースを打ち込んだのですが削除・更新ボタンのどちらをを押しても削除ボタンの機能が優先されデータが削除されてしまいます。 一応単体テストとして更新・削除を各々別ソースで実行したときは動作できました。 申し訳ありませんがご指南お願いいたします。以下がソースです。 // 変更するデータを取得する if (count($_POST) > 0) { $id = $_POST["id"]; $dname = $_POST["dname"]; $teladdress = $_POST["teladdress"]; $mailaddress = $_POST["mailaddress"]; // データが送信されたときはデータを変更する if (strlen($id) and strlen($dname) and strlen($teladdress) and strlen($mailaddress)) { // データを変更する $sql = "UPDATE student SET dname = '".cnv_sqlstr(cnv_enc($dname, $enc_db, $enc_disp))."', teladdress = '".cnv_sqlstr(cnv_enc($teladdress, $enc_db, $enc_disp))."', mailaddress = ".cnv_sqlstr($mailaddress)." WHERE (id = ".cnv_sqlstr($id).");"; mysql_query($sql, $conn) or die("データ変更エラー"); } } // 削除するデータを取得する if (count($_POST) > 0) { $id = $_POST["id"]; // データが送信されたときはデータを削除する if (strlen($_POST["id"]) > 0) { // データを削除する $sql = "DELETE FROM student WHERE (id = ".intval($id).");"; mysql_query($sql, $conn) or die("データ削除エラー"); } }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
$_POST["sub1"]の値をチェックしているのでしょうか? なんとも言えませんが、送られてくるデータが日本語のため チェックがぶれているのではないでしょうか? 送り元のファイルと、受け側のファイルの文字コードを統一するところから はじめてみてください
- shimix
- ベストアンサー率54% (865/1590)
元のhtmlのform要素はどうなっているのでしょうか(「更新」と「削除」でPOSTされる項目にどういう違いがありますか)。 その「違い」で振り分けるしかないと思いますが・・・
補足
回答ありがとうございます form要素については以下のようになっております while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<form method=\"POST\" action=\"".$_SERVER["PHP_SELF"]."\">"; echo "<tr>"; echo "<input type=\"hidden\" value=\"".$row["id"]."\" name=\"id\">"; echo "<td>".$row["id"]."</td>"; echo "<td>".cnv_enc($row["dname"], $enc_disp, $enc_db)."</td>"; echo "<td>".cnv_enc($row["teladdress"], $enc_disp, $enc_db)."</td>"; echo "<td>".$row["mailaddress"]."</td>"; echo "<td><input type=\"submit\" value=\"変更\" name=\"sub1\"></td>"; echo "<td><input type=\"submit\" value=\"削除\" name=\"sub1\"></td>"; echo "</tr>"; echo "</form>"; 申し訳ないのですが振り分けの仕方が理解に達しておらず、困っております。もしよろしければ、ご指南お願いいたします。 一応POSTを用いるソース例としてhttp://park18.wakwak.com/~little-box/Dreamweaver/sql014.htmのサイトを参考にさせていただいたのですが、html文ののpostの行でエラーが起きてしまい、エラー画面になってしまったので、postを使わずに識別したいなと思っております。
お礼
アドバイスを参考にして 自己解決できたのでありがとうございました