質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Q&A

解決済

2回答

2190閲覧

PHPのチェックボックスにチャックがない場合のエラーの対処方法

cometruejp

総合スコア13

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

0グッド

0クリップ

投稿2016/04/12 09:40

初めまして。初めて投稿します。

PHPで、チェックボックスの内容をDBに登録したいのですが、チェックボックスにチェックがない場合にエラーが出力されます。

その場合に、空データとして入力する方法をご教示いただけませんか。

宜しくお願い致します。

【mariaDBの作業】

mysql -u root -p

Enter password: ********

MariaDB [(none)]> create database fruit;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| fruit |
+--------------------+

MariaDB [(none)]> use fruit;
Database changed
MariaDB [fruit]> create table fruit_tbl(
-> id int not null auto_increment,
-> name varchar(20) not null,
-> fruit1 varchar(20) not null,
-> primary key(id)
-> );
Query OK, 0 rows affected (0.23 sec)

MariaDB [fruit]> show tables;
+-----------------+
| Tables_in_fruit |
+-----------------+
| fruit_tbl |
+-----------------+
1 row in set (0.00 sec)

MariaDB [fruit]> insert into fruit_tbl(name, fruit1) values('test', 'fruit1');
Query OK, 1 row affected (0.03 sec)

MariaDB [fruit]> select * from fruit_tbl;
+----+------+--------+
| id | name | fruit1 |
+----+------+--------+
| 1 | test | fruit1 |
+----+------+--------+
1 row in set (0.00 sec)

MariaDB [fruit]>

【fruit.html】

<html> <body> <form action = "fruit.php" method="post"> 名前:<input type="text" name="name"><br /> くだもの: <input type="checkbox" name="fruit1" value="apple"> apple <input type="submit" name="exec" value="登録"> <input type="reset" value="リセット"> </form> </body> </html>

【fruit.php】

<?php //データベースに接続 $con = mysqli_connect('127.0.0.1', 'root', 'password'); if (!$con) { exit('データベースに接続できませんでした。'); } //データベースを選択 $result = mysqli_select_db($con, 'fruit'); if (!$result) { exit('データベースを選択できませんでした。'); } $name = $_REQUEST['name']; $fruit1 = $_REQUEST['fruit1']; //フォームで送られてきたデータでINSERT文を作成 $result = mysqli_query($con, "insert into fruit_tbl(`name`, `fruit1`) values('$name', '$fruit1')"); if (!$result) { exit('データを登録できませんでした。'); } //データベースから切断 $con = mysqli_close($con); if (!$con) { exit('データベースとの接続を閉じられませんでした。'); } ?> <p>登録が完了しました。</p>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

チェックボックスが選択されていない時、項目自体が消えてしまうのが要因です。
対応方法はいくつかあると思いますが、hidden属性のinput要素に
同じnameでデフォルト値を入れておく方法は結構見かけます。
(いずれにせよ値のバリデーションは必須です)

html

1<input type="hidden" name="fruit1" value=""> 2<input type="checkbox" name="fruit1" value="apple">

・チェックされていない場合checkboxの値は渡ってこないのでfruit1 = 空文字
・チェックされている場合は後出の値で上書きされるのでfruit1 = apple

投稿2016/04/12 12:32

編集2016/04/12 12:37
nnssn

総合スコア1221

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cometruejp

2016/04/13 07:15

ありがとうございます。解決しました。
guest

0

fruit1 の not null 制約を削除するか
(そうしない場合は)未指定の場合は、未設定の意味の何かを設定する
のどっちかじゃないスか?

投稿2016/04/12 10:30

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cometruejp

2016/04/13 07:15

ありがとうございます。解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問