2017-08-31 11 views
0

必須フィールド、数字のみ、有効な電子メールなどの検証プロセスを持つフィールドを作成しました。フォームの再検証と編集後の各入力の確認

提出後に同時にエラーを表示しますが、フィールドの1つだけを変更すると、エラーを受け入れ、もう一方を再検証しません。


名=エラー:必要なフィールド
電話=エラー:数字のみ
メール=エラー:いない有効なメール

私は電子メールのみを修正した後、それが受け入れ、なし提出に進みます他のものを再チェックする。 私のコードをご覧ください。事前のおかげで

<?php 
include("conn/db.php"); 
function renderForm($name ='', $tel = '', $email ='', $error='', $error2='', $error3='') 
{ 
?> 
<html > 
<head> <title>Form</title></head> 
<body> 

<?php 
if ($error != '') { 
echo $error 
} 
if ($error2 != '') { 
echo $error2; 
} 
if ($error3 != '') { 
echo $error3; 
} 
?> 

<form action="" method="post"> 

Name : <input type = "text" class = "form-control" name = "name_text" value="<?php echo $name; ?>"> <br/> 
Tel :<input type = "text" class = "form-control" name = "tel_text" value="<?php echo $tel; ?>"> <br/> 
Email :<input type ="text" class = "form-control " name = "email_text" value="<?php echo $email; ?>" > <br/> 

<input name= "submit" type="submit" value="Update" class = "btn btn-primary" > 

</form> 
</body> 
</html> 

<?php 
} 

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

$name = $_POST['name_text']; 
$tel = $_POST['tel_text']; 
$email = $_POST['email_text']; 

    if ($name== ''){ 
     $error = 'ERR: required field'; 
     } 
    if(!is_numeric($telephone)){ 
     $error2 = 'ERR: numbers only'; 
     } 
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
     $error3 = 'ERR: Email not valid'; 
     } 
    else 
    { 
    ***WILL PROCESS THE SQL QUERY *** 
    header("Location: main.php"); 
    } 

    renderForm($name, $tel , $email ,$error, $error2, $error3); 
} 
else{ 
renderForm(); 
} 

$con->close(); 
?> 
+0

'type =" email "を考慮してください。問題が何であるかをさらに説明してください。質問は不明です。 – Script47

答えて

1
<?php 
include("conn/db.php"); 
function renderForm($name ='', $tel = '', $email ='', $error='', $error2='', $error3='') 
{ 
?> 
<html > 
<head> <title>Form</title></head> 
<body> 

<?php 
if ($error != '') { 
echo $error 
} 
if ($error2 != '') { 
echo $error2; 
} 
if ($error3 != '') { 
echo $error3; 
} 
?> 

<form action="" method="post"> 

Name : <input type = "text" class = "form-control" name = "name_text" value="<?php echo $name; ?>"> <br/> 
Tel :<input type = "text" class = "form-control" name = "tel_text" value="<?php echo $tel; ?>"> <br/> 
Email :<input type ="text" class = "form-control " name = "email_text" value="<?php echo $email; ?>" > <br/> 

<input name= "submit" type="submit" value="Update" class = "btn btn-primary" > 

</form> 
</body> 
</html> 

<?php 
} 

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

$name = $_POST['name_text']; 
$tel = $_POST['tel_text']; 
$email = $_POST['email_text']; 
$is_valid = true; 
    if ($name== ''){ 
     $error = 'ERR: required field'; 
     $is_valid = false; 
    } 
    if(!is_numeric($telephone)){ 
     $error2 = 'ERR: numbers only'; 
     $is_valid = false; 
     } 
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
     $error3 = 'ERR: Email not valid'; 
     $is_valid = false; 
     } 

    if($is_valid) { 
    ***WILL PROCESS THE SQL QUERY *** 
    header("Location: main.php"); 
    } 

    renderForm($name, $tel , $email ,$error, $error2, $error3); 
} 
else{ 
renderForm(); 
} 

$con->close(); 
?> 

ちょうど小さなミスその:

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
     $error3 = 'ERR: Email not valid'; 
} else { 
    ***WILL PROCESS THE SQL QUERY *** 
    header("Location: main.php"); 
} 

あなただけの電子メールをチェックし、それがcorecctであれば、それはprocedingました。他の2つの名前と番号のチェックは含まれていませんでした。

3つすべてが正しいかどうかを確認するために小さな変数を追加しました。

関連する問題