2016-07-18 99 views
0

我是一個PHP新手,我在玩耍,試圖寫一個迷你聊天的Web應用程序。這是我的代碼:連接到數據庫的頁面正在檢索之前發佈的所有信息。在重新加載一個PHP頁面時重複提交

<?php 
    try{ 
    $bdd = new PDO('mysql:host=localhost;dbname=chat', 'root', ''); 
} 
catch(Exception $e) 
{ 
    die('Error: ' . $e->getMessage()); 
} 

    $myname =$_POST["myname"]; 
    $message =$_POST["message"]; 
    $req = $bdd->prepare('INSERT INTO users(myname, message) VALUES(
     :myname, 
     :message)'); 
     $req->execute(array(
      'myname' => $myname, 
      'message' => $message, 
     )); 
    include('page1.php'); 
    $reponse = $bdd->query('SELECT myname, message FROM users ORDER 
     BY ID DESC'); 

     while ($mydata = $reponse->fetch()) 
     { 
      echo '<p>' .($mydata['myname']) . 
      '</strong> : ' . ($mydata['message']) . '</p>'; 
        } 
?> 

其中包含我的表格,用戶來發布自己的消息的另一頁

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<link rel="stylesheet" href="style.css" /> 
<script type="text/javascript" src="script.js"></script> 
<script type="text/javascript" src="jquery.js"></script> 
<title>chat</title> 
</head> 
<body> 
    <fieldset width="90"> 
     <marquee>my mini chat </marquee> 
     <form method="post" action="enregisteur.php"> 

      <label for="Identifier"> Identifier :</label> 
      <input type="text" name="myname" id="myname" value="myname" placeholder="myname"/> 
      <br> 
      <label for="message"> Messages :</label> 
      <textarea name="message" id="message" value="message"> 
      </textarea> 
         <br> 
      <input type="submit" name="validate" value=" validate " size="15"/> 

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

這種運作良好,但有一個小問題,我想成熟的:我一用戶說USER1來並輸入user1和消息Hello,然後點擊提交。這些信息將發送到數據庫,並顯示在網頁上。如果他繼續前進並在不點擊提交的情況下重新加載頁面,則將相同的信息發送到數據庫並再次顯示在網絡遊戲上。這就是我們有這樣的事情在網頁

上點擊提交 USER1後:你好 重新加載頁面 USER1後:你好 USER1:你好

這發生後,每刷新

請任何幫助將歡迎。 謝謝。

+0

要動態地重新加載一些數據無需重新加載整個頁面,您應該看看「AJAX」技術:)! – Julqas

+0

我不認爲這是這裏的問題,從我理解當有人提交'一些文本',並重新加載頁面文本發送兩次到數據庫。 – Ivan

+0

SELECT和INSERT在同一頁上,這也可能是一個問題。但是,你說得對,這不是解決問題的辦法,但是在保證避免重新加載頁面時雙重插入數據庫遠離OP的當前級別,我認爲他應該在決定什麼之前看到更大的圖片在這裏做:) – Julqas

回答

0

您的插入和選擇查詢分開到不同的網頁:

創建一個新的頁面,將你的插入查詢:

<?php 
    try{ 
    $bdd = new PDO('mysql:host=localhost;dbname=chat', 'root', ''); 
} 
catch(Exception $e) 
{ 
    die('Error: ' . $e->getMessage()); 
} 

    $myname =$_POST["myname"]; 
    $message =$_POST["message"]; 
    $req = $bdd->prepare('INSERT INTO users(myname, message) VALUES(
     :myname, 
     :message)'); 
     $req->execute(array(
      'myname' => $myname, 
      'message' => $message, 
     )); 


    header('location:enregisteur.php'); 
?> 

,改變你的表單動作

新的一頁
相關問題