- 締切済み
チェックボックスの値のデータベースへの挿入方法
すみませんが、どなたか教えていただけないでしょうか。 ブラウザ上に2つチェックボックスがあり、チェックしたら1、チェックしなかったら0(または空白)をMySQLのデータベースのテーブルに挿入したいと思っています。 これを最初のブラウザのページをhtml、チェック後にそれを処理してデータベースとの処理をするのをphpで書いています。 また、データベースは下記のように作成し、testtbテーブルはt1, t2という名の2つのcolumnで出来ています。 ・MySQL データベース名:testdb ・MySQL テーブル名:testtb 下記のようにプログラムを書いたところ、無事挿入までは出来たのですが、MySQLでテーブルの中身を確認したところ毎回2つ分rowに値が挿入されていたり、2つ目のチェックボックスがチェックされているのにも関わらずt1に値が入ってしまったりしています...。 期待している動作は、下記のようになります。 ・チェックボックス1だけにチェックが入った場合 >t1に1が入り、t2は0(または空欄)が入る ・チェックボックス2だけにチェックが入った場合 >t2に1が入り、t1は0(または空欄)が入る ・チェックボックス1と2の両方にチェックが入った場合 >t1とt2両方に1が入る ・チェックボックス1と2の両方ともチェックが入らなかった場合 >t1とt2両方とも0(または空欄)が入る チェックボックスの2次元配列(?)を理解出来ていないのが一因かと思われるのですが、どう書けば良いか教えていただけませんでしょうか。 宜しくお願いします。 --------------------- <!DOCTYPE html> <html> <head> <title>test</title> </head> <body> <meta http-equiv=Content-Type content="text/html; charset=UTF-8"> <form method = "POST" action = "test.php"> A   <input type="checkbox" name="t[]" value="1"><br> B   <input type="checkbox" name="t[]" value="1" checked><br> <input type = "submit" name = "btn1" value = "send"> </form> </body> </html> ----------ここまでがhtml ----------ここからがphp <!DOCTYPE html> <html> <head> <title>test</title> </head> <body> <meta http-equiv=Content-Type content="text/html; charset=UTF-8"> <?php $idata1 = $_POST["t"]; print $idata1; $link = mysql_connect('localhost', 'root', 'パスワード'); if (!$link){ die('接続失敗です。'.mysql_error()); } print('<p>接続に成功しました。</p>'); $db_selected = mysql_select_db('testdb', $link); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } print('<o>testdbデータベースを選択しました。</p>'); mysql_set_charset('utf8'); $result = mysql_query('SELECT t1, t2 FROM testtb'); if (!$result){ die('SELECTクエリーが失敗しました。'.mysql_error()); } print('<p>テーブル選択成功</p>'); while ($row = mysql_fetch_assoc($result)){ print('<p>'); print('t[]='.$row['t[]']); print('</p>'); } print('<p>データを追加します。</p>'); $sql = 'INSERT INTO testtb (t1, t2) VALUES ("'.$idata1.'")'; $result_flag = mysql_query($sql); if (!$result_flag){ die('INSERTクエリーが失敗しました。'.mysql_error()); } print('<p>追加後のデータを取得します。</p>'); $result = mysql_query('SELECT * FROM testtb'); if (!$result) { die('SELECTクエリーが失敗しました。'.mysql_error()); } while ($row = mysql_fetch_assoc($result)){ print('<p>'); print('t[]='.$row['t[]']); print('</p>'); } $close_flag = mysql_close($link); if ($close_flag) { print('<p>切断に成功しました。</p>'); } ?> </body> </html>
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- agunuz
- ベストアンサー率65% (288/438)
お礼
早速コメントいただきありがとうございます!name属性を変えないといけなかったんですね。PDO...がんばります。