Честно говоря, я новичок в программировании на PHP / SQL. Я, вероятно, закодировал это неправильно, или «длинный путь». Если честно, я не знаю разницы. Я просто пытаюсь сделать простой веб-чат для веселого проекта. В настоящее время сообщения, отображаемые в комнате, сортируются по отметке времени в порядке убывания. Самые новые сообщения отображаются в верхней части страницы. То, что я хотел бы, чтобы иметь новейшие сообщения внизу страницы. Я показываю только 30 сообщений одновременно. Я не могу понять, как «перевернуть» сообщения так, чтобы самые новые показывались внизу. (Я надеюсь это имеет смысл). Вот что я использовал для отображения сообщений:
$query = "SELECT * FROM roomdata ORDER BY timestamp DESC LIMIT 30 ";
$result = mysql_query($query);
if ($result) {
while($row= mysql_fetch_array($result)) {
// Check to see if the message was sent by a chatter
if ($row['sender']){
$publicmessage= '<b>['.$row['sender'].']</b> '.$row['message'];
}else{
// if not, it must have been sent by the server (ie: login message, server announcement, etc)
$publicmessage= $row['message'];
}
echo "$publicmessage <BR>";
}
}
Может кто-то указать мне верное направление?
Если я не включил достаточно информации, я прошу прощения — я новичок во всем этом. Заранее спасибо за ваше время!
Конечно, вы можете поместить все в массив в php и использовать array_reverse()
отменить заказ (или взять предметы конца, пока он не опустеет …). Для чистого решения SQL, проверьте этот вопрос.
Альтернативное решение — если ваши требования браузера позволяют это сделать — было бы использовать flexbox для отображения элементов и установить:
.container {
display: flex;
flex-direction: column-reverse;
}
Таким образом, вы можете оставить свой PHP-скрипт как есть; порядок в html будет таким же, но на экране он будет обратным.
Вам также нужно будет обернуть ваши элементы в элементы, но в любом случае список будет более уместным, чем простой текст с переносами строк.
Других решений пока нет …