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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

1886閲覧

送信ボタン押下にエラー表示させる方法

takeke

総合スコア60

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/09/27 08:26

phpでフォームを作成しています。フォーム画面でフォームに入力、送信し、フォーム内容が空白などの不具合がある場合には、ページ移動する前にエラーとエラーの内容を出すようにしたいのですが、どのような記述を書けばいいのかがよくわからないのでアドバイスなどいただけたら幸いです。

現在の記述です。if(isset($_POST['send])){}で判定するのかな?とは思っているのですが全く効いていない模様で、ページ遷移してしまいます。

php

1<?php 2if(isset($_POST['send'])){ 3 $err = array(); 4 if(!$_POST['name_form']) { 5 $err['name_form'] = '名前を入力して下さい'; 6 } 7} 8?> 9<!DOCTYPE html> 10<html lang="ja"> 11<head> 12 <meta charset="UTF-8"> 13 <title>フォームPHP&mysql</title> 14 <link rel="stylesheet" type="text/css" href="css/task_ex1.css"> 15</head> 16<body> 17 <legend class="form form_width"><h1 class="title_form">フォーム</h1> 18 <form name="form" class="page" id="page" action="php/task_ex1_list.php" method="post"> 19 <div> 20 <label for="textForm">名前:</label> 21 <input type="text" placeholder="名前入力してください" size="50" maxlength="50" name="name_form" id="textForm"> 22 </div> 23 <div> 24 <label for="radioForm" class="gender">性別:</label> 25 <label for="gender1">男性</label><input type="radio" name="gender" value="男性" id="gender1"> 26 <label for="gender2">女性</label><input type="radio" name="gender" value="女性" id="gender2"> 27 <label for="gender3">その他</label><input type="radio" name="gender" value="その他" id="gender3" checked="checked"> 28 </div> 29 <div class="age"> 30 年齢:<select name="age" id="selbox"> 31 <option value="~20代">~20代</option> 32 <option value="30代~40代">30代~40代</option> 33 <option value="50代~60代">50代~60代</option> 34 <option value="70代~">70代~</option> 35 </select> 36 </div> 37 <div class="questionnaire"> 38 アンケート:好きな色(複数選択可) 39 <input type="checkbox" name="q1[]" value="" id="color1" ><label for="color1"></label> 40 <input type="checkbox" name="q1[]" value="" id="color2" ><label for="color2"></label> 41 <input type="checkbox" name="q1[]" value="" id="color3" ><label for="color3"></label> 42 <input type="checkbox" name="q1[]" value="" id="color4" ><label for="color4"></label> 43 <input type="checkbox" name="q1[]" value="" id="color5" ><label for="color5"></label> 44 </div> 45 <div class="free_space"> 46 自由記入欄:<br> 47 <textarea id="freeSpace" name="free_space" cols="50" rows="6" maxlength="250" placeholder="ご自由にご記入して下さい" ></textarea> 48 </div> 49 <div class="btn"> 50 <input class="button" type="submit" id="button" value="登録する" name="send" > 51 <input class="button" type="reset" value="クリア"> 52 <input class="button" type="button" value="一覧画面" onClick="location.href='php/task_ex1_list.php'"> 53 54 </div> 55 </form> 56 </legend> 57</body> 58</html>

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

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

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

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

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

x_x

2018/09/27 08:34

PHPはサーバー側の処理のため、動いている時点でもう遷移しています。JavaScriptの処理ではないのでしょうか?
takeke

2018/09/27 08:52

コメントありがとうございます!あ、、、なるほど、できたらJavaScriptやjQueryなしでやりたかったのですが、エラーを表示させるとなるとこの場合JavaScriptが適切ということですよね?
guest

回答3

0

いちばん手抜きな方法は、<input>required属性をかけることです。

html

1<input type="text" placeholder="名前入力してください" size="50" maxlength="50" required name="name_form" id="textForm">

iOS 10.3以上、IE 10以上を含め多くのブラウザで、これだけで入力のないフォームの送信を阻止できるようになります。

ただし、意図的に不適切な入力をしようとする場合には無力ですので、サーバサイドでのチェックも合わせて行う必要があります。

投稿2018/09/27 08:39

maisumakun

総合スコア145183

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

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

takeke

2018/09/27 09:00

ありがとうございます! それだけでいけるんですね!できたら、ページ遷移前にエラー表示させたいんですが、その場合はPHPとhtmlとcssだけじゃ無理でしょうか?
maisumakun

2018/09/27 09:01

はい、requiredによるチェックは遷移前に入ります。
takeke

2018/09/30 17:17

ベストアンサー迷ったのですが、エラーメッセージも少し変えたいとも思ってたので、3番の方にさせていただきましたm(_ _)m しかし、こちらは特に表示に拘らなければとても便利なんですね!勉強になりました!ありがとうございましたm(_ _)m
guest

0

ベストアンサー

validationengineというのがあります
フォーカスアウト時にバルーンが出るよくみるあれです
ぐぐってみてください。
割と簡単で見栄えもよいです
http://www.webdesign-fan.com/jquery-validation-engine

検索すると使い方は沢山出てくると思います。
これだけでは不十分なのでサーバ側でチェックも必要となると思います
(ほぼValidationengineではじかれると思いますが)
電話番号やメールチェックなども割りとそろっていたはずです。

投稿2018/09/27 10:09

ms5025

総合スコア292

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

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

takeke

2018/09/30 17:11

かいとうありがとうございます! とても参考になり、メッセージも変更できたので助かりましたありがとうございました!
guest

0

PHP側に送った後確認ページを表示するのが妥当ですね
確認ページではバリデーションを通ったデータはセッションで持てば
修正が必要な箇所だけ再入力を促すことが可能です

遷移しないでやるならすでに回答がある通りrequiredかpattern
もしくはjavascriptを駆使して処理します

投稿2018/09/27 08:54

yambejp

総合スコア114767

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

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

takeke

2018/09/27 09:11

回答ありがとうございます! ということは、このページの次に確認ページを一つ用意するんですよね?それか、このページの送信先が一覧画面なんですが、DBに登録する前に、POSTを確認して、不備がある場合には強制的にこの登録画面にエラー表示と一緒に遷移させることってできますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問