2013-11-04 77 views
0

不重複我有這樣的代碼:添加到數據庫。在刷新

Episode.php

<?$feedback = new feedback; 
$articles = $feedback->fetch_all(); 

     if (isset($_POST['name'], $_POST['post'])) { 
      $cast = $_GET['id']; 
      $name = $_POST['name']; 
      $email = $_POST['email']; 
      $post = nl2br ($_POST['post']); 
      $ipaddress = $_SERVER['REMOTE_ADDR']; 

if (empty($name) or empty($post)) { 
      $error = 'All Fields Are Required!'; 
}else{ 
$query = $pdo->prepare('INSERT INTO comments (cast, name, email, post, ipaddress) VALUES(?, ?, ?, ?, ?)'); 
    $query->bindValue(1, $cast); 
    $query->bindValue(2, $name); 
    $query->bindValue(3, $email); 
    $query->bindValue(4, $post); 
    $query->bindValue(5, $ipaddress); 

    $query->execute(); 
} }?> 
<div align="center"> 
<strong>Give us your feedback?</strong><br /><br /> 

<?php if (isset($error)) { ?> 
    <small style="color:#aa0000;"><?php echo $error; ?></small><br /><br /> 
<?php } ?> 

<form action="episode.php?id=<?php echo $data['cast_id']; ?>" method="post" autocomplete="off" enctype="multipart/form-data"> 
<input type="text" name="name" placeholder="Name" />/<input type="text" name="email" placeholder="Email" /><small style="color:#aa0000;">*</small><br /><br /> 
<textarea rows="10" cols="50" name="post" placeholder="Comment"></textarea><br /><br /> 
<input type="submit" onclick="myFunction()" value="Add Comment" /> 
<br /><br /> 
<small style="color:#aa0000;">* <b>Email will not be displayed publicly</b></small><br /> 
</form> 

</div> 

Include.php

class feedback { public function fetch_all(){ 
    global $pdo; 
     $query = $pdo->prepare("SELECT * FROM comments"); 
     $query->bindValue(1, $cast); 
     $query->execute(); return $query->fetchAll(); 
       } } 

此代碼更新,因爲它是假設數據庫。但提交後,它會重新加載當前頁面,如表單操作中所述。

但是當我刷新頁面以查看正在添加的評論時,它會要求重新提交。如果我點擊提交,則評論會再次添加。

我該如何阻止這種情況發生?

也許我可以隱藏評論框並顯示一條感謝消息,但這不會停止重複輸入。

請幫忙。謝謝。

千電子伏

+0

_「當我刷新頁面以查看正在添加的評論」時,您是否正在執行此操作,因爲您在提交表單後無法看到新添加的評論?我懷疑你正在包含'include.php',這是獲取評論,然後再執行'insert' ... –

+0

嗨,ayman。這聽起來不錯,但我該如何改變這種情況? – kevstarlive

+0

在插入新註釋之後,請取出註釋*。 –

回答

2

您需要在裏面添加一個重定向。所以,在你的崗位塊的底部添加

if(isset($_POST['name'], $_POST['post'])) { 
    // Do POST stuff here 

    header('Location: your/url/here'); 
    exit; 
} 

這將發送302重定向到瀏覽器,它的頁面的乾淨的負載。由於這是一個GET操作,因此也沒有重新加載問題。

+0

繼續嘗試添加此功能,但它一直髮送一個錯誤。你能否給我提供一個放在哪裏的樣本?謝謝。 – kevstarlive

+0

你的錯誤可能是這樣的:「當已經有輸出時不能重定向」。確保你在'header('location ...')之前沒有任何HTML。 –

+0

This code $ query-> execute(); header('location:index.php');工作。謝謝。 – kevstarlive

0

已運行後

$query->execute(); 

,你可以取消設置的變量:

unset($name, $email, $post); 
+0

這不排序問題。 – kevstarlive