Новостная лента на PHP [Часть 1]
12.01.2008 от
WindOfHeart
В этой статье я расскажу, как можно без особых усилий написать простую новостную ленту на PHP c MySQL. В последующих частях мы будем совершенствовать наш скрипт: добавим администраторскую панель, возможность комментировать новости, смайлики, BB-code и многое другое…
Итак, приступим к выполнению первой части нашего проекта!
1. Создадим БД MySQL и таблицу news, сделать это можно при помощи phpMyAdmin (http://phpmyadmin.net). В базе данных, а именно в таблице news будут храниться все заголовки и тексты новостей, позднее таблицу можно расширить, добавив туда автора, дату публикации и много всего полезного. Это мы сделаем в следующих частях нашего проекта.
Листинг таблицы news:
CREATE TABLE `news` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`title` VARCHAR( 255 ) NOT NULL ,
`text` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
);
Данный код написан на языке SQL. Каждый PHP программист должен хотя бы немного знать его, чтобы писать свои скрипты. В интернете вы сможете найти множество учебников по этой теме.
Если у вас нету phpMyAdmin, при помощи которого можно выполнить этот код, вы можете воспользоваться PHP, выполнив данный запрос к серверу. Об этом будет написано ниже.
id - номер новости, AUTO_INCREMENT значит, что при каждой новой записи, поле id будет автоматически увеличиваться на единицу.
title - заголовок новости
text - сама новость
2. Создадим конфигурационный файл config.php, где мы пропишем настройки соединения с БД.
Листинг config.php:
<?php
$mysql_server=”localhost”; //Сервер БД
$mysql_user=”user_name”; //Пользователь БД
$mysql_pass=”password”; //Пароль БД
$dbname=”database1″; //Имя БД
$records_on_page=3; //Количество новостей на странице
?>
3. Приступим к написанию скрипта просмотра новостей, назовем его news.php
Чтобы работать с базой данных для начала нужно подключиться к серверу MySQL.
if(!mysql_connect($mysql_server, $mysql_user, $mysql_pass))
{
echo “<h1>MySQL server error: CAN’T CONNECT TO SERVER</h1>”;
exit;
}
Функция mysql_connect подключается к серверу БД используя 3 параметра, которые мы указали в config.php. Если подключиться не удалось, выводим на экран ошибку: “MySQL server error: CAN’T CONNECT TO SERVER(Не могу подключиться к серверу)”.
После удачного подключения, необходимо выбрать нужную нам базу данных, имя которой мы указали во все том же файле config.php:
mysql_select_db($dbname) or die (”Can’t select database”);
Теперь нам нужно сформулировать mysql запрос который выбирает все записи из БД.
Функция mysql_query() позволяет выполнить запрос:
$query=mysql_query(”select * from news order by id desc LIMIT 0,$records_on_page”);
Данный запрос выбирает все записи (select *) из таблицы news (from news) и сортирует их (order by) по id в порядке возрастания (desc) т.е. чем ниже ID, тем выше будет запись. LIMIT - ограничивает выбор, т.к. нужно нам только столько записей, сколько мы указали в переменной $records_on_page.
Теперь нужно поместить результат запроса в массив. Сделать это можно при помощи функции mysql_fetch_array():
$f=mysql_fetch_array($query);
Нам важно легко менять дизайн выводимой информации. Давайте создадим шаблон и назовем файл template.php.
Листинг template.php:
А листинг может быть любой или почти любой. В том месте, где должен выводиться заголовок новости нужно написать:
<?php echo”$f[title]”; ?>
Аналогично: <?php echo”$f[text]”; ?>
Пример листинга template.php:
<table width=”400″ border=”0″ cellspacing=”0″ cellpadding=”0″>
<tr>
<th><?php echo”$f[title]”; ?></th>
</tr>
<tr>
<td><?php echo”$f[text]”; ?></td>
</tr>
</table>
Остается вывести все на страницу!
for ($i=0;$i<mysql_num_rows($query);$i++)
{
$f=mysql_fetch_array($query);
include’template.php’;
echo “<br>”;
}
Функция mysql_num_rows() определяет кол-во записей возвращенных запросом
Вот и все! Теперь полный листинг файла news.php:
<?php
include ‘config.php’;
if(!mysql_connect($mysql_server, $mysql_user, $mysql_pass))
{
echo “<h1>MySQL server error: CAN’T CONNECT TO SERVER</h1>”;
exit;
}
mysql_select_db($dbname) or die (”Can’t select database”);
$query=mysql_query(”select * from news order by id desc LIMIT 0,$records_on_page”);
for ($i=0;$i<mysql_num_rows($query);$i++) //Выводим записи
{
$f=mysql_fetch_array($query);
include’template.php’;
echo “<br>”;
}
?>
Теперь нам нужно написать скрипт добавления новостей в базу данных. Создадим файл add.php.
В начале файла будет HTML код:
<form name=”form1″ method=”post” action=”add.php”>
<label>
<input name=”title” type=”text” id=”title”>
</label>
<p>
<label>
<textarea name=”text” id=”text”></textarea>
</label>
</p>
<p>
<label>
<input type=”submit” name=”Submit” value=”Submit”>
</label>
</p>
</form>
Здесь все понятно: имеется 2 поля, одно для ввода текста, другое для заголовка, а также кнопка, чтобы отправить данные из формы скрипту.
Теперь настало время написать PHP код
include ‘config.php’; //Подключаем конфигурационный файл
Выполним подключение к серверу и выберем нужную нам БД, как мы это делали в news.php.
Прежде чем добавлять данные в БД нужно проверить правильность ввода:
if ((!empty($title)) and (!empty($text))) {
Если не пуста переменная $title и переменная $text тогда начинаем…
Начинаем добавлять данные в БД.
$query=mysql_query (”
INSERT INTO `news` (`id`, `title`, `text`) VALUES (”, ‘$title’, ‘$text’);
“);
echo mysql_error(); //Пишем ошибку MySQL если она имеется.
Если ошибки нет, т.е. её код равен нулю, пишем, что новость успешно добавлена.
if (mysql_errno()==0) echo “Новость успешно добавлена! “;
Листинг файла add.php:
<form name=”form1″ method=”post” action=”add.php”>
<label>
<input name=”title” type=”text” id=”title”>
</label>
<p>
<label>
<textarea name=”text” id=”text”></textarea>
</label>
</p>
<p>
<label>
<input type=”submit” name=”Submit” value=”Submit”>
</label>
</p>
</form>
<?php
include ‘config.php’; //Подключаем конфигурационный файл
if(!mysql_connect($mysql_server, $mysql_user, $mysql_pass))
{
echo “<h1>MySQL server error: CAN’T CONNECT TO SERVER</h1>”;
exit;
}
mysql_select_db($dbname) or die (”Can’t select database”);
if ((!empty($title)) and (!empty($text))) {
$query=mysql_query (”
INSERT INTO `news` (`id`, `title`, `text`) VALUES (”, ‘$title’, ‘$text’);
“);
echo mysql_error();
if (mysql_errno()==0) echo “Новость успешно добавлена! “;
}
?>
Теперь давайте добавим несколько новостей и посмотрим как все работает!

Заметьте, что первой новости нет, т.к. мы указали в config.php $records_on_page=3.
Давайте модернизируем наш шаблон!
Листинг template.php:
<table width=”400″ border=”0″ cellpadding=”0″ cellspacing=”1″ bgcolor=”#CCCCCC”>
<tr>
<td bgcolor=”#FFFFFF”><b>.: <?php echo”$f[title]”; ?></b></td>
</tr>
<tr>
<td bgcolor=”#FFFFFF”><?php echo”$f[text]”; ?></td>
</tr>
</table>
Теперь наша новостная лента выглядит красивее!

В следующих частях мы продолжим совершенствовать наш скрипт! Удачи в изучении PHP
При копировании материалов сайта, ссылка на http://web-guild.org обязательна.
Рубрики: PHP, Начинающим |
Оставить комментарий