Вывод новостной ленты
Итак, мы уже соединились с сервером БД и выбрали базу (mysql_connect и mysql_select_db). Теперь осталось вывести записи. Отправляем запрос, проверяем на возможную ошибку и выводим строки.
$request = "SELECT ntext, ntitle, ndate FROM news";
Теперь бы только отсортировать данные... Изменим в запрос:
$request = "SELECT ntext, ntitle, ndate FROM news ORDER BY ndate DESC";
это означает, что сортировка идёт по полю ndate в порядке убывания (DESCending) даты (2000-12-05, 2000-12-04, ...). Сортировка по возрастанию - префикс ASC (ASCending), обычно сортировка по возрастанию установлена default и этот префикс использовать не надо.
Теперь выводим ленту:
$request = "SELECT ntext, ntitle, ndate FROM news ORDER BY ndate DESC";
$result = mysql_query($request);
if (!mysql_error()) {
// Цикл, вынимающий строку как массив с числовым индексом
while ($row = mysql_fetch_row($result)) {
print("<tr><td><h3>". $row[1]. "</h3>");
pring("<font size=-1>". $row[2]. "</font>");
print("<p align=justify>". $row[0]. "</p>");
};
}
/* в случае ошибки БД программа выводит сообщение сервера (конечно, можно обойтись без такой проверки, но тогда пользователю посыплются ругательства PHP). */
else {
print ("Ошибка БД в запросе "$request". MySQL пишет ". mysql_error());
};
/* если дальше предусмотрено выполнение каких-либо операций, лучше всего сразу очистить память */
mysql_free_result ($result);
Ещё одна полезная вещь: если это новостная лента, скажем, на главной странице сайта, нужно ограничить количество новостей (скаджм 10). И ещё надо, чтоб дата отображалась не как "2000-12-05 22-26-47", а "5.12.2000 22:46":
$request = "SELECT ntext, ntitle, date_format(ndate,'%e.%m.%Y %H:%i') as ndate1 FROM news ORDER BY ndate DESC LIMIT 10";
Ограничиваем количество новостей ровно десятью, и не надо никаких условий в цикле while. Функция date_format форматирует дату так, как нам надо (буквы - как в функции PHP date, а "e" - это число месяца без нуля в начале). Почему пишу "as ndate1", а не "as ndate"? Проверьте сами :) (подсказка: см. директиву ORDER BY в том же запросе).
Но, господа, это всё было только цветочки. Самое главное, чего пока нет - это возможности администратору работать с новостями, кликая мышкой, а не набирая SQL-запросы. Итак,