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

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

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

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

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

受付中

PHPでフォームのエラー出力が全部出力されてしまいます。

dog57
dog57

総合スコア0

PHP

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

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

2回答

0評価

1クリップ

5閲覧

投稿2017/11/26 09:15

編集2022/01/12 10:55

PHPでフォームのエラー出力が全部出力されてしまいます。

例えば、電話番号の文字数が10文字or11文字ではなかったときは、それに関するエラーのみ出力させる。
ということを行いたいです。

現状では電話番号のエラーに関してはすべて出力されてしまいます。
どのようにしてそれぞれのエラーを出力されるようにしたらよろしいでしょうか?

registration.php(新規登録フォーム) PHPの部分のみ

php

<?php session_start(); if (count($_SESSION['errorMsg']) >= 1) { foreach ($_SESSION['errorMsg'] as $message) { echo $message; echo "<br>"; } echo ""; } ?>

confirm.php(確認フォーム) PHPの部分のみ

php

<?php session_start(); $keys = array( 'name', 'email', 'password', 'tel', 'prefectures', 'hobby', 'gender', 'contact' ); // POST で受けたキー値と同名の変数に値を代入(可変変数) foreach($keys as $key) { $$key = $_POST[$key]; } // // 未入力チェック // // エラーメッセージの配列の初期化 $errorMsg = array(); // 名前の未入力チェック if (empty($name)) { $errorMsg[] = "名前を入力してください。"; } // メールアドレスの未入力チェック if (empty($email)) { $errorMsg[] = "メールアドレスを入力してください。"; } // パスワードの未入力チェック if (empty($password)) { $errorMsg[] = "パスワードを入力してください。"; } // 電話番号の未入力チェック if (empty($tel)) { $errorMsg[] = "電話番号を入力してください。"; } // 都道府県の未入力チェック if ($prefectures == "選択") { $errorMsg[] = "都道府県を選択してください。"; } // // 文字数チェック // // パスワード文字数チェック(8文字以上か) if (preg_match("/^[a-zA-Z1-9]{1,7}$/", $password)) { $errorMsg[] = "パスワードは8文字以上で入力してください。"; } // 電話番号の文字数チェック(10 or 11文字) if (!preg_match("/0[0-9]{9,10}/", $tel)) { $errorMsg[] = "電話番号は10文字か11文字で入力してください。"; } // 電話番号の形式チェック if (!preg_match("/ ^(0[1-9]{1}[1-9]{0,2}) ([0-9]{2,4}) ([0-9]{0,4})$ /", $tel)) { $errorMsg[] = "電話番号の形式が違います。"; } if (count($errorMsg) >= 1) { $_SESSION['errorMsg'] = $errorMsg; foreach ($errorMsg as $error) { echo $error; } // 新規登録フォームへリダイレクト処理 header("location: registration.php"); exit(); } else { session_destroy(); } ?>

入力フォームの出力部分のソースコード(registration.php) 新規登録フォーム

php

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>新規登録フォーム</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" media="screen"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css"> </head> <body> <form class="form-horizontal" action="confirm.php" method="post"> <fieldset> <!-- Form Name --> <legend style=background-color:#65ace4;><h1 style=text-align:center;>新規登録フォーム</h1></legend> <!-- パンくずリスト--> <ol class="breadcrumb"> <li><a href="http://192.168.33.15"><span class="glyphicon glyphicon-home" aria-hidden="true"></span>トップ</a></li> <li class="active">新規登録フォーム</li> </ol> <div class="container"> <!-- Text input 名前--> <div class="form-group" style="margin-top:30px;"> <label class="col-md-4 control-label" for="name">氏名 <span class="label label-danger">必須</span></label> <div class="col-md-4"> <input name="name" class="form-control input-md" id="name" type="text" placeholder="例:鈴木太郎"> </div> </div> <!-- Text input メールアドレス--> <div class="form-group"> <label class="col-md-4 control-label" for="email">メールアドレス <span class="label label-danger">必須</span></label> <div class="col-md-4"> <input name="email" class="form-control input-md" id="email" type="email" placeholder="例:suzuki.taro@gmail.com"> </div> </div> <!-- Text input パスワード--> <div class="form-group"> <label class="col-md-4 control-label" for="password">パスワード <span class="label label-danger">必須</span></label> <div class="col-md-4"> <input name="password" class="form-control input-md" id="password" type="password" placeholder="パスワード"> </div> </div> <!-- Text input 電話番号 --> <div class="form-group"> <label class="col-md-4 control-label" for="tel">電話番号 <span class="label label-danger">必須</span></label> <div class="col-md-4"> <input name="tel" class="form-control input-md" id="tel" type="tel" placeholder="09011112222 ハイフンなし"> </div> </div> <!-- Select Basic 都道府県 --> <div class="form-group"> <label class="col-md-4 control-label" for="prefectures">都道府県 <span class="label label-danger">必須</span></label> <div class="col-md-4"> <select name="prefectures" class="form-control" id="prefectures"> <option value="選択">選択</option> <option value="東京">東京</option> <option value="名古屋">名古屋</option> <option value="大阪">大阪</option> <option value="その他">その他</option> </select> </div> </div> <!-- インラインチェックボックス 趣味 --> <div class="form-group"> <label class="control-label col-md-4" for="checkbox">趣味 <span class="label label-info">任意</span></label> <div class="col-md-4"> <div class="checkbox"> <label class="checkbox-inline"> <input name="hobby[]" type="checkbox" value="野球"> 野球 </label> <label class="checkbox-inline"> <input name="hobby[]" type="checkbox" value="サッカー"> サッカー </label> </div> </div> </div> <!-- インラインラジオボタン 性別 --> <div class="form-group"> <label class="control-label col-md-4" for="checkbox">性別 <span class="label label-info">任意</span></label> <div class="col-md-4"> <div class="radio-inline" name="gender"> <input name"gender" type="radio" value="男性" name="gender" id="man">男性 </div> <div class="radio-inline"> <input name"gender" type="radio" value="女性" name="gender" id="woman">女性 </div> </div> </div> <!-- テキストエリア お問い合わせ --> <div class="form-group"> <label class="col-md-4 control-label" for="contact">お問い合わせ <span class="label label-info">任意</span></label> <div class="col-md-4"> <textarea name="contact" placeholder="お問い合わせ" rows="3" class="form-control" id="contact"></textarea> </div> </div> <!-- Button 送信ボタン --> <div class="form-group"> <label class="col-md-4 control-label" for="singlebutton"></label> <div class="col-sm-offset-5 col-sm-7 col-xs-offset-4 col-xs-8"> <a href="http://192.168.33.15"><button type="button" name="singlebutton" class="btn btn-primary" id="singlebutton">戻る</button></a> <button name="singlebutton" class="btn btn-primary" id="singlebutton">確認する</button> </div> </div> </div> </fieldset> </form> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> </body> </html>

イメージ説明

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

m.ts10806
m.ts10806

2017/11/26 09:42

入力フォームの出力部分のソースコードはどうなっていますか?
dog57
dog57

2017/11/26 09:47

追記いたしました。
gouf
gouf

2017/11/26 09:53

電話番号の検査: たとえば「\[0-9\]{2,3}-\?\[0-9\]{4}-\?\[0-9\]{4}」と書いた場合はどうなりますか\? \( https://regex101\.com/ で試してみると、記述した正規表現の解説が見られます\)
dog57
dog57

2017/11/26 10:20

\[0-9\]{2,3}-\?\[0-9\]{4}-\?\[0-9\]{4} を書いてみたとろこ上手く反映されましたが、なんと出力したら良いですかね?

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

PHP

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

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。