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

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

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


Далее составляется строка запроса к SQL-серверу, которая вставит в таблицу "xforum" новую запись. $REMOTE_ADDR - стандартная переменная окружения веб-сервера, в ней лежит IP-адрес запросившего страницу компьютера.

showmessages($page) постранично отображает все темы форума. Постраничность реализуется следующим образом: составляется запрос на получение ВСЕХ дискуссий, в переменную $a помещается количество возвращенных запросом записей (mysql_num_rows()). $a делится на тридцать (именно такое количество сообщений мы выводим на одной странице), результат округляется в большую сторону (функция ceil()). Это и есть то количество страниц, на котором могут разместиться все существующие темы. Функция принимает единственный параметр - $page, обозначающий номер выводимой страницы. Создается sql-запрос, возвращающий не более 29 отсортированных по убыванию параметра $pid записей, начиная с параметра $from, который, естественно, зависит от номера страницы.

Функция reply($pid,$messg,$name,$email) добавляет в таблицу "xanswer" новую запись с ответом $messg чела $name на мессагу $pid.

showmessg($pid) - выводит на экран сообщение $pid, вставляя его в разноцветную табличку. replies($pid) показывает все ответы на дискуссию $pid, также размещая их в табличке, но выделяя другим цветом.

После описания всех этих функций (они простые и хорошо прокомментированы) начинается непосредственно программа, в которой различным образом комбинируются описанные функции. Там все понятно из комментариев. Занавес. Напомню, конечную версию форума и более подробную информацию по используемым функциям ты можешь найти на моем сайте nikitos.inc.ru в разделе "PHP".

<... html/заголовки ...>

<?

#Проверка переменных, если хотя бы что-то не так, то скрипт не выполняется.

#О security у нас будет отдельный материал, тогда и поговорим.

function addmessage_form()

{

# ... выводит html - теги формы для добавления нового сообщения. Поля: name, email, messg и hidden-поле act, имеющее параметр add.

}

function addanswer_form($pid)

{

# ... выводит html - теги формы для ответа на сообщение. Поля: name, email, messg и два hidden-поля pid=$pid и act="reply"

}

function head()

{

# теги, создающие табличку для вывода тем форума

}

function connect() #функция подключения к БД

{

$co=mysql_connect("localhost", "root","");

if (!($co)) {echo "Невозможно подключиться!";} else { return $co; }

}

function addmessage($messg,$name,$email) # Функция, добавляющая новую тему в таблицу xforum

{

$date = date("Y-m-d"); #составляем строку с датой

$time = date("H-i"); #строку со временем

$sql="insert into xforum values(Null, '$messg', '$name', '$email', '$date', '$time', '$REMOTE_ADDR')"; #sql-запрос, добавляющий в таблицу новую запись

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