http://income-seed.ck0.net/1000yen/demand.htm
上のページでは、テキストボックスに値を入力しなかった場合、別のエラー画面などに遷移せずに元のページにエラー表示がされます。
これと同じ仕組みを実現したいのですが、その方法論が思いつきませんので、皆様のお知恵をお借りしたいと思っています。よろしくお願いします。
具体的にコードで示して頂けたりすると非常に助かります。
No.4ベストアンサー
- 回答日時:
返信が遅くなりすみません
簡易版ですがサンプルPGを作成しました。NULLチェックと未入力チェックあと簡易版のメアドチェックです。
使用方法等サンプルソースは下記です。
<?php
//宣言
$sample = new CHK_SAMPLE();
//メソッド実行
$error = $sample->CHK_NULL($_POST['name'],$_POST['mail']);
?>
<html>
<head><title>サンプル</title></head>
<body>
<form action="sample.php" method="POST">
<font color="red">
<?php
if($error!="OK")
print $error;
}
?>
</font><br>
<input type="text" name="name">
<input type="text" name="mail">
<?php
if($error!="OK"){//エラーがあるとき
print "<input type=\"submit\" name=\"送信\">";
print "<input type=\"reset\" name=\"リセット\">";
}else{
print "<input type=\"submit\" name=\"送信\">";
}
?>
</form>
</body>
</html>
//ここからクラス
<?php
class CHK_SAMPLE{
private $ERROR_MSG1 = "名前とメールアドレスが未入力です。";
private $ERROR_MSG2 = "名前が未入力です。";
private $ERROR_MSG3 = "メールアドレスが未入力です。";
private $ERROR_MSG4 = "メールアドレスが間違っています。";
private $KEKKA = "OK";//TRUEの場合の戻り値
//NULL・空白チェック・メアドチェック
/*----------------------------------------
引数1:名前
引数2:メールアドレス
戻り値:「OK」メッセージ or エラーメッセージ
----------------------------------------*/
public function CHK_NULL($CNAME,$CMAIL){
if($CNAME!=NULL){
if($CMAIL!=NULL){
//名前・メールアドレスがNULLでない
if($CNAME!=""){
if($CMAIL!=""){
//名前・メールアドレスが空白でない
//メアドチェックも行う
if($this->CHK_MAIL($CMAIL)=="OK"){
return $this->KEKKA;
}else{
return $this->CHK_MAIL($CMAIL);
}
}else{
return $this->ERROR_MSG3;
}
}else{
//メールアドレスも空白
if($CMAIL!=""){
return $this->ERROR_MSG2;
}else{
return $this->ERROR_MSG1;
}
}
}else{
return $this->ERROR_MSG3;
}
}else{
//メールアドレスもNULL
if($CMAIL!=NULL){
return $this->ERROR_MSG2;
}else{
return $this->ERROR_MSG1;
}
}
}
//メアドチェック(簡易)
/*----------------------------------------
引数1:メールアドレス
戻り値:「OK」メッセージ or エラーメッセージ
文字列「*****@******」に一致するか
※「*」は任意の文字列
----------------------------------------*/
public function CHK_MAIL($CMAIL){
if(preg_match("/^[^.]+\@[^.]+$/i", $CMAIL)){
return $this->KEKKA;
}else{
return $this->ERROR_MSG4;
}
}
}
?>
ご回答ありがとうございます。
親切、丁寧にご回答いただき感謝いたします。swqamy様のPG、とても参考になりました。
やはり今回の質問内容を実現するには、FormのActionで元のページに戻すことが前提になるのですね。
勉強になりました。本当にありがとうございました。
No.3
- 回答日時:
[sample.php]
<?php
if($_POST['name']!=""){//POSTで受け取った名前が未入力でない
if($_POST['mail']!=""){//POSTで受け取ったメアドが未入力でない
//画面遷移処理
}else{
$error="メールアドレスが未入力です。";
}
}else{
if($_POST['mail']==""){
$error="名前とメールアドレスが未入力です。";
}else{
$error="名前が未入力です。";
}
}
?>
<html>
<head><title>サンプル</title></head>
<body>
<from action="sample.php" method="POST">
<?= $error ?>
<input type="text" name="name">
<input type="text" name="mail">
<?php
if($error!=""){//エラーがあるとき
print "<input type=\"submit\" name=\"送信\">";
print "<input type=\"reset\" name=\"リセット\">";
}else{
print "<input type=\"submit\" name=\"送信\">
}
?>
</form>
</body>
</html>
回答したPGに不備がありました。
すみません。
修正したコードは↑です。
この回答への補足
クラスを使って同じようなことができるということを聞いたのですが、どのようにすればいいのでしょうか。
初心者の質問で大変申し訳ないですが、よろしければなにかコメントいただければと思います。
No.2
- 回答日時:
[sample.php]
<?php
if($_POST['name']!=""){
if($_POST['mail']!=""){
//画面遷移処理
}else{
$error="メールアドレスが未入力です。";
}
}else{
if($_POST['mail']==""){
$error="名前とメールアドレスが未入力です。";
}else{
$error="名前が未入力です。";
}
}
?>
<html>
<head><title>サンプル</title></head>
<body>
<from action="sample.php" method="POST">
<?= $error ?>
<input type="text" name="name">
<input type="text" name="mail">
<input type="submit" name="送信">
<?php
if($error!=""){
print "<input type=\"submit\" name=\"送信\">";
print "<input type=\"reset\" name=\"リセット\">";
}
?>
</form>
</body>
</html>
簡単ですがこんな感じです。
No.1
- 回答日時:
formで同じページに飛ばして、そこでエラー判定しているのではないでしょうか。
<?php
if($_POST['submit'] != ""){
if($_POST['name'] != "") $error_name = "名前がありません。";
if($_POST['mail'] != "") $error_mail = "メルアドがありません。";
if(($error_name == "" || $error_mail)){
送信完了処理
}
}
?>
<from action="">
<input name="name">
<input name="mail">
<送信ボタン>
</form>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
PHPで、エラーがない場合のみ画面遷移させたい
PHP
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
PHP ボタンが押されたら処理を...
-
サーバへのアップロードが出来...
-
<input type="hidden" >で配列...
-
PHPで、ボタンを押すと同じペー...
-
チェックボックスを使った複数...
-
PHPで掲示板を作りたいです。
-
フォームへの前回入力値をクリ...
-
連想配列の操作がうまくいかない
-
PHPのお問い合わせフォームが動...
-
PHPを勉強中の専門学生です。 ...
-
php mysql でチェックボックス...
-
降順ソートができません。
-
明細行の複数ボタンの処理に関して
-
検索時の選択内容を保持する方法
-
PHPで画像の渡しが上手く行きま...
-
laravelを利用してコントロール...
-
PHPからHTMLへの変数の受け...
-
foreachがうまく動かない
-
送信ボタンでカウントアップ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
PHP ボタンが押されたら処理を...
-
<input type="hidden" >で配列...
-
検索時の選択内容を保持する方法
-
フォームへの前回入力値をクリ...
-
フォームでのリセットを使う方法
-
PHPで画像の渡しが上手く行きま...
-
画面が更新されてもチェックボ...
-
フォームボタンを押すたびに数...
-
ラジオボタンをsessionで使いたい
-
テキストボックスに初期値を入れる
-
syntax error, unexpected '}' ...
-
【HTML(PHP?)】複数のフォーム...
-
チェックボックスの必須項目指定
-
HTMLのリンクをクリックするこ...
-
DBの値をチェックボックスに反...
-
複数チェックボックスの入力制...
-
チェックボックスのvalueに変数...
-
input nameで日本語を使うと
-
POSTデータのNAME属性をVALUEに...
おすすめ情報