Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP&;中从下到上读取;SQL_Php_Sql - Fatal编程技术网

在PHP&;中从下到上读取;SQL

在PHP&;中从下到上读取;SQL,php,sql,Php,Sql,我在用数据库聊天。当我显示消息时,旧消息显示在顶部,新消息显示在底部。我怎样才能让新的信息占据上风呢。我已经尝试了按用户名DESC排序的方法,但这只能按字母顺序进行 这是我的全部代码 <html> <head> <title>Jetup</title> </head> <body> <form name="chatform" action="<?php echo $_SERVER['PHP_SELF']?

我在用数据库聊天。当我显示消息时,旧消息显示在顶部,新消息显示在底部。我怎样才能让新的信息占据上风呢。我已经尝试了按用户名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>

杰图普

您应该向chatterdata表中添加时间戳字段

然后您可以按此字段订购

`added` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
这是一个示例字段,在添加新消息时会自动更新,因此在创建消息时不需要向数据库中插入任何其他内容

然后您可以这样选择:

SELECT * FROM chatterdata ORDER BY added DESC

在向数据库中插入值之前,我肯定会考虑使用PDO,或者至少是mysql_real_escape_string,因为这样做会带来巨大的安全隐患:-)

您可以通过创建
SentDate
字段并按
SentDate
字段排序来实现这一点

INSERT INTO chatterdata(Username, Message, SentDate) VALUES ($user, $message, NOW())

由于较新的日期和时间将大于先前的消息,因此较新的日期和时间将显示在消息的顶部。

按日期时间排序<代码>插入chatterdata(用户名、消息、创建时间)值(…NOW())
按日期排序,而不是按用户名排序。或者您可以按日期订购,然后按用户名订购
orderbydatedesc,Username DESC
我在谷歌上搜索了随机解决方案……非常感谢,为我工作了!:我不能再加上你,只是失去了我的名声,谢谢你的回答!!