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:你好
這發生後,每刷新
請任何幫助將歡迎。 謝謝。
要動態地重新加載一些數據無需重新加載整個頁面,您應該看看「AJAX」技術:)! – Julqas
我不認爲這是這裏的問題,從我理解當有人提交'一些文本',並重新加載頁面文本發送兩次到數據庫。 – Ivan
SELECT和INSERT在同一頁上,這也可能是一個問題。但是,你說得對,這不是解決問題的辦法,但是在保證避免重新加載頁面時雙重插入數據庫遠離OP的當前級別,我認爲他應該在決定什麼之前看到更大的圖片在這裏做:) – Julqas