Взаимодействие PHP и MYSQL – Вывод новостей в цикле
Этим постом я начинаю серию уроков по Взаимодействию PHP и MYSQL
Первый урок называется Вывод новостей в цикле. Так как новости, наиболее часто используется, я решил использовать именно их, вы же можете вместо новостей делать: статьи, посты, во общем что придет в голову.
Сколько будет уроков, сказать не могу, но я думаю что будет много
.
Для начала вам нужно будет установить DENWER (Джентльменский набор веб-разработчика). Делается это просто, достаточно следовать инструкциям в процессе установки. После того как DENWER установлен и запущен, можно приступать к заполнению базы данных.
Заполнять базу будем вручную, через phpmyadmin, т.к. основной акцент в этом уроке я делаю на вывод новостей, а не на ввод.
Зайдите в phpmyadmin, кто не знает как заходить, перейдите по этой ссылке.
Первым делом создайте новую базу с именем test_select.
Затем создайте новую таблицу с именем news.
Для создания таблицы используйте эту структуру.
Теперь нужно создать пользователя.
Вернитесь на главную страницу phpmyadmin и зайдите в Привилегии – Добавить нового пользователя. Заполните так как показано на картинке.
Осталось заполнить нашу таблицу данными. Для этого перейдите в таблицу news и выберете вкладку Вставить вверху страницы. Заполните таблицу любыми новостями.
Я написал такие новости.
Все, с phpmyadmin мы закончили. Настало время перейти к написанию программы которая будет выводить новости.
Откройте Macromedia Dreamweaver, или другой подобный редактор, я использую этот т.к. считаю его самым лучшим для разработки программ на php.
1. Создайте файл db.php. Он будет отвечать у нас за подключение базы данных.
Скопируйте этот код:
define ("HOST","localhost"); define ("USER","test_select"); define ("PASSWORD","test"); define ("DATABASE","test_select"); $connect = mysql_connect (HOST, USER, PASSWORD); $db = mysql_select_db (DATABASE, $connect);
Что мы сделали? Мы сначала записали в константы значения наших данных: хоста, пользователя, пароля и базы данных. Затем мы подключились к базе данных используя значения констант и выбрали базу которую будем использовать.
2. Создайте файл news.php. Он будет отвечать за вывод всех новостей которые имеются в базе.
Скопируйте этот код:
include("db.php"); $query = mysql_query("SELECT * FROM news"); while($row = mysql_fetch_array($query)) { printf ("<a href="\"> <h1>%s</h1> </a> %s ", $row["id"], $row["title"], $row["text"]); }
Что мы сделали? Подключили файл db.php. Выполнили запрос на вывод данных из базы. Начали цикл с условием, выполнять пока не будут выведены все новости. Вывели на экран название и текст новости. Вы видите что присутствует ссылка на файл view_news.php . Этот файл отвечает за вывод одной новости. Вы спросите, а как скрипт узнает какую именно новость выводить? Все просто, мы в запросе получили id новости, а в ссылке указываем этот id и передаем его методом GET файлу view_news.php.
3. Создайте файл view_news.php. Как вы уже знаете, он отвечает за вывод одной новости.
Скопируйте этот код:
include ("db.php"); if (isset($_GET["id"])) {$id = $_GET["id"];} $query = mysql_query ("SELECT * FROM news WHERE id='$id'"); $row = mysql_fetch_array ($query); printf (" <h1>%s</h1> %s", $row["title"], $row["text"]);
Что мы сделали? Подключили файл db.php. Выполнили проверку, существует ли глобальная переменная id. Если существует, то записать значение глобальной переменной id в переменную id. Сделали запрос вывести из базы новость. Обратите внимание, теперь мы выводим не все новость, а только ту, у которой поле id совпадает с переменной id. Вывели на экран название и текст новости.
Вот и все готово. Как вы заметили здесь отсутствует оформление страницы. Я специально этого не делал, ведь целью урока было научится выводить данные из базы. Надеюсь вы эту цель достигли. Если что-то не понятно, спрашивайте, с удовольствием отвечу.
P.S. Кому нужны исходные файлы урока, качаем тут.

Новостей как правило накапливается много.
Как ограничить показ последними 10-ю?
А остальные сделать доступными по ссылке “старые новости” и сделать их постраничный вывод (по 10шт. на страницу, кол-во страниц определяется автоматически)?
@Рус
Для того чтобы ограничить показ последними 10-ю записями, нужно немного изменить запрос в файле news.php, он должен выглядеть так:
mysql_query(“SELECT * FROM news ORDER BY id DESC LIMIT 10″);
Далее делаете ссылку на страницу old_news.php (предварительно создав ее).
В странице old_news.php пишите скрипт вывода всех новостей (можно использовать код который описан в этом посте).
Ну, а как сделать постраничную навигацию подробно описано здесь
Огромное СПАСИБО за оперативный ответ!
@Рус
Всегда пожалуйста
А не подскажете как сделать что б выводить не одну табличку в ряду а две, три ? (знаю что не в тему
)
Нашел
мож кому пригодится
<?
echo "”;
$result = mysql_query (“SELECT * FROM catalog”, $db);
while($categoryresquery = mysql_fetch_array($result))
{
$tds[] = ”
фото
цена
размеры
описание fdsghsdflkgj
sdfgsdfgsdfg
“;
}
$i = count($tds);
if(!is_int($i/2))
{
$tds[] = “ ”;
}
$tor = array_chunk($tds, 2);
foreach($tor as $value)
{
echo ”;
foreach($value as $value2)
{
echo $value2;
}
echo ”;
}
echo ”;
?>