2014-11-23 122 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;   
}