2016-05-06 39 views
0

我正在創建一個PHP並進行驗證。我想隱藏表單並在所有驗證完成後顯示成功消息。這是我使用的代碼,你能告訴我爲什麼表單總是躲在並沒有顯示成功消息:帶有驗證和成功消息的PHP表格

 <?php 
// defining variables and set to empty values 
$nameErr = ""; 
$emailErr = ""; 
$numberErr = ""; 

$name = ""; 
$email = ""; 
$number = ""; 
$comment = ""; 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["name"])) { 
    $nameErr = "Name is required"; 
    } else { 
    $name = test_input($_POST["name"]); 
    // check if name only contains letters and whitespace 
    if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
     $nameErr = "Only letters and white space allowed"; 
    } 
    } 

    if (empty($_POST["email"])) { 
    $emailErr = "Email is required"; 
    } else { 
    $email = test_input($_POST["email"]); 
    // check if e-mail address is well-formed 
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     $emailErr = "Invalid email format"; 
    } 
    } 

    if (empty($_POST["number"])) { 
    $numberErr = "Contact Number is required"; 
    } else { 
    $number = test_input($_POST["number"]); 
    // check if number only contains letters and whitespace 
    if (!preg_match("/^[a-zA-Z ]*$/",$number)) { 
     $numberErr = "Only letters and white space allowed"; 
    } 
    } 

    if (empty($_POST["comment"])) { 
    $comment = ""; 
    } else { 
    $comment = test_input($_POST["comment"]); 
    } 

    function form_submission_success(){ 
    echo 'Form submitted'; 
    } 

    function submit_database(){ 

    } 


    form_submission_success(); 
} else { 
?> 

     <p><span class="error">* required field.</span></p> 
      <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
       Full Name: <input type="text" name="name" value="<?php echo $name;?>"> 
       <span class="error">* <?php echo $nameErr;?></span> 

       <br><br> 

       Contact E-mail: <input type="text" name="email" value="<?php echo $email;?>"> 
       <span class="error">* <?php echo $emailErr;?></span> 

       <br><br> 

       Contact Number: <input type="text" name="number" value="<?php echo $number;?>"> 
       <span class="error">* <?php echo $numberErr;?></span> 

       <br><br> 

       Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea> 
       <br><br> 

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

      <?php } ?> 

用同樣的邏輯,然後我將提交所有條目到數據庫中,但一旦所有valdiation做完了。

+0

你已經打開了錯誤報告,看看你得到任何錯誤? – Epodax

+0

是的,沒有錯誤 –

+0

@GuruMadozlii你可以告訴你輸入什麼值,我檢查了你的代碼,它顯示「表格提交」後,輸入所有字段,並按提交 –

回答

0

請試試這個,可能是你需要更多的修改,但可能是一個基本的想法

<?php// defining variables and set to empty values 
$nameErr = ""; 
$emailErr = ""; 
$numberErr = ""; 
$name = ""; 
$email = ""; 
$number = ""; 
$comment = ""; 
function test_input($data) { 
$data = trim($data); 
$data =stripslashes($data); 
$data = htmlspecialchars($data); 
return $data; 
} 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
function form_submission_success($msg = 'Form submitted'){ 
echo $msg.'<br>'; 
} 
if (empty($_POST["name"])) { 
$nameErr = "Name is required"; 
form_submission_success($nameErr); 
} else { 
$name = test_input($_POST["name"]); 
// check if name only contains letters and whitespace 
if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
$nameErr = "Only letters and white space allowed"; 
form_submission_success($nameErr); 
} 
} 
if (empty($_POST["email"])) { 
$emailErr = "Email is required"; 
form_submission_success($emailErr); 
} else { 
$email = test_input($_POST["email"]); 
// check if e-mail address is well-formed 
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
$emailErr = "Invalid email format"; 
form_submission_success($emailErr); 
} 
} 
if (empty($_POST["number"])) { 
$numberErr = "Contact Number is required"; 
form_submission_success($numberErr); 
} else { 
$number = test_input($_POST["number"]); 
// check if number only contains letters and whitespace 
if (!preg_match("/^[a-zA-Z ]*$/",$number)) { 
$numberErr = "Only letters and white space allowed"; 
form_submission_success($numberErr); 
} 
} 
if (empty($_POST["comment"])) { 
$comment = ""; 
} else { 
$comment = test_input($_POST["comment"]); 
} 
function submit_database(){ 
} 
} else { 
?> 
<p><span class="error">* required field.</span></p> 
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
Full Name: <input type="text" name="name" value="<?php echo $name;?>" 
<span class="error">* <?php echo $nameErr;?></span> 
<br><br> 
Contact E-mail: <input type="text" name="email" value="<?php echo $email;?>"> 
<span class="error">* <?php echo $emailErr;?></span> 
<br><br> 
Contact Number: <input type="text" name="number" value="<?php echo $number;?>"> 
<span class="error">* <?php echo $numberErr;?></span> 
<br><br> 
Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea> 
<br><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 
<?php } ?> 
+0

仍然無法正常工作,您能否給我一個帶驗證的PHP表單示例? –

+0

@GuruMadozlii有很多例子可以找到,請參閱參考 - http://www.w3schools.com/php/php_form_complete.asp或http://www.w3schools.com/php/showphp.asp?filename= demo_form_validation_complete –