Я делаю чат, который использует базы данных. Когда я показываю сообщение, старые сообщения появляются сверху, а новые сообщения появляются внизу. Как я могу это сделать, чтобы новые сообщения попали на первое место. Я уже пробовал 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>
Вы должны добавить поле метки времени в таблицу 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())
Поскольку более новая дата и время будут больше, чем предыдущее сообщение, более новая будет отображаться сверху.