2014-11-23 146 views
1

這是一個簡單的代碼,但我不明白我的錯誤在哪裏。我想在表單下顯示成功消息,當我點擊提交,但消息始終保持在那裏。當我在窗體所在的頁面中輸入消息時,就是在窗體下面。只有當查詢成功時,如何將其取出?如何僅當我提交查詢時顯示成功消息?

<?php 
    $posted = false; 
    if(isset($_POST['add'])) 
    { 
    $posted = true; 
    $email = $_POST['email']; 
    $name = $_POST['name']; 
    $rate = $_POST['rate']; 
    $comment = $_POST['comment']; 
    $dth = date("Y-m-d H:i:s"); 
    $q = "INSERT INTO reviews(email, name, rate, comment, date_created) VALUES ('$email', '$name', '$rate', '$comment', '$dth')"; 
    $k = mysqli_query($con,$q); 
    } 
?> 
<body> 
<h1>Leave a review</h1> 
<div class="error-conteiner"> 

</div> 
<div class="clear"></div> 
<form action="" method="post" class="form-content"> 
    <div class="left"> 
     <div class="field"> 
      <label>E-mail <span class="required">*</span></label> 
      <input type="text" value="" name="email" class="required-field" data-validate="email"/> 
     </div> 
     <div class="clear"></div> 
     <div class="field"> 
      <label>Name</label> 
      <input type="text" value="" name="name"/> 
     </div> 
     <div class="clear"></div> 
     <div class="field"> 
      <label>Rate</label> 
      <select name="rate"> 
       <option value=''>Choose rate</option> 
       <option value='1'>1</option> 
       <option value='2'>2</option> 
       <option value='3'>3</option> 
       <option value='4'>4</option> 
       <option value='5'>5</option> 
      </select> 
     </div> 
    </div> 
    <div class="left"> 
     <label>Comment <span class="required">*</span></label> 
     <textarea name="comment" class="comment required-field"></textarea> 
    </div> 
    <input type="submit" value="Send" class="btn" name="add" /> 

</form> 
<?php 
    if($posted){ 
    if($k) 
    echo "Thank you for your comment!"; 

else 
    die(mysqli_error()); 
} 

?> 
</body> 
</html> 
+0

你知道你在這裏沒有連接語句,對吧?你通常會從表單提交一個date_created。這通常是在數據庫中自動設置的值。除此之外,這段代碼沒有問題(忽略缺少準備好的語句) – Strawberry 2014-11-23 15:58:12

回答

0

也許這是不專業和很好的解決方案,但運作良好,如果您在後與ex前後查詢。 $ email和$ name或其他參數。如果結果不爲空,那麼您可以將結果或簡單的消息也輸入到輸出中。

0

更換

<?php 
    if($posted){ 
    if($k) 
     echo "Thank you for your comment!"; 

    else 
    die(mysqli_error()); 
} 

?> 

<?php 
if($posted===true){ 
    if($k) echo "Thank you for your comment!"; 
    else die(mysqli_error()); 
} 
?> 
0

也許你以後把{}你的第一個,如果

0

正下方:

$k = mysqli_query($con,$q); 

地址:

if(!$k) { 
    die(mysqli_error()); 
} 

如果查詢未執行,無論出於何種原因,請顯示錯誤並停止。 您可能會考慮添加開發模式變量或常量,因爲mysqli_error()消息僅對開發人員有用,且內容不適合用戶的眼睛。總之:


替換:

<?php 
    if($posted){ 
    if($k) 
     echo "Thank you for your comment!"; 

    else 
    die(mysqli_error()); 
}  
?> 

有:

if($posted === true) { 
    echo 'Thank you for your comment!'; 
} 

MySQL的錯誤的處理,在那裏發生。 成功發送時,只顯示成功消息。

也可以在成功時進行標題重定向。但這取決於你喜歡什麼。

if($posted === true) { 
    header('Location: success-message-page.php'); 
    exit;   
} 
相關問題