В этом уроке я покажу Вам как вывести информацию из базы данных MySql в обратном порядке (от последней к первой). Такой вывод данных из базы может понадобиться Вам при организации вывода комментариев на сайте, а также для вывода постов, чтобы самые новые посты были всегда вверху.
Для организации вывода данных из базы MySql в обратном порядке сначала необходимо создать базу данных и таблицу с данными в этой базе.
Если Вы не знаете, как установить Денвер на Ваш компьютер, создать базу данных и таблицу в ней, то можете посмотреть мой урок, в котором я подробно рассказываю как это сделать: Создание базы данных MySql. В этом уроке я рассказываю о том, как создать базу данных, создать для нее таблицу, вставлять данные в таблицу и устанавливать привелегии, чтобы потом соединяться с базой из нашего php кода. В общем там Вы можете научиться производить все основные операции над базой данных MySql из панели управления phpMyAdmin.
В этом уроке я буду использовать ту же самую базу данных «new_db» с таблицей «users», в которой у меня находятся 5 записей. Все они расположены в том порядке, в котором Вы видите их на скриншоте ниже. Наша же задача вывести этот список на веб страницу в обратном порядке. То есть те, что расположены ниже должны быть выведены первыми, а те, что в самом верху – последними.
Итак, давайте приступим.
Выводим данные из базы MySql в обратном порядке
1. Для начала давайте создадим новый php файл, в котором и будем делать вывод наших данных. Назовем его «back.php». Также создадим css файл таблицы стилей и назовем его «style.css». Они должны быть сохранены в одном каталоге.
2. Подключим к нашему php файлу файл таблыцы стилей. Таким образом, код файла back.php будет выглядеть вот так:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <link rel="stylesheet" type="text/css" href="style.css"> <title>Вывод данных из базы в обратном порядке</title> </head> <body> </body> </html>
А в файле таблицы стилей style.css пропишем следующий код (впрочем Вы можете придавать такие стили, которые нужны Вам. Это всего лишь пример):
body{width:400px; margin:0 auto; background:#F8F4B6;}
3. Теперь нужно соединиться с базой данных MySql. Для этого будем использовать функцию “mysql_connect”, а в скобках должны быть указаны параметры соединения (хост, имя пользователя, пароль), которые Вы указывали, создавая привелегии в панели управления базой данных phpMyAdmin. Обратите внимание, что Ваши параметры в скобках будут отличаться от моих. Внимательно прописывайте их, иначе соединения не получится.
Далее мы прописываем функцию “die”, которая сработает при ошибке соединения.
После этого прописывается функция выбора базы данных “mysql_select_db”. В круглых скобках этой функции указывается имя базы данных, с которой Вы хотите соединиться. Далее мы также прописываем обработку ошибки соединения.
Приведенный ниже код нужно вставить между тегов <body></body> файла «back.php»:
<?php mysql_connect("localhost", "anna", "12345")//параметры в скобках ("хост", "имя пользователя", "пароль") or die("<p>Ошибка подключения к базе данных! " . mysql_error() . "</p>"); mysql_select_db("new_db")//параметр в скобках ("имя базы, с которой соединяемся") or die("<p>Ошибка выбора базы данных! ". mysql_error() . "</p>"); ?>
Теперь откройте Вашу страничку в браузере, если Вы не увидите никаких ошибок, то значит все параметры в скобках Вы прописали правильно.
Кстати, чтобы открыть страничку в браузере нужно набрать в коммандной строке браузера localhost/имя папки, в которой сохранен файл/back.php
4. С базой мы соединились удачно. Пришло время сформировать сам запрос на вывод данных из базы.
Формируя запрос нужно указать какие поля мы выбираем и из какой именно таблицы базы данных (если Вам нужно выбрать все поля, то вместо их перечисления просто ставьте символ *). Также в запросе мы указываем, что вывод будет производится по полю «id» – от большего значения к меньшему (то есть в обратном порядке, как нам и нужно).
Далее обрабатываем запрос с помощью функции «mysql_query», после чего разбиваем массив полученных данных на строки при помощи «mysql_fetch_array». Полученный результат заносится в переменную «$row».
А далее организуем вывод в цикле (do – while). Результаты будут выводиться до тех пор, пока «$row» существует, то есть пока записи в таблице базы не закончатся.
При выводе мы используем так называемые флаги («%s»). Прописывается функция «printf», в круглых скобках и в кавычках мы вставляем html код (в моем случае я делаю вывод каждой записи в таблице. При этом таблицу мы прописываем только одну, а дальше она будет сама дублироваться в цикле для каждой записи). Вместо данных мы подставляем флаги – «%s», а далее (после закрывающих кавычек) прописываем какие флаги соответствуют каким данным. Например, первый флаг («%s») соответствует переменной имени («$row[‘first_name’]»).
Даже если Вы раньше не сталкивались с таким выводом, то думаю разобраться будет не сложно.
Для того, чтобы все заработало, вставьте следующий кусок кода перед закрытием блока php кода (перед закрывающимся «?>»). Не забудьте, что если поля в Вашей таблице базы данных называются не так как у меня, то Вы должны прописать свои данные.
$select_query = "SELECT first_name, last_name, email, facebook FROM users ORDER BY id DESC"; $result = mysql_query($select_query); $row = mysql_fetch_array($result); do{ printf("<p><table border='0'> <tr> <td><strong>%s %s</strong></td> </tr> <tr> <td>E-mail:</td> <td>%s</td> </tr> <tr> <td>Facebook:</td> <td>%s</td> </tr> </table></p>",$row['first_name'],$row['last_name'],$row['email'],$row['facebook']); } while($row = mysql_fetch_array($result));
Помните, что если что-то осталось непонятным, то Вы всегда можете заглянуть в файлы в исходниках или задать мне вопрос в комментариях и я постараюсь Вам помочь.
Теперь, если Вы перезагрузите страничку браузера, то можете увидеть, как из Вашей таблицы базы данных MySql вывелись имеющиеся там данные в обратном порядке. Те, что были внесены самыми последними оказались на самом верху.
На этом на сегодня все. Надеюсь урок был Вам полезен. Буду ждать Ваших комментариев и пожеланий того, о чем бы Вам хотелось прочесть на страницах моего блога.
Делитесь этим уроком с Вашими друзьями с помощью кнопок социальных сетей, буду Вам благодарна!
Подписывайтесь на обновление блога, обещаю Вам много новых уроков по php, MySql и не только.
Успехов Вам, друзья, и до новых встреч!
День добрый. Очень замечательные уроки! Но интересует один вопрос. Как вывести массив данных из этой же базы в таблицу, что бы шапка была не изменой а новые строки шли порядку,
Если я вас правильно поняла, то для решения этой задачи нужно воспользоваться каким-либо циклом. Формируете html код таблицы, код строки заголовка, а дальше в цикле выводите записи из БД. В принципе все аналогично только при каждом проходе цикла у вас будет формироваться строка таблицы
, а внутри в каждой колонке
вы выводите нужные данные.