|
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-запрос, добавляющий в таблицу новую запись |