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

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

ただいまの
回答率

90.47%

  • PHP

    20812questions

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

  • MariaDB

    305questions

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

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

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 666

cometruejp

score 5

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

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(namefruit1) values('$name', '$fruit1')");

if (!$result) {
  exit('データを登録できませんでした。');
}

//データベースから切断
$con = mysqli_close($con);
if (!$con) {
  exit('データベースとの接続を閉じられませんでした。');
}

?>
<p>登録が完了しました。</p>

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/13 16:15

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/13 16:15

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

    キャンセル

関連した質問

同じタグがついた質問を見る

  • PHP

    20812questions

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

  • MariaDB

    305questions

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