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

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

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

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

解決済

PHPの入力チェックでエラーメッセージを画面遷移させずに表示させたい

hj_petricall
hj_petricall

総合スコア2

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1回答

-1評価

0クリップ

6675閲覧

投稿2020/06/24 05:52

編集2020/06/24 12:16

前提・実現したいこと

PHP、HTML、mysqlを使用し社員の情報の登録を行うページを作っています。
その際、入力チェックを行うのですが、エラーの際は画面遷移させずに上のほうに
エラーメッセージを表示させ、すべて内容がokな場合は登録完了のページに飛ぶようにしたいです。

今回の条件
・入力値が空欄、未選択の場合(空白スペースもエラー)に画面遷移させずに、上記のほうに先頭に「・」付きの赤字でエラーを出したい

・すべての項目がokの場合は「add.php」(登録完了用の画面)に値を渡して画面遷移(登録完了画面は作成済み)

・ファイルはすべて同じフォルダにある

・エラー時に入力した値は保持する

・赤字はcssを用意(これはわかるので大丈夫)

補足
・ブートストラップはまだシートを当てただけで実装はしてないです。
・赤字は別にCSSを作成します

form.php

PHP

<? // 初期化 $error = array(); // エラーメッセージ if($_POST['employee_num'] === "") { $error[] = "社員番号は必ず入力してください。"; } if($_POST['employee_name'] === "") { $error[] = "氏名は必ず入力してください。"; } if($_POST['sexual'] === "") { $error[] = "性別が選択されていません。"; } if($_POST['department'] === "") { $error[] = "所属部署が選択されていません。"; } if($_POST['phone_num'] === "") { $error[] = "電話番号は必ず入力してください。"; } if($_POST['street'] === "") { $error[] = "住所は必ず入力してください。"; } ?> <!DOCTYPE html> <html lang = "ja"> <head> <meta charset="UTF-8"> <title>新規登録画面</title> <link rel="stylesheet" href="../css/bootstrap.css"> </head> <body> <h2>新規登録</h2> // ↓ここから <?php if(isset($_POST['send'])) { if(isset($error)) { ?> <ul class="error_message"> <?php foreach($error as $value) { echo $value."<br>"; } } ?> </ul> } // ↑↑ここまでがエラーメッセージ表示枠 // ここからフォーム画面 <form method="POST" action="add.php"> <p> 社員番号: <input type="number" min="1" max="9999" name="employee_num"> </p> <p> 氏名: <input type="text" name="employee_name"> </p> <p> 性別 <select name = "sexual"> <option value="">-</option> <option value="1"></option> <option value="2"></option> </select> </p> <p> 所属部署: <select name="department"> <option value="" hidden>選択してください</option> <option value="1">システム部</option> <option value="2">営業部</option> <option value="3">総務部</option> </select> </p> <p> 生年月日: <?php echo '<select name="year">'. "\n"; $start = date('Y'); $end = date('Y') - 100; for($i = $start; $i >= $end; $i--) { echo '<option value="' .$i . '">' . $i .'</option>'. "\n"; } echo '</select>年' . "\n"; echo '<select name="month">' . "\n"; for ($i = 1; $i <= 12; $i++) { echo '<option value="' .$i . '">' . $i .'</option>'. "\n"; } echo '</select>月' . "\n"; echo '<select name="day">' . "\n"; for ($i = 1; $i <= 31; $i++) { echo '<option value="' .$i . '">' . $i .'</option>'. "\n"; } echo '</select>日' . "\n"; ?> </p> <p> 電話番号: <input type="text" name="phone_num" onKeyup="this.value=this.value.replace(/[^0-9]+/,'')"> </p> <p> 住所: <input type = "text" name="street"> </p> <input type="submit" name="send" value="登録"> </form> </body> </html>

###add.php

PHP

<?php $employee_num = (int)$_POST['employee_num']; $employee_name = $_POST['employee_name']; $sexual = (int)$_POST['sexual']; $department = (int) $_POST['department']; $year = $_POST['year']; $month = $_POST['month']; $day = $_POST['day']; $select_month = sprintf('%02d', $month); $select_day = sprintf('%02d', $day); $total = $year.$select_month.$select_day; $birthday = date("Y-m-d",strtotime($total)); $phone_num = $_POST['phone_num']; $street = $_POST['street']; require_once '\MAMP\db_config.php'; try { // DB接続 $dbh = new PDO('mysql:host=localhost;dbname=employee_db;charset=utf8', $user, $pass); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO employee (employee_num, employee_name, sexual, department, birthday, phone_num, street) VALUES (?, ?, ?, ?, ?, ?, ?)"; $stmt = $dbh->prepare($sql); $stmt->bindValue(1, $employee_num, PDO::PARAM_INT); $stmt->bindValue(2, $employee_name, PDO::PARAM_STR); $stmt->bindValue(3, $sexual, PDO::PARAM_INT); $stmt->bindValue(4, $department, PDO::PARAM_INT); $stmt->bindValue(5, $birthday, PDO::PARAM_STR); $stmt->bindValue(6, $phone_num, PDO::PARAM_STR); $stmt->bindValue(7, $street, PDO::PARAM_STR); $stmt->execute(); $dbh = null; echo "社員の登録が完了しました。<br>"; echo "<a href='index.php'>トップページへ戻る</a>"; } catch(Exception $e) { echo "エラー発生: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . "<br>"; die(); }

試したこと

登録ボタンが押されたとき、$errorに格納されていればforeachで格納されているメッセージを吐き出すというところまでの理解まではできているのですが、実装の部分でつまっています。
現状の実装状況を記述しましたので、どのように実装すればよいのかコード等でご教示いただければ幸いです。。

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。