簡體   English   中英

僅通過刷新整個頁面才能顯示新的數據庫元素

[英]New database elements only shown by refreshing the whole page

我已經為主頁設置了一個聊天框/聊天室,但是每次我提交一條將存儲在mysql數據庫中的消息時,我都必須刷新頁面才能在div框中查看所提交的消息。

div的代碼:

<form method="post" action="startseite.php">
<div id="message">
<input type="text" name="spind" value="" size="55" maxlength="90">
<button>Senden</button>
</div></form>

我的div容器的Javascript代碼:

<script type="text/javascript">
$(document).ready(function(){

    $("#content").scrollTop($("#content")[0].scrollHeight);     
    $("button").click(function(){
        var message = $("input").val();
        var old = $("#content").html();

        $("#content").scrollTop($("#content")[0].scrollHeight);

    }); 
});

mysql數據庫代碼:

<?php
$verbindung = mysql_connect("localhost", "hallo", "123")
or die("Fehler im System");

mysql_select_db("hallo")
or die("Verbindung zur Datenbank war nicht erfolgreich");


$user = $_SESSION['username'];
$message = $_POST['spind'];

$eintrag = "INSERT INTO chat
(user, message)

VALUES
('$user', '$message')";

mysql_query($eintrag);

mysql_close($verbindung);
?>

當我想在提交新消息時自動在div上顯示新消息時,該怎么辦?

<script type="text/javascript">
$(document).ready(function(){

    $("#content").scrollTop($("#content")[0].scrollHeight);     
    $("button").click(function(){
        var message = $("input").val();
        var old = $("#content").html();

        $("#content").append(message);

        $("#content").scrollTop($("#content")[0].scrollHeight);

    }); 
});

您還可以將消息包裝在一些html代碼中,然后嘗試附加它。

假設所有內容都在一個文件中,這是發布消息后更新div框的一種方法。

startseite.php

<?php

$spind = '';

$verbindung = mysql_connect("localhost", "hallo", "123")
or die("Fehler im System");

mysql_select_db("hallo")
or die("Verbindung zur Datenbank war nicht erfolgreich");

if ( isset($_POST['spind']) ) {
  $spind = $_POST['spind'];

  $user = $_SESSION['username'];
  $message = $spind;

  $eintrag = "INSERT INTO chat
  (user, message)

  VALUES
  ('$user', '$message')";

  mysql_query($eintrag);

  mysql_close($verbindung);

}

?>

<div id="content">
<?php

$eintrag = "SELECT * FROM chat";
$mysql_content = mysql_query($eintrag);
while($into = mysql_fetch_array($mysql_content)) {
  echo '<p><span style="font-variant:small-caps"><span style="font-size:1.5em"><b><span style="text-transform:capitalize">'.$into['user'].'</span> denkt: </b></span><span style="font-size:1.6em">'.$into['message'].'</span></span></p>';
} 

?>
</div>

<form method="post" action="startseite.php">
<div id="message"><?=$spind?>
<input type="text" name="spind" value="" size="55" maxlength="90">
<button>Senden</button>
</div></form>

(當然,這里仍然缺少很多信息,例如數據庫安全性,session_start,會話檢查等,因此僅出於娛樂目的,而不是供公眾使用。:)在不了解其他要求的情況下,我認為XHR將是一種更為優雅的方法。

而且我不知道您為什么要在表單按鈕上附加事件並捕獲“ spind”和“ content”的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM