dポイントプレゼントキャンペーン実施中!

http://income-seed.ck0.net/1000yen/demand.htm

上のページでは、テキストボックスに値を入力しなかった場合、別のエラー画面などに遷移せずに元のページにエラー表示がされます。

これと同じ仕組みを実現したいのですが、その方法論が思いつきませんので、皆様のお知恵をお借りしたいと思っています。よろしくお願いします。
具体的にコードで示して頂けたりすると非常に助かります。

A 回答 (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;
    }
  }
}
?>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

親切、丁寧にご回答いただき感謝いたします。swqamy様のPG、とても参考になりました。

やはり今回の質問内容を実現するには、FormのActionで元のページに戻すことが前提になるのですね。

勉強になりました。本当にありがとうございました。

お礼日時:2007/08/10 02:37

[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に不備がありました。
すみません。
修正したコードは↑です。

この回答への補足

クラスを使って同じようなことができるということを聞いたのですが、どのようにすればいいのでしょうか。

初心者の質問で大変申し訳ないですが、よろしければなにかコメントいただければと思います。

補足日時:2007/08/04 23:22
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
やりたかったことを実現することができました。

お礼日時:2007/08/04 22:30

[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>
簡単ですがこんな感じです。
    • good
    • 0

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>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
やりたかったことが実現できました。

お礼日時:2007/08/04 22:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!