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

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

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

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

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

Q&A

解決済

5回答

3968閲覧

チェックボックスが入力されているかをphpで判定する

kokokooooooooo

総合スコア18

PHP

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

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

0グッド

0クリップ

投稿2018/10/02 07:42

困っていること
checkboxが未入力の場合、エラー処理をPHPで出力処理を行えていない状況

やりたいこと
postで、性別の部分を空で送った場合に、エラー処理、性別がチェックされていませんを出力したい

今現在わかっていること
そもそも、POSTで送られているか調べると、性別の部分を送っていないため
エラー表示にsexは未定義ですといわれる。

php

1<?php 2session_start(); 3 4$errors = array(); 5 6if(isset($_POST['submit']) && $_POST['submit'] === "送信"){ 7 $KlastName = $_POST['KlastName']; 8 $Kname = $_POST['Kname']; 9 $lastName = $_POST['lastName']; 10 $name = $_POST['name']; 11 $password = $_POST['password']; 12 $confirm_password = $_POST['confirm_password']; 13 $sex = $_POST['sex']; <ーそもそもpostで送られていないので代入できていない 14 $bday = $_POST['bday']; 15 16 if ($KlastName === "") { 17 $errors['KlastName'] = "カナ苗字が記載されていません"; 18 } 19 if ($Kname === "") { 20 $errors['Kname'] = "カナ名前が記載されていません"; 21 } 22 if ($lastName ==="") { 23 $errors['lastName'] = "苗字が記載されていません"; 24 } 25 if ($name === "") { 26 $errors['name'] = "名前が記載されていません"; 27 } 28 if ($password === "") { 29 $errors['password'] = "パスワードが記載されていません"; 30 } 31 if ($confirm_password === "") { 32 $errors['confirm_password'] = "パスワード確認もよろしく"; 33 } 34 if ($sex === "") { 35 $errors['sex'] = "性別のチェックをお願いします"; 36 } 37 if ($bday === "") { 38 $errors['bday'] = "日付の選択をしてください"; 39 } 40} 41 42 ?> 43 44<!DOCTYPE html> 45<html> 46 <head> 47 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 48 <title>ログイン前</title> 49 <script src="app.js" type="text/javascript"></script> 50 </head> 51 <body> 52 <h1>自己紹介</h1> 53 <h2>ユーザ新規登録</h2> 54 <form action="" method="post"> 55 <?php 56 echo "<ul>"; 57 foreach ($errors as $message) { 58 echo "<li>"; 59 echo "$message"; 60 echo "</li>"; 61 } 62 echo "</ul>"; 63 ?> 64 <p>カナ苗字 65 <input type="text" name="KlastName" input pattern="^[ァ-ン]+$" 66 title="全角カタカナでご入力ください。"> 67 </p> 68 <p>カナ名前 69 <input type="text" name="Kname" input pattern="^[ァ-ン]+$" 70 title="全角カタカナでご入力ください。"> 71 </p> 72 <p>苗字 73 <input type="text" name="lastName"> 74 </p> 75 <p>名前 76 <input type="text" name="name" > 77 </p> 78 <p>パスワード 79 <input id="password" type="text" name="password"> 80 </p> 81 <div id="pass_message"></div> 82 <p>パスワード確認 83 <input type="password" name="confirm_password" id="confirm_password" 84 onkeyup="setConfirmMessage(this.value);"> 85 </p> 86 <div id="pass_confirm_message"></div> 87 ここが性別のチェック-> <input type="radio" name="sex[]" value="1">88 <input type="radio" name="sex[]" value="2">89 <br> 90 生年月日<input type="date" name="bday" value="<?php echo date('Y-m-j');?>"> 91 <br> 92 <input type="submit" name="submit" value="送信"> 93 </form> 94 </body> 95</html> 96

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

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

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

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

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

guest

回答5

0

完全に蛇足ですが

type="radio" name="sex[]"

ラジオボタンにつけるnameには「[]」はつけないようにしましょう。
ラジオボタンは択一なので配列として処理する意味がありません

また、最近の傾向として「性」に対する世間からの要求が過激になっています
選択肢は

  • 指定しない

という、3種類用意したほうがよいでしょう。
(場合によっては、先に書いてあるほうが偉いという偏見を持った人が
女・男の順にしないとうるさい場合もある)

ただし「指定しない」にデフォのチェックをすると、人によっては性別入力を
スルーしてしまう場合があるので、未選択状態にしておいて未入力のバリデートをするか
更にもう一つ「未選択」という選択肢をつけてデフォにするかの工夫が必要です

投稿2018/10/02 09:07

yambejp

総合スコア114572

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

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

0

ベストアンサー

filter_input がお勧めです。

【$_GET, $_POSTなどを受け取る際の処理】
https://qiita.com/mpyw/items/2f9955db1c02eeef43ea#フィルタ関数の活用

投稿2018/10/02 07:53

kei344

総合スコア69364

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

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

miyakichi

2018/10/02 08:02

なるほど、filter_input 関数 便利ですね
kokokooooooooo

2018/10/02 08:15

これのほうがスマートに書けてよみやすいです。ありがとうございます。
guest

0

checkされていない = 未定義 となります。
つまり、未定義かどうかを調べれば良いです。

投稿2018/10/02 07:45

ssasaki

総合スコア1167

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

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

0

issetでチェックすればいいのでは?

php

1 if (!isset($_POST['sex'])) { 2 $errors['sex'] = "性別のチェックをお願いします"; 3 }

他のチェック部分も再考慮した方がいいと思いますが・・

投稿2018/10/02 07:49

編集2018/10/02 07:51
miyakichi

総合スコア297

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

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

0

以下のような感じでいかがでしょうか?

$sex = ""; if (isset($_POST['sex'])) { $sex = $_POST['sex']; }

投稿2018/10/02 07:48

tabuu

総合スコア2449

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問