1

各テキストボックスの下にエラーが表示されているフィールドに対してのみ、エラー表示を動的にする方法はありますか。

私が通常使用する は、1 つのフィールドが空の場合、すべてのフィールドに対して 1 つのエラーのみを表示します...

ありがとう

          if (isset($_POST['submit'])) {

    $a = mysql_real_escape_string($_POST      ['a']);

   $b = mysql_real_escape_string($_POST       ['b']);

    $c = mysql_real_escape_string($_POST      ['c']);

    $d = mysql_real_escape_string($_POST      ['d']);

    $e = mysql_real_escape_string($_POST      ['e']);


if (($a == "") ||  ($b == "") || ($c == "") ||        ($d == "") || ($e == "")) {

               echo "<div id=\"content\" >" ;
               echo "<div class=\"error\" >" ;  
               echo "empty"; 
               echo "</div>";
               echo "</div>";
            } else { 

 $query = "INSERT INTO user (a, b, c, d, e)
                   VALUES ($a, $b, $c, $d, $e)";
                   mysql_query($query);          


                  }
             }

             ?>

    Enter Texts <br/>
     <form action="<?php echo $_SERVER        ['PHP_SELF']; ?>" method="post"> 

 A:<input type="text"  name="a" ><br/>
 B:<input type="text"  name="b" ><br/>
 C:<input type="text"  name="c" ><br/>
 D:<input type="text"  name="d" ><br/>
 E:<input type="text"  name="e" ><br/>

                    <input type="submit" name           ="submit" value="Go"/> 
     </form>

ありがとうございました。

4

3 に答える 3

0

これを行う別の方法は、エラー配列をチェックして構築し、エラー配列が空の場合はクエリを実行することです。

<?php
//Check form was posted
if($_SERVER['REQUEST_METHOD']=='POST'){
    //Pre build allowed array
    $allowed=array('a','b','c','d','e','submit');
    //Pre build errors array
    $errors=array('A was not set',
                  'B was not set',
                  'C was not set',
                  'D was not set',
                  'E was not set');
    //Create Blank error array    
    $error=array();
    //Loop through the POST
    foreach($_POST as $key=>$value){
        //If key is in allowed array
        if(in_array($key,$allowed)){
            //Check its at good length
            if(strlen(trim($value)) >= 1){
                //Assign variable variable the key and value + escape
                $$key = mysql_real_escape_string(trim($value));
            }else{
                //Assign key/value null
                $$key = null;
                //Assign the error from the errors array to the output error array
                $error[$key] = $errors[array_search($key,$allowed)];
            }
        }else{
            $error=array('Rouge POST key');
        }
    }

    //If all is good do query
    if(empty($error)){
        $query = "INSERT INTO user (a, b, c, d, e)
                   VALUES ($a, $b, $c, $d, $e)";
        mysql_query($query);
    }

}?>

Enter Texts <br/>
<form action="" method="post"> 

 A:<input type="text"  name="a" ><?php echo (isset($error['a'])?$error['a']:null)?><br/>
 B:<input type="text"  name="b" ><?php echo (isset($error['b'])?$error['b']:null)?><br/>
 C:<input type="text"  name="c" ><?php echo (isset($error['c'])?$error['c']:null)?><br/>
 D:<input type="text"  name="d" ><?php echo (isset($error['d'])?$error['d']:null)?><br/>
 E:<input type="text"  name="e" ><?php echo (isset($error['e'])?$error['e']:null)?><br/>
 <input type="submit" name="submit" value="Go"/> 
</form>
于 2012-05-09T07:16:14.463 に答える
0

すべての変数を一度に($a == "") || ($b == "") || ($c == "") || ($d == "") || ($e == "")チェックする代わりに、一度に 1 つずつチェックして、個々のエラー変数を設定します。これらを使用して、入力フィールドの近くにエラー メッセージを表示します。

例えば:

if ( $a == "" ) { $errorA = true; }

A:<input type="text"  name="a" ><br/>
<?php print ($errorA ? '<span class="error">A is empty.</span><br/>' : ''); ?>

フォームが送信されないようにするには、次の行を使用できます。

$error['A'] = $error['B'] = $error['C'] = .... = $error['Z'] = 0;    
if ( $a == "" ) { $error['A'] = 1; }
if ( array_sum($error) > 0 ) {
  // do not submit!
}

A:<input type="text"  name="a" ><br/>
<?php print ($error['A'] ? '<span class="error">A is empty.</span><br/>' : ''); ?>

または、次のように、より広範なエラー変数を設定するだけです。

$error = false;
if ( $a == "" ) { $errorA = true; $error = true; }
if ( $b == "" ) { $errorB = true; $error = true; }

if ( !$error ) { //submit form 
}

A:<input type="text"  name="a" ><br/>
<?php print ($errorA ? '<span class="error">A is empty.</span><br/>' : ''); ?>
于 2012-05-09T06:49:47.010 に答える
0

上部にエラーを表示する代わりに、各フィールドに次のコードを添付します。フォームとアクション コードが同じページにある場合、フォームの読み込み時にエラーは表示されません。

次のようなことを試してください:

A:<input type="text"  name="a" ><br />
<?php if( isset($_POST['a']) && trim($_POST['a']) == '' ) { echo 'This field is required'; } ?>

B:<input type="text"  name="b" ><br/>
<?php if( isset($_POST['b']) && trim($_POST['b']) == '' ) { echo 'This field is required'; } ?>

C:<input type="text"  name="c" ><br/>
<?php if( isset($_POST['c']) && trim($_POST['c']) == '' ) { echo 'This field is required'; } ?>

D:<input type="text"  name="d" ><br/>
<?php if( isset($_POST['d']) && trim($_POST['d']) == '' ) { echo 'This field is required'; } ?>

E:<input type="text"  name="e" ><br/>   
<?php if( isset($_POST['a']) && trim($_POST['a']) == '' ) { echo 'This field is required'; } ?>
于 2012-05-09T06:57:30.457 に答える