• Регистриция
Этап применения умений и навыков.
Плохой специалист винит не себя, а инструменты, которыми он пользуется. Поэтому убедитесь в том, что ваше прог...
Этап финальной доводки.
Именно внимание к деталям отличает хорошую работу от великолепной. Вот несколько советов как «добавить изюм...
Фиксированный размер шрифта на Ваших веб-страничках
Вы когда нибудь задумывались о том, как выглядят ваши веб-странички на других компьютерах? Наверняка задумыв...
Этап финальной доводки.
Именно внимание к деталям отличает хорошую работу от великолепной. Вот несколько советов как «добавить изюм...
Секреты индексации сайта. Сайт может и должен работать. Пример №2
Звонит скептически настроенный знакомый и рассказывает "ужасную" историю. Сфера деятельности - бытовая элект...
При создании дизайна для Сети вам нужно принять к сведению, что контент будет меняться. О том, чтобы тратить в...
Плохой специалист винит не себя, а инструменты, которыми он пользуется. Поэтому убедитесь в том, что ваше прог...
Гостевая книга на PHP.

В этой статье рассказывается о том, как создать гостевую книгу, описывается её структура и реализация. За пределами статьи остаются дизайн, вёрстка, оформление и т.д...

Сделаем гостевую книгу своими руками. Для этого нам понадобятся PHP, MySQL и немного свободного времени. Сообщения будем хранить в базе данных, а не во внешнем файле. Это позволит упростить задачу и повысить быстродействие.

Для начала нам необходимо создать базу данных. Назовём её mydb. В ней мы создадим таблицу gost, в которой будут храниться сообщения.

SQL-код для создания базы данных для гостевой книги выглядит так:
create database mydb;
use mydb;
create table gost
(

textid int unsigned not null auto_increment primary key,
dt int not null,
name char(16) not null,
txt text not null

);

Для гостевой книги будем использовать следующую структуру из 3 файлов:
gst.php – основная программа;
db.php – сценарий, содержащий функцию для подключения к базе данных;
units.php – функции, необходимые для работы гостевой книги.


В файле db.php находится одна лишь функция db_connect(), которая устанавливает соединение с MySQL и выбирает базу данных mydb.

В файле units.php размещены функции:
readgost() – считывает сообщения из базы данных;
printmessages($n,$r) – выводит оставленные сообщения;
savegost($UserName,$n,$txt) – сохраняет сообщение в гостевой книге;
showgostform() – выводит форму отправки сообщения.

Сначала создадим основной файл, который будет вызывать необходимые функции.
Error_Reporting(E_ALL & ~E_NOTICE);

//Подключение модулей

require(‘db.php’);
require(‘units.php’);

//Подключение к базе данных

db_connect();

//Считывание сообщений и определение их количества.

$r=readgost();
$n=mysql_num_rows($r);

//Создание коротких имён переменных

$UserName = $HTTP_POST_VARS['username'];
$gost = $HTTP_POST_VARS['gost'];
$txt = $HTTP_POST_VARS['txt'];

// Если была нажата кнопка отправки сообщения,
//сохраняем сообщение в базе данных
//и снова считываем сообщения и определяем их количество.

if ($gost==true)
{
savegost($UserName,$n,$txt);
$r=readgost();
$n=mysql_num_rows($r);
}

//Выводим количество оставленных сообщений.

echo '

Оставлено '. $n.'сообщение(ий)

';

//Выводим оставленные сообщения

printmessage($n,$r);

//Показываем форму отправки сообщений.
showgostform();
?>

В PHP может быть установлен высокий уровень контроля ошибок. Из-за этого могут возникать предупреждения. Такой режим вывода ошибок является рекомендуемым. Он будет полезен при отладке скриптов. Однако для большинства скриптов нет необходимости его устанавливать, и следует пользоваться более слабым уровнем контроль ошибок. Мы это сделали так:
Error_Reporting(E_ALL & ~E_NOTICE);

Однако рекомендуется использовать следующий способ. В директории со скриптом надо создать файл .htaccess содержащий строчку:
php_value error_reporting 7

Рассмотрим файл db.php
Function db_connect()
{
//Подключение к MySQL

@ $db = mysql_pconnect('имя_узла','пользователь','пароль');
if (!db)
{
//соединение не установлено

Echo 'Не удалось установить соединение с базой данных.
Пожалуйста, повторите попытку позже.';
return 0;
}
else
{
//Выбираем базу данных mydb

$b = Mysql_select_db("mydb");
if (!$b)
{
//Баз данных не выбрана

Echo 'Не удалось выбрать базу данных.
Пожалуйста, повторите попытку позже.';
return 0;
}
return 1;
}
}
?>

Теперь пора создавать функции в файле units.db, которые будут выполнять все необходимые действия.
function readgost()
{
$query = "select * from gost";
$result = mysql_query($query);
return $result;
}

В переменную $query помещаем SQL-запрос для извлечения всех данных из таблицы gost. Функция mysql_query() выполняет переданные ей команды и возвращает результат.

Теперь рассмотрим, как происходит вывод сообщений. За это, как было ранее сказано, отвечает функция printmessages($n,$r).
function printmessages($n,$r)
{

$outprint = array();
for ($i=0; $i <$n; $i++)
{
$outprint[$n-$i-1] = mysql_fetch_array($r);
}

//сортируем как надо

for ($i=0; $i <$n-1; $i++)
{
for ($j=$i+1; $j <$n; $j++)
{
$row1=$outprint[$i];
$arr1 = $row1['textid'];
$row2=$outprint[$j];
$arr2 = $row2['textid'];
if ($arr1<$arr2)
{
$arr3=$outprint[$i];
$outprint[$i]=$outprint[$j];
$outprint[$j]=$arr3;
}
}
}
?>
// Выводим сообщения
for ($i=0; $i <$n; $i++)
{
$row=$outprint[$i];
echo '
'.($i+1).'. '.
date(" d/m/Y H:i:s",stripslashes($row['dt'])).
'Отправитель:'.
htmlspecialchars(stripslashes($row['name'])).'
';

echo '
Текст сообщения:
'.
htmlspecialchars(stripslashes($row['txt'])).'
';
}

}

Функция htmlspecialchars() нужна для удаления HTML тегов. Также используется функция stripslashes(). Она восстанавливает специальные символы, которые были отменены функцией addslashes() при сохранении сообщений в базу данных.
function savegost($UserName,$n,$txt)
{

//Определяем время

$t = mktime();

//проверяем, были ли заполнены поля формы.
//Если да, то сохраняем сообщение.

if (!$UserName)
{
Echo('Вы не ввели своё имя.');
}
elseif (!$txt)
{
echo 'Вы не ввели текст сообщения.';
}
else
{
//Отменяем специальные символы.

$UserName = addslashes($UserName);
$txt = addslashes($txt);

$n++;

//заносим в переменную $query SQL-запрос,
//необходимый для сохранения сообщения.

$query = "insert into gost values
('".$n."','".$t."','".$UserName."','".$txt."')";

$result = mysql_query($query);
if (!$result)
{
echo '

Извините,'.
'ваше сообщение сохранить не удалось.

';
}
}
}

Теперь перейдём к созданию формы отправки сообщения. За это отвечает функция showgostform().
function showgostform()
{
?>



Форма отправки сообщения:

Ваше имя :


Поле для ввода: