Хорошо, вот трюк. В запросе я получаю правильные результаты из таблицы с сообщениями. (Приобретение последних 10 сообщений, упорядоченных по времени, вставленному в обратном порядке), вот запрос:
$query = mysql_query("SELECT time, username, message FROM messages ORDER BY time DESC LIMIT 10");
И чем позже эти сообщения печатаются внутри div через ajax с помощью
while ($item = mysql_fetch_assoc($query)) { echo $item['time']." - ".$item['username']." - ".$item['message']; }
Но напечатанный результат я хочу напечатать их только в обратном порядке. Совет. Если я использую ASC в предложении ORDER BY, я не получаю последние вставленные сообщения.
Возможно ли это сделать внутри php?
Храните данные и используйте массив_реверс ,
while($row = mysql_fetch_assoc($result)){ $items[] = $row; } $items = array_reverse($items ,true); foreach($items as $item){ echo $item['time']." - ".$item['username']." - ".$item['message']; }
Я бы использовал подзапрос лично. Я немного анальный о том, что мои данные выходят из MySQL точно так, как я этого хочу, но метод array_reverse
будет работать отлично. Вот мой пример:
$query = mysql_query("SELECT * FROM ( SELECT time, username, message FROM messages ORDER BY time DESC LIMIT 10) result ORDER BY time ASC ");
Использование: array_unshift – Подготовьте один или несколько элементов к началу массива
$items = array(); while($row = mysql_fetch_assoc($result)){ array_unshift($items,$row); } foreach($items as $item){ echo $item['time']." - ".$item['username']." - ".$item['message']; }
Heres бесполезный, но быстрый пример. Надеюсь, он все еще там: Простой пример