我正在使用数据库进行聊天。当我显示消息时,旧消息显示在顶部,新消息显示在底部。我怎样才能让新消息成为最重要的。我已经尝试了ORDER BY Username DESC
,但只是按字母顺序排列。
这是我的完整代码
<html>
<head>
<title>Jetup</title>
</head>
<body>
<form name="chatform" action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<input type="text" name="chatuser"/>
<input type="text" name="chatinput"/>
<input type="image" name="send" value="Verzenden"/>
<br/>
<?php
$connection = mysql_connect("localhost","root","usbw") or die ("Kon geen verbinding maken");
mysql_select_db("chat") or die("Kan geen database selecteren");
if(isset($_POST['chatinput']) && isset($_POST['chatuser'])){
$input = $_POST['chatinput'];
$user = $_POST['chatuser'];
$query = "INSERT INTO chatterdata (Username, Message) VALUES ('".$user."', '" .$input."')";
mysql_query($query) or die(mysql_error());
}
$display = mysql_query("SELECT * FROM chatterdata ORDER BY Username DESC, Message DESC");
while($row = mysql_fetch_array($display)){
echo($row['Username'] . " : " .$row['Message'] . "<br/>");
}
?>
</form>
</body>
答案 0 :(得分:1)
您应该在chatterdata表中添加时间戳字段。
然后你可以通过这个字段订购
`added` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
这是一个示例字段,在您添加新邮件时会自动更新,因此您在创建邮件时无需向数据库插入任何其他内容。
然后您可以这样选择:
SELECT * FROM chatterdata ORDER BY added DESC
在将值插入数据库之前,我肯定会考虑使用PDO,或者至少使用mysql_real_escape_string,因为这样做会产生巨大的安全隐患: - )
答案 1 :(得分:1)
您可以通过创建SentDate
字段并按SentDate
字段排序来完成此工作。
INSERT INTO chatterdata(Username, Message, SentDate) VALUES ($user, $message, NOW())
由于较新的日期和时间将大于上一条消息,因此较新的日期和时间将显示在最前面。