在PHP&中自下而上阅读SQL

时间:2013-04-25 15:02:17

标签: php sql

我正在使用数据库进行聊天。当我显示消息时,旧消息显示在顶部,新消息显示在底部。我怎样才能让新消息成为最重要的。我已经尝试了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>

2 个答案:

答案 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())

由于较新的日期和时间将大于上一条消息,因此较新的日期和时间将显示在最前面。