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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

解決済

1回答

544閲覧

検索機能の実装でエラーが発生!

fhattori121101

総合スコア1

Laravel 6

Laravel 6は、オープンソースなPHPのフレームワーク。Webアプリケーションの開発に適しており、バージョン6はLTSです。5.8での向上に加えて、セマンティックバージョニングの採用やLaravel Vaporとのコンパチビリティなどが変更されています。

PHP

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

0クリップ

投稿2022/04/10 04:26

編集2022/04/10 04:46

前提

プログラミング初心者です!
Laravelを用いてWebアプリケーションの開発をしていました。

検索機能を実装したいのですが、「性別」のラジオボタンに何も入力せずに検索するとエラーが起きてしまいます。

改善案として
①ラジオボタンに初期値を持たせる
②性別が入力されていないときにエラー文を出力する
という2つの方法を使おうとアプローチしたのですが、自力では解決できませんでした。

実現したいこと

①ラジオボタンに初期値を持たせる
②性別が入力されていないときにエラー文を出力する
のどちらかでいいので実装して、エラーを取り除きたいです!

発生している問題・エラーメッセージ

Undefined array key "sex"

該当のソースコード

php

1<!DOCTYPE HTML> 2@extends('layouts.app') 3 4@section('content') 5 <head> 6 <title>profile_search</title> 7 </head> 8 <body> 9 <h1>ユーザー検索</h2> 10 <form action="/profiles/search" method="get"> 11 @csrf 12 <div class="search_sex"> 13 性別: 14 <input type="radio" name="profile[sex]" value="男性">男性 15 <input type="radio" name="profile[sex]" value="女性">女性 16 <input type="radio" name="profile[sex]" value="その他">その他 17 </div> 18 <div class="search_prefecture"> 19 都道府県:<select name="profile[prefecture_id]" > 20 @foreach($prefectures as $prefecture) 21 <option value="{{ $prefecture->id }}">{{ $prefecture->name}}</option> 22 @endforeach 23 </div> 24 <input type="submit" value="検索する"> 25 </form> 26 @if(isset($profiles)) 27 <table class="table"> 28 <tr> 29 <th>ニックネーム</th><th>性別</th><th>都道府県</th> 30 </tr> 31 @foreach($profiles as $profile) 32 <tr> 33 <td>{{$profile->nickname}}</td><td>{{$profile->sex}}</td><td>{{$profile->prefecture->name}}</td> 34 </tr> 35 @endforeach 36 </table> 37 @endif 38 <div class="back">[<a href="/">戻る</a>]</div> 39 40 </body> 41@endsection 42

試したこと

①ラジオボタンに初期値を持たせる
→ネットで調べましたが分からずじまい、、、
②性別が入力されていないときにエラー文を出力する
→変数に対してバリデーション等行っている記事を見つけましたが、検索結果を変数に格納してないし、やるとしてもif文の中にif文ができてしまうのでは?

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

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

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

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

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

guest

回答1

0

ベストアンサー

①ラジオボタンに初期値を持たせる

checked属性を入れればそれが初期選択値になります。HTMLの問題。
https://developer.mozilla.org/ja/docs/Web/HTML/Element/input/radio

②性別が入力されていないときにエラー文を出力する

Laravelなら普通にバリデータでrequiredつけてあげれば良いのでは。
https://readouble.com/laravel/6.x/ja/validation.html

いずれにしても「変数に格納していないからできない」「ifの中にifが出来てしまう」
等のコメントから、PHPそのもの、ひいては「Web」「オブジェクト指向」についてきちんとおさえた上で開発しているわけではないように見受けられます。
Laravelは「Web職人のための」という謳い文句がついているため、初心者向けのフレームワークではないです(そもそもPHPの殆どのフレームワークはPHPを中級程度には使えないと厳しいと思います。)

投稿2022/04/10 07:04

編集2022/04/10 07:06
m.ts10806

総合スコア80854

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

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

fhattori121101

2022/04/12 05:15

ご回答頂き、ありがとうございます! 教えていただいたものを実装したら、うまく機能するようになりました! ご指摘いただいた通り、きちんと理解せず開発をしている部分はありますね(:_;)スクールで少し学んだ程度というのもありますが、、 もしよろしければ、そういったプログラミングの基礎を勉強できる教材等ありましたら教えていただきたいです!(現在はProgateを用いて少し勉強していますが、、)
m.ts10806

2022/04/12 05:42

本当に解決で良いのでしょうか。 私自身、多くが公式ドキュメントとアウトプットの連続で身につけてきたタイプなのであまり「教材」というものを利用したことはないです。 いずれにしても公式ドキュメントを辞書代わりに使えるようにはなったほうが良いですし、チュートリアルもあったりするので、そちらを確認されたほうが良いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問