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

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

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

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

1842閲覧

Laravel5.4 ラジオボタン未選択、という情報のPOST

YO14

総合スコア45

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2019/04/16 05:40

実現したいこと

名前、パスワードを入力するボックスと、性別を選択するラジオボタンを設置し、
各所を入力・選択のうえ送信ボタンを押すと、同じ画面に再アクセスして、入力・選択内容が表示される。
但し、性別ラジオボタンについては、選択せずに送信した場合は「選択なし」と表示する。
(男性を選択した場合は1、女性の場合は2がvalueとなる)

できていないこと

性別ラジオボタンを選択せずに送信した場合、
「Undefined index:sex」とエラーが出る。

ソースコード

Controller

PHP

1public function registration() 2 3 { 4 if(isset($_POST['name'])){ 5 $inputs = ['name' => $_POST['name'], 'loginpassword' => $_POST['loginpassword'], 'sex' => $_POST['sex']]; 6 return view('result', compact('inputs')); 7 } 8 else{ 9 return view('main'); 10 } 11 }

result.blade.php

PHP

1<table class="table table-striped"> 2<tr><td>id</td><td>{{$inputs["name"]}}</td></tr> 3<tr><td>パスワード</td><td>{{$inputs["loginpassword"]}}</td></tr> 4<tr><td>権限</td><td>@if(empty($inputs["sex"]))'指定なし' 5@elseif($inputs["sex"]=="1")'男性' 6@elseif($inputs["sex"]=="2")'女性' 7@endif 8</td> 9</tr> 10</table>

result.blade.phpで、$inputs['sex']がemptyならば…と条件分岐を設定しているつもりなのですが、
そもそもviewに、$inputs['sex']自体を渡せていないのかなと思っています。
どなたかお知恵をお貸しいただければと思います宜しくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

一番手っ取り早いのは$_POST['sex']をやめて

PHP

1filter_input(INPUT_POST,'sex')

とすることです。

サーバー側で処理をしないならデフォルト値をhtml上に書いておくこと

php

1<?PHP 2print_r($_POST); 3?> 4<form method="post"> 5<input type="radio" name="sex" value="" checked style="display:none"> 6<label><input type="radio" name="sex" value="1" ></label> 7<label><input type="radio" name="sex" value="2" ></label> 8<input type="submit" value="send"> 9</form>

もしくは同じ名前はあとから書いたほうが優先されるのでこうでも

PHP

1<?PHP 2print_r($_POST); 3?> 4<form method="post"> 5<input type="hidden" name="sex" value=""> 6<label><input type="radio" name="sex" value="1" ></label> 7<label><input type="radio" name="sex" value="2" ></label> 8<input type="submit" value="send"> 9</form>

投稿2019/04/16 05:53

yambejp

総合スコア114572

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

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

YO14

2019/04/16 06:27

教えていただいたfilter_input関数を使用して、 $sex = filter_input[INPUT_POST, 'sex']; というように別な変数に格納した上で、return viewすることによって、 値が渡せるようになりました。 また、ラジオボタン未選択だと、上記は$sex = nullになっていたので、 result.blade.phpでの判定で @if($sex == null)'未選択' とすることで、実画面でも'未選択'と表示されるようになりました。 最初に私が記載した$_POST['sex']では、ラジオボタンが未選択だと、nullではなかった(false?)ということなのでしょうか?
yambejp

2019/04/16 06:33

> filter_input[INPUT_POST, 'sex']; 転記ミスだとは思いますが filter_input(INPUT_POST, 'sex')です filter_inputはバリデーターを兼ねています。 なにもオプションをしていしなければ、データのある無しくらいしか判断しません データがあるときはそのデータ、ないときはnull バリデートで値が不正だと判断された場合はfalseを返します。 またdefault指定をすればその値を返すことも可能です
YO14

2019/04/16 07:27

転記ミスです。失礼いたしました。 詳細にご説明いただきありがとうございました。
guest

0

先にコントローラで「$_POST['sex']」を参照して、そこでエラーになってますよ

投稿2019/04/16 05:48

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

YO14

2019/04/16 06:11

すみません、実際には、値を入力するblade.phpがあり、 getによる初回アクセス時は、値入力blade.phpにアクセスし、そこからresult.blade.phpに値を返す、という流れになっています。 ご指摘に対する回答になっていますでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問