У меня есть стол с сообщениями в блоге. Я хочу выбрать самые последние сообщения и использовать PHP echo как разделитель между ними, подобный приведенному ниже примеру. Я думал о сохранении всех результатов в массивах PHP, а затем эхом, есть ли более простой способ через MySQL?
Thursday, Sept 8th ----------------------- Post 1 Post 2 Friday, Sept 9th ----------------------- post 3 post 4
Это идея:
<?php $sql = "SELECT * FROM posts ORDER by post_date DESC"; $res = mysql_query($sql); $previous_date = ""; while($post = mysql_fetch_assoc($result)){ //here goes the date if($post['post_date'] != $previous_date){ echo $post['post_date']; echo "<br>--------------------<br>"; $previous_date = $post['post_date']; } //here goes the post echo "Post:{$post['title']}<br>"; } ?>
Я уверен, что в MySQL нет ничего, что позволило бы вернуть этот набор результатов. Если есть, то, вероятно, будет очень интересно увидеть и очень отвратительно: P
Семантически говоря, вы действительно не хотите, чтобы это возвращалось из запроса; запрос должен возвращать чисто данные, а затем PHP (или что-то еще) должен отвечать за форматирование так, как вы хотите. Если запрос возвращает некоторые материалы презентации, вы смешиваете вещи.
Вы можете создать столбец в базе данных, чтобы хранить временные метки unix для времени сообщений, а затем сортировать по этому столбцу (если вы спрашиваете, как получить последние сообщения в первую очередь). Вы можете прокручивать существующие строки и преобразовывать даты в метки времени, используя функцию strftime (). Вы не должны сохранять форматирование в базе данных, а только данные, если вы хотите организовать его другими способами в других местах позже. Удачи.