Перейти к содержимому

Как написать форум на php

  • автор:

Как создать форум?

Как создать форум на php ? Какие коды нужны? Какие блоки создавать? надо ли подключаться к базе данных?

Отслеживать
4,966 10 10 золотых знаков 33 33 серебряных знака 62 62 бронзовых знака
задан 12 июл 2012 в 11:37
127 2 2 золотых знака 4 4 серебряных знака 9 9 бронзовых знаков

Чтобы создать форум, нужно сначала прочесть несколько книг по PHP, а затем практика, практика и еще раз практика.

16 июл 2012 в 10:02

@d1b2, Согласно правилам форума, вопросы не должны сводиться к решению либо завершению учебных заданий за учащихся. Пожалуйста, уточните, что вы сделали сами и что не получилось. может так попробовать 🙂

16 июл 2012 в 10:27

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Ого, вы меню на html и css осилить не можете, а уже на форум претендуете))

Используйте готовое решение phpBB.

База данных нужна, а еще вебсервер. Но чтоб довести его до ума, все равно надо знать html + css .

Отслеживать
371 1 1 золотой знак 5 5 серебряных знаков 13 13 бронзовых знаков
ответ дан 12 июл 2012 в 11:43
3,886 18 18 серебряных знаков 26 26 бронзовых знаков

Скачай готовый движок форума. Их много. Вообще я Вам бы посоветовал использовать проект ucoz.ru. Там все уже готово. Сайт сделан специально для новичков.

Отслеживать
ответ дан 12 июл 2012 в 11:42
8,059 5 5 золотых знаков 33 33 серебряных знака 52 52 бронзовых знака

да там ни так интересно как на php темболее я там уже всё сделал у меня 3 сайта! я хочу вот на php создать!

12 июл 2012 в 11:43
Молодчинка то какой!:)
12 июл 2012 в 12:17
@lirik90 🙂 +1
12 июл 2012 в 12:18

  • php
  • html
  • css
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.1.3.2953

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Как создать форум в phpBB

Вы решили создать интернет форум, своё интернет сообщество, где все могли бы обмениваться своими мнениями, идеями, опытом. Сделать это можно установив движок phpBB, который позволит осуществить задуманное. В этой статье пойдёт речь о том, как установить phpBB форум и настроить его под собственные нужды.

Коротко о phpBB

phpBB — это популярное свободное программное обеспечение для создания форумов и их управления. [1] Данное программное обеспечение является наиболее распространённым решением с открытым кодом для организации конференций в интернете. phpBB3 является новейшим продуктом в линейке начиная с 2000 года. Как и его предшественники, phpBB3 является функциональным, имеет дружественный интерфейс и полностью поддерживается phpBB Team. В phpBB3 существенно улучшены качества, сделавшие популярным phpBB2, добавлены наиболее необходимые функции, которые отсутствовали в предыдущих версиях. Программное обеспечение форума осуществляется на многочисленных языках, в том числе и на русском.

Установка форума

  • Для начала нужно скачать файлы с официального сайта
  • Затем загрузить их на сервер хостинга. Либо, в качестве пробы, можно загрузить файлы на локальный сервер, при помощи такого инструмента, как Denwer, чтобы, не имея интернета, своего собственного хостинга, понять процесс установки данного движка
  • После этого на Вашем хостинге необходимо создать базу данных MySQL для форума.

Процесс установки форума phpBB

  1. После того, как база данных была создана и на хостинг были загружены файлы движка, можно перейти на страницу сайта, где Вас поприветствует мастер установки форума, как это показано на рисунке. Можно выбрать язык установки, а также прочитать руководство к установки, если возникают трудности или вопросы по процессу установки.
  2. Далее переходим на вкладку «Установка», где перечислены какие базы данных можно использовать для данного форума. Жмём кнопку «Следующий шаг», где система проверяет совместимость программного обеспечения с сервером, чтобы удостовериться в том, что phpBB3 можно установить и запустить. Внимательно ознакомьтесь с результатами и не переходите к следующему шагу установки до тех пор, пока необходимые проверки не будут пройдены. Важно, чтобы были напротив требований положительный результат, а в разделе «Поддерживаемые базы данных» была хотя бы одна система баз данных на сервере хостинга. Если тут возникли трудности, то необходимо обратиться в службу поддержки хостинга.
  3. Если всё хорошо, то внизу страницы жмём кнопку «Начать установку». После чего Вы перейдёте на страницу, где необходимо указать тип и данные базы данных MySQL, которая была уже создана. Жмём кнопку «Следующий шаг», где будет осуществлена проверка с соединением базы данных и идём дальше. Теперь необходимо ввести данные администратора форума (имя, пароль, электронная почта) и запомнить их. Здесь же можно выбрать язык форума.
  4. После проверки данных администратора и файла конфигурации переходим к следующему шагу, где можно внести дополнительные корректировки в настройки форума (настройки почты, настройки URL сервера). Вносите эти данные по своему усмотрению и жмите кнопку «Следующий шаг», после чего все данные сохраняются и можно перейти к заключительному этапу установки phpBB форума. Если всё прошло успешно система оповестит об удачной установке форума и можно перейти к нему или на страницу администратора для дальнейшей настройки форума.

Мастер установки форума phpBB

Проверка на совместимость

Скрипт форума на PHP своими руками. Часть 1

В этой серии статей я постараюсь рассказать, как написать форум самому. Возможности этого форума довольно ограничены — но я и не ставил целью написать полнофункциональный форум, вроде IPB, а лишь реализовать основные функции, чтобы форум имел право именоваться форумом.

Прошу простить моих читателей за стиль изложения — боюсь, журналист из меня неважный. Да и в программировании я еще новичок — так что многие моменты в реализации форума могут быть спорны с точки зрения более опытных коллег. Но мне хотелось попробовать свои силы в новом проекте и приобрести новый опыт.

Все операции на форуме — показ темы, добавление нового сообщения (поста), просмотр профиля участника выполняются одним скриптом index.php. Чтобы знать, какое действие выполняет посетитель форума, методом GET передается параметр action. Вот и первая часть скрипта index.php

// Параметры соединения с сервером БД
require ‘config/connect.php’ ;
// Файл конфигурации
require ‘config/config.php’ ;
// Вспомогательные функции
require ‘functions/functions.php’ ;

// Соединяемся с сервером БД
mysql_connect ( DB_LOCATION , DB_USER , DB_PASSWORD );
mysql_query ( ‘SET NAMES cp1251’ );
mysql_select_db ( DB_NAME );

// Содержимое html-тега title
$pageTitle = FORUM_TITLE ;

if ( !isset( $_GET [ ‘action’ ] ) ) $_GET [ ‘action’ ] = ‘showMainPage’ ;
$actions = array( ‘showMainPage’ ,
‘showForum’ ,
‘showTheme’ ,
‘addForumForm’ ,
‘addForum’ ,
‘editForumForm’ ,
‘updateForum’ ,
‘forumUp’ ,
‘forumDown’ ,
‘deleteForum’ ,
‘addThemeForm’ ,
‘addTheme’ ,
‘editThemeForm’ ,
‘updateTheme’ ,
‘deleteTheme’ ,
‘lockTheme’ ,
‘unlockTheme’ ,
‘addPostForm’ ,
‘addPost’ ,
‘quickReply’ ,
‘editPostForm’ ,
‘updatePost’ ,
‘deletePost’ ,
‘loginForm’ ,
‘login’ ,
‘logout’ ,
‘addNewUserForm’ ,
‘addNewUser’ ,
‘activateUser’ ,
‘newPasswordForm’ ,
‘sendNewPassword’ ,
‘activatePassword’ ,
‘editUserForm’ ,
‘updateUser’ ,
‘editUserFormByAdmin’ ,
‘updateUserByAdmin’ ,
‘showUsersList’ ,
‘showUserInfo’ ,
‘sendMsgForm’ ,
‘sendMessage’ ,
‘deleteMsg’ ,
‘showMsgBox’ ,
‘showInBox’ ,
‘showOutBox’ ,
‘showMsg’ ,
‘sendMailForm’ ,
‘sendMail’ ,
‘searchForm’ ,
‘searchResult’ );
if ( ! in_array ( $_GET [ ‘action’ ], $actions ) ) $_GET [ ‘action’ ] = ‘showMainPage’ ;

switch ( $_GET [ ‘action’ ] )
<
case ‘showMainPage’ : // главная страница форума
$content = getMainPage ( $pageTitle );
break;
case ‘showForum’ : // список тем форума
$content = getForum ( $pageTitle );
break;
case ‘showTheme’ : // список сообщений темы
$content = getTheme ( $pageTitle );
break;
case ‘addForumForm’ : // форма для добавления нового форума
$content = getAddForumForm ();
break;
case ‘addForum’ : // добавить новый форум
$content = addForum ();
break;
case ‘editForumForm’ : // форма для редактирования форума
$content = getEditForumForm ();
break;
case ‘updateForum’ : // обновить запись в таблице БД TABLE_FORUMS
$content = updateForum ();
break;
case ‘forumUp’ :
$content = forumUp (); // переместить форум «вверх»
break;
case ‘forumDown’ :
$content = forumDown (); // переместить форум «вниз»
break;
case ‘deleteForum’ : // удалить запись в таблице БД TABLE_FORUMS
$content = deleteForum ();
break;
case ‘addThemeForm’ : // форма для добавления новой темы
$content = getAddThemeForm ();
break;
case ‘addTheme’ : // добавить новую тему
$content = addTheme ();
break;
case ‘editThemeForm’ : // форма для редактирования темы
$content = getEditThemeForm ();
break;
case ‘updateTheme’ : // обновить запись в таблице БД TABLE_THEMES
$content = updateTheme ();
break;
case ‘deleteTheme’ : // удалить тему
$content = deleteTheme ();
break;
case ‘lockTheme’ : // закрыть тему
$content = lockTheme ();
break;
case ‘unlockTheme’ : // открыть тему
$content = unlockTheme ();
break;
case ‘addPostForm’ : // форма для добавления нового сообщения (поста)
$content = getAddPostForm ();
break;
case ‘addPost’ : // добавить новую запись в таблицу БД TABLE_POSTS
$content = addPost ();
break;
case ‘quickReply’ : // добавить новую запись в таблицу БД TABLE_POSTS
$content = quickReply ();
break;
case ‘editPostForm’ : // форма для редактирования сообщения (поста)
$content = getEditPostForm ();
break;
case ‘updatePost’ : // обновить запись в таблице БД TABLE_POSTS
$content = updatePost ();
break;
case ‘deletePost’ : // удалить запись в таблице БД TABLE_POSTS
$content = deletePost ();
break;
case ‘loginForm’ : // форма для входа на форум (авторизация)
$content = getLoginForm ();
break;
case ‘login’ : // вход на форум (авторизация)
$content = login ();
break;
case ‘logout’ : // выход
$content = logout ();
break;
case ‘addNewUserForm’ : // форма для регистрации нового пользователя
$content = getAddNewUserForm ();
break;
case ‘addNewUser’ : // добавить нового пользователя
$content = addNewUser ();
break;
case ‘activateUser’ : // активация учетной записи нового пользователя
$content = activateUser ();
break;
case ‘newPasswordForm’ : // форма для получения нового пароля
$content = newPasswordForm ();
break;
case ‘sendNewPassword’ : // выслать пользователю новый пароль
$content = sendNewPassword ();
break;
case ‘activatePassword’ : // активация нового пароля
$content = activatePassword ();
break;
case ‘editUserForm’ : // форма для редактирования профиля
$content = getEditUserForm ();
break;
case ‘updateUser’ : // обновить данные о пользователе
$content = updateUser ();
break;
case ‘editUserFormByAdmin’ : // форма редактирования профиля (для администратора)
$content = getEditUserFormByAdmin ();
break;
case ‘updateUserByAdmin’ : // обновить данные о пользователе (для администратора)
$content = updateUserByAdmin ();
break;
case ‘showUsersList’ : // список пользователей форума
$content = getUsersList ();
break;
case ‘showUserInfo’ : // информация о пользователе (profile)
$content = showUserInfo ();
break;
case ‘sendMsgForm’ : // форма для отправки личного сообщения
$content = getSendMsgForm ();
break;
case ‘sendMessage’ : // отправить личное сообщение
$content = sendMessage ();
break;
case ‘deleteMsg’ : // удалить личное сообщение
$content = deleteMessage ();
break;
case ‘showMsg’ : // показать сообщение
$content = getMessage ();
break;
case ‘showInBox’ : // папка «Входящие»
$content = getInMsgBox ();
break;
case ‘showOutBox’ : // папка «Исходящие»
$content = getOutMsgBox ();
break;
case ‘sendMailForm’ : // форма для отправки письма пользователю
$content = getSendMailForm ();
break;
case ‘sendMail’ : // отправка письма
$content = sendMail ();
break;
case ‘searchForm’ : // форма для поиска по форуму
$content = searchForm ();
break;
case ‘searchResult’ : // результаты поиска по форуму
$content = searchResult ();
break;
default:
$content = getMainPage ();
>

$menu = getMainMenu ();
$html = file_get_contents ( ‘./templates/default.html’ );
$html = str_replace ( » , $pageTitle , $html );
$html = str_replace ( » , FORUM_DESCRIPTION , $html );
$html = str_replace ( » , $menu , $html );
$html = str_replace ( » , $content , $html );

Из комментариев должно быть ясно, что для каждого из возможных значений переменной $_GET[‘action’] вызывается соответствующая функция. Например, чтобы добавить новую тему, вызывается функция addPost(), а для просмотра информации об участнике форума — функция showUserInfo().

Теперь, когда мы определили для себя все возможные значения переменной $_GET[‘action’], нам осталось лишь реализовать все эти функции. Мы рассмотрим их все по порядку — так что к концу этой серии статей у вас будут все исходные коды форума, и вы сможете установить его, и протестировать у себя на локальном компьютере или на хостинге.

Но пережде чем приступить к рассмотрению функций, мы посмотрим на файл конфигурации config.php. Он содержит настройки форума.

// Названое форума
define ( ‘FORUM_TITLE’ , ‘Форум web-мастера’ );
// Описание форума форума
define ( ‘FORUM_DESCRIPTION’ , ‘Форум для тех, кто делает сайты’ );
// Названия таблиц в БД форума
define ( ‘TABLE_FORUMS’ , ‘forums’ );
define ( ‘TABLE_THEMES’ , ‘themes’ );
define ( ‘TABLE_POSTS’ , ‘posts’ );
define ( ‘TABLE_USERS’ , ‘authors’ );
define ( ‘TABLE_MESSAGES’ , ‘messages’ );
// Максимальный размер файла вложения в байтах
define ( ‘MAX_FILE_SIZE’ , 524288 );
// Максимальный размер файла аватара в байтах
define ( ‘MAX_AVATAR_SIZE’ , 65536 );
// Минимальная длина пароля пользователя
define ( ‘MIN_PASSWORD_LENGTH’ , 6 );
// Адрес электронной почты администратора; этот e-mail
// будет указан в поле FROM писем, которое один пользователь
// напишет другому; этот же e-mail будет указан в письмах
// с просьбой активировать учетную запись или пароль
// (в случае его утери)
define ( ‘ADMIN_EMAIL’ , ‘admin@mail.ru’ );
// Под этим именем будет показано сообщение (пост)
// не зарегистрированного пользователя
define ( ‘NOT_REGISTERED_USER’ , ‘Посетитель’ );
// Максимальная длина тела сообщения (поста)
define ( ‘MAX_POST_LENGTH’ , 12288 );
// Максимальная длина тела личного сообщения, которое
// один пользователь форума может написать другому
define ( ‘MAX_MESSAGE_LENGTH’ , 8192 );
// Максимальная длина тела письма, которое один пользователь форума
// может написать другому
define ( ‘MAX_MAILBODY_LENGTH’ , 8192 );
// Задержка в секундах перед редиректом; когда пользователь выполняет
// какое-то действие (например, добавляет сообщение) ему выдается
// сообщение, что «Ваше сообщение было успешно добавлено» и делается
// редирект на нужную страницу
define ( ‘REDIRECT_DELAY’ , 2 );
// Включает режим отладки — на экран выдаются сообщения об ошибках
define ( ‘DEBUG_MODE’ , 1 );
// Время жизни cookies в днях; в cookies сохраняются логин и пароль пользователя,
// если была выбрана опция «Автоматически входить при каждом посещении»
define ( ‘COOKIE_TIME’ , 30 );
// Максимальное количество личных сообщений в папках
// «Входящие» и «Исходящие»
define ( ‘MAX_COUNT_MESSAGES’ , 50 );
// Время в минутах, в течение которого считается, что пользователь «on-line»
define ( ‘TIME_ON_LINE’ , 5 );
// Количество пользователей на одну страницу
// в списке зарегистрированных пользователей
define ( ‘USERS_PER_PAGE’ , 20 );
// Количество сообщений (постов) на одной странице
define ( ‘POSTS_PER_PAGE’ , 5 );
// Количество тем на одной странице
define ( ‘THEMES_PER_PAGE’ , 20 );
?>

Итак, первая функция — getMainPage() возвращает главную страницу форума. Главная страница выглядит как список всех форумов. Для каждого форума выводится список трех тем форума, в которых были новые сообщения.

// Функция возвращает html главной страница форума (список форумов)
function getMainPage ( & $pageTitle )
<
$pageTitle = $pageTitle . ‘ / Список форумов’ ;
$query = «SELECT id_forum, name, description FROM » . TABLE_FORUMS . » WHERE 1 ORDER BY pos» ;
$res = mysql_query ( $query );
if ( ! $res ) <
$msg = ‘Ошибка при получении списка форумов’ ;
$err = ‘Ошибка при выполнении запроса:
‘ .
$query . ‘
‘ . mysql_errno (). ‘: ‘ . mysql_error (). ‘
‘ .
‘(Файл ‘ . __FILE__ . ‘, строка ‘ . __LINE__ . ‘)’ ;
return showErrorMessage ( $msg , $err , true , » );
>
$html = ‘

Список форумов

‘ . «\n» ;
if ( mysql_num_rows ( $res ) > 0 ) <
while ( $forum = mysql_fetch_array ( $res ) )

$html = $html . ‘

‘ . «\n» ;
$html = $html . ‘

‘ . «\n» ;
// Выводим название форума
$html = $html . ‘

‘ . «\n» ;
// Ссылка «Править форум»
if ( isset( $_SESSION [ ‘user’ ] ) and $_SESSION [ ‘user’ ][ ‘status’ ] == ‘admin’ ) <
$html = $html . ‘

‘ . «\n» ;
>
$html = $html . ‘

‘ . «\n» ;
$html = $html . ‘

‘ ;
$html = $html . ‘

.
$_SERVER [ ‘PHP_SELF’ ]. ‘?action=showForum&idForum=’ .
$forum [ ‘id_forum’ ]. ‘»>’ .
$forum [ ‘name’ ]. ‘

‘ . «\n» ;
$html = $html . ‘

‘ . $forum [ ‘description’ ]. ‘

‘ ;
// Выводим краткое описание форума
$html = $html . ‘

. $_SERVER [ ‘PHP_SELF’ ].
‘?action=editForumForm&idForum=’ . $forum [ ‘id_forum’ ]. ‘»> src=»./images/icon_edit.gif»
alt=»Править» title=»Править» /> ‘ . «\n» ;
$html = $html . ‘. $_SERVER [ ‘PHP_SELF’ ].
‘?action=deleteForum&idForum=’ . $forum [ ‘id_forum’ ]. ‘»> src=»./images/icon_delete.gif» alt=»Удалить» title=»Удалить» />

‘ . «\n» ;

// Выводим три темы форума, сортирируя их по последнему сообщению
$q = «SELECT a.id_theme, a.name, a.time, a.locked,
IFNULL(b.id_author, 0),
IFNULL(b.name, ‘» . NOT_REGISTERED_USER . «‘),
(COUNT(*)-1), IFNULL(MAX(c.time), ‘0000-00-00 00:00:00’) AS last_post
FROM » . TABLE_THEMES . » a LEFT JOIN » . TABLE_USERS . » b
ON a.id_author=b.id_author
LEFT JOIN » . TABLE_POSTS . » c
ON a.id_theme=c.id_theme
WHERE id_forum color: rgb(0, 119, 0);»>. $forum [ ‘id_forum’ ]. »
GROUP BY a.id_theme, a.name, a.time,
IFNULL(b.id_author, 0),
IFNULL(b.name, ‘» . NOT_REGISTERED_USER . «‘)
ORDER BY last_post DESC
LIMIT 3″ ;
$r = mysql_query ( $q );

$html = $html . getUsersOnLine ();

Интерес здесь представляет лишь запрос на выборку трех тем для каждого форума. Темы сортируются по последнему сообщению (посту). Как видите, здесь идет связывание трех таблиц БД: TABLE_THEMES, TABLE_USERS и TABLE_POSTS.

$q = «SELECT a.id_theme, a.name, a.time, a.locked,
IFNULL(b.id_author, 0),
IFNULL(b.name, ‘» . NOT_REGISTERED_USER . «‘),
(COUNT(*)-1), IFNULL(MAX(c.time), ‘0000-00-00 00:00:00’) AS last_post
FROM » . TABLE_THEMES . » a LEFT JOIN » . TABLE_USERS . » b
ON a.id_author=b.id_author
LEFT JOIN » . TABLE_POSTS . » c
ON a.id_theme=c.id_theme
WHERE id_forum color: rgb(0, 119, 0);»>. $forum [ ‘id_forum’ ]. »
GROUP BY a.id_theme, a.name, a.time,
IFNULL(b.id_author, 0),
IFNULL(b.name, ‘» . NOT_REGISTERED_USER . «‘)
ORDER BY last_post DESC
LIMIT 3″ ;
?>

Прежде чем продолжить наше повествавание, необходимо сделать небольшое лирическое отступление и рассказать о структуре базы данных форума. База данных содержит шесть таблиц.

Таблица TABLE_USERS содержит информацию о пользователях форума. Вот запрос на создание таблицы

CREATE TABLE `authors` ( `id_author` int(6) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL DEFAULT '', `passw` varchar(255) NOT NULL DEFAULT '', `email` varchar(64) NOT NULL DEFAULT '', `timezone` tinyint(2) NOT NULL DEFAULT '0', `url` varchar(64) NOT NULL DEFAULT '', `icq` varchar(12) NOT NULL DEFAULT '', `about` tinytext NOT NULL, `signature` tinytext NOT NULL, `photo` varchar(32) NOT NULL DEFAULT '', `puttime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `last_visit` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `themes` mediumint(8) UNSIGNED NOT NULL DEFAULT '0', `posts` int(10) UNSIGNED NOT NULL DEFAULT '0', `status` enum('user','moderator','admin') NOT NULL DEFAULT 'user', `activation` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id_author`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Поля таблицы TABLE_USERS:

  • id_author — первичный ключ таблицы, снабженный механизмом auto_increment
  • name — имя пользователя
  • passw — пароль пользователя, зашифрованный с помощью алгоритма md5
  • email — e-mail пользователя
  • timezone — временная зона
  • url — URL домашней странички
  • icq — ICQ
  • about — интересы
  • signature — подпись
  • photo — фото (аватар)
  • puttime — время регистрации
  • last_visit — время последнего посещения форума
  • themes — количество тем, начатых пользователем
  • posts — количество сообщений (постов)
  • status — статус пользователя
  • activation — поле для хранения кода активации

Таблица TABLE_FORUMS содержит информацию о всех форумах. Запрос на создание таблицы

CREATE TABLE `forums` ( `id_forum` int(6) NOT NULL AUTO_INCREMENT, `name` text NOT NULL, `description` mediumtext NOT NULL, `pos` smallint(6) NOT NULL DEFAULT '0', PRIMARY KEY (`id_forum`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Поля таблицы TABLE_FORUMS:

  • id_forum — первичный ключ таблицы
  • name — название форума
  • description — краткое описание форума
  • pos — позиция в списке

Таблица TABLE_THEMES содержит информацию о темах форума. Запрос на создание таблицы

CREATE TABLE `themes` ( `id_theme` int(11) NOT NULL AUTO_INCREMENT, `name` tinytext NOT NULL, `author` tinytext NOT NULL, `id_author` int(6) NOT NULL DEFAULT '0', `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `id_forum` int(2) NOT NULL DEFAULT '0', `locked` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id_theme`), FULLTEXT KEY `search` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Поля таблицы TABLE_THEMES:

  • id_theme — первичный ключ таблицы
  • name — название темы
  • author — имя автора темы
  • id_author — ID автора темы
  • time — время создания темы
  • id_forum — ID форума, которому принадлежит тема
  • locked — если равно 1, значит тема закрыта (заблокирована)

Таблица TABLE_POSTS содержит информацию о сообщениях (постах) форума. Запрос на создание таблицы

CREATE TABLE `posts` ( `id_post` int(11) NOT NULL AUTO_INCREMENT, `name` text NOT NULL, `putfile` tinytext NOT NULL, `author` tinytext NOT NULL, `id_author` int(6) UNSIGNED NOT NULL DEFAULT '0', `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `edittime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `id_editor` int(6) UNSIGNED NOT NULL DEFAULT '0', `id_theme` int(11) NOT NULL DEFAULT '0', `locked` tinyint(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id_post`), FULLTEXT KEY `search` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Поля таблицы TABLE_THEMES:

  • id_post — первичный ключ таблицы
  • name — сообщение (пост)
  • putfile — имя файла вложения
  • author — имя автора сообщения
  • id_author — ID автора сообщения
  • time — время создания сообщения
  • edittime — время редактирования сообщения
  • id_editor — ID пользователя, который редактировал сообщение
  • id_theme — ID темы, которому принадлежит сообщение
  • locked — если равно 1, значит сообщение заблокировано

Таблица TABLE_MESSAGES содержит сообщения, которымы могут обмениваться зарегистрированные аользователи форума. Запрос на создание таблицы

CREATE TABLE `messages` ( `id_msg` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, `to_user` int(10) UNSIGNED NOT NULL DEFAULT '0', `from_user` int(10) UNSIGNED NOT NULL DEFAULT '0', `sendtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `subject` varchar(255) NOT NULL DEFAULT '', `message` text NOT NULL, `id_rmv` int(10) UNSIGNED NOT NULL DEFAULT '0', `viewed` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id_msg`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Поля таблицы TABLE_MESSAGES:

  • id_msg — первичный ключ таблицы
  • to_user — ID пользователя, котоый получит сообщение
  • from_user — ID автора сообщения
  • sendtime — время создания сообщения
  • subject — тема сообщения
  • message — сообщение
  • id_rmv — ID пользователя, который удалил сообщение
  • viewed — если равно 1, значит сообщение было просмотрено получателем

Ну вот, с базой данных форума мы разобрались, теперь давайте посмотрим вот на этот кусок кода и разберемся, что из себя представляет «файл шаблона форума»:

.
// Получаем в переменную содержимое файла шаблона форума
$html = file_get_contents ( ‘./templates/default.html’ );
$html = str_replace ( » , $pageTitle , $html );
$html = str_replace ( » , FORUM_DESCRIPTION , $html );
$html = str_replace ( » , $menu , $html );
$html = str_replace ( » , $content , $html );
.
?>

Файл шаблона форума

Пожалуй, на сегодня это все. Продолжение следует.

Как написать форум на php

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

Помог: 3 раз(а)

Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.

Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо

После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..

Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Цитата:

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *