PHP: разрабатываем свой xForum

Никита "Nikitos" Кислицин

Xakep, номер #050, стр. 050-086-2


Также есть таблица "xanswer", в которой хранятся все ответы на каждую из дискуссий. Она имеет следующую структуру: aid int not null auto_increment primary key, pid int, answer text, author_name varchar (50), author_email varchar (50), date date, time varchar(20), ip varchar(30), где aid расшифровывается как answer id.

Следует заметить, что "xanswer" - плохо структурированная таблица-помойка, в которой складируются ответы на все темы. В общем-то, такая организация таблиц, наверное, не является оптимальной. Хотя, можно выйти из положения с помощью динамического создания новых таблиц: при открытии новой темы создавалась бы еще одна таблица, в которой хранится нить беседы по одной теме. Правда, в этом случае помойка творилась бы в самой БД, что крайне нежелательно. Язык же SQL чрезвычайно гибок и позволяет, не замечая того, эффективно отбирать из "помойки" нужные сообщения.

Третья таблица используется для хранения информации об администраторах и имеет следующие поля: uid int not null auto_increment primary key, admin_name varchar(30), admin_email varchar(30), access int. uid расшифровывается как user id.

Итак... Форум будет представлять собой компактную систему из двух скриптов - forum.php и admin.php. Первый – это ядро форума, второй позволяет этот форум администрировать.

Coding

Напомню, описание функций в общем виде осуществляется следующим образом:

function name([$using_var1, $using_var2, ...])

{

function_code;

return $return;

}

Служебное выражение "function name" объявляет функцию с именем name. В круглых скобках указываются принимаемые параметры. Они могут быть опущены, если функция таковых не использует. Процедура возвращает выражение, следующее за служебным словом return, которое также может отсутствовать. В качестве примера приведу функцию, которая вычисляет площадь прямоугольника по его сторонам $a и $b.

Function square ($a, $b)

{

return $a*$b;

}

Вызов процедуры в программе выглядит следующим образом:

<? Echo square(10, 43); ?>

Такой код, очевидно, выведет на экран 10*43=430.

Но вернемся к теме нашей беседы. В скрипте forum.php я описываю ряд функций, которыми буду манипулировать в самой программе. Ниже я подробно остановлюсь на ключевых моментах скрипта и новых используемых выражениях. Разобраться с хтмлом и уже обсуждаемыми ранее конструкциями - не очень сложная задача, с которой ты, на мой взгляд, справишься.

Функция addmessage($messg,$name,$email) добавляет в БД новую тему $messg, написанную человеком по имени $name, имеющим электронный адрес $email. Дата и время создания сообщения определяются при помощи функции date(params), возвращающей строку, используя указанный шаблон, в который можно подставлять символы, указывающие на некоторый текущий временной параметр (год, месяц, день, час и т.д.). Параметры могут быть самыми разными. Подробнее об этом можно почитать на моем сайте http://nikitos.inc.ru.

Назад на стр. 050-086-1  Содержание  Вперед на стр. 050-086-3