X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Как написать гостевую книгу
sc2r2bey
sc2r2bey
Topic Starter сообщение 4.11.2009, 16:15; Ответить: sc2r2bey
Сообщение #1


Где-то прочитал, что каждый программист в своей жизни должен написать: гостевую книгу, биллинг и CMS.
Поэтому попробую написать гостевую книгу(ГК), сам процесс создания ГК сделаю от простого к сложному, т.е. начну с простого функциоанала, а потом постепенно начну усложнять.
Основные задачи, которые хочу решить в этом проекте:
1. Отделить код от дизайна, т.е. создание шабона и простого шаблонизатора.
2. Создание ядра ГК, которое будет отвечать за глобальные функции ГК.
3. Создание модульности, т.е. ГК будет реалищзована как отдельный модуль, который можно будет подключать к любому проекту.б

1 этап
Основные требование к ГК:
1. Вывод по 10 сообщений на странице, сначало идут более свежие, потом более старые сообщения.
2. Возможность добавлять сообщения всем желающим.
3. Сообщение состоит из 3 полей:
- имя автора сообщения
- название сообщения
- текст сообщения


Для начала достачно.

Покам будем создавать и отлаживать этот этам, можно предлагать, что еще можно добавит в ГК.
А так же просьба при критике кода конкретизировать свои высказывания и подкреплять кодом.

Создадим следующую структуру каталогов, соответственно в корень кинем файл index.php в котором и будет происходить основная работа:
include\ - здесь будут собираться все файлы ядра
js\ - здесь скрипты
media\ - здесь будут храниться картинки
module\ - здесь модули
templete\ - здесь шаблон
templete\ css\ - здесь будет храниться файл style.css, что в нем думаю не стоит объянять ;)
templete\ images\ - здесь будет хранится изображения используемые в дизайне

Создадим в папке include файл config.php, селедующего содержания:

config.php

[php]<?php

if(!defined("INCLUDE")) exit('запрет на прямой доступ');

// Имя сервера базы данных
$dblocation = "localhost";

// Имя базы данных
$dbname = "guestbook";

// Имя пользователя
$dbuser = "root";

// Пароль
$dbpasswd = "";

// администратор
$dbadmin = "sc2r2bey";

// e-mail администратора
$dbemail = "admin@localhost";

// Соединяемся с сервером базы данных
$dbconnect = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!$dbconnect)
{
echo( "<P>Сервер базы данных не доступен, зайдите позже!</P>" );
exit();
}

// Выбираем базу данных
if (! @mysql_select_db($dbname,$dbconnect) )
{
echo( "<P>База данных не доступна, зайдите позже!</P>" );
exit();
}

// код ошибки
$error = "ошибка 404. Упс! Такой страницы не сущеструет.;)";

// количество выводимых сообщений на страницу
$number = 10;
?>[/php]

в эту же папку добавил файл function.php

в папку module добавим guestbook.php

а в папку templete файл guestbook.tpl

в базе данных, она у нас называеться создадим таблицу по названием message, ее структура описана выше:

CREATE TABLE `guestbook`.`message` (
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`data_publisher` DATE NOT NULL ,
`name` VARCHAR( 50 ) NOT NULL ,
`title` VARCHAR( 50 ) NOT NULL ,
`message` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM


сам код с комментариями в следующем посте, а пока жду критику и пожелания :)


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
НЕПЛОХОЙ
НЕПЛОХОЙ
сообщение 4.11.2009, 19:08; Ответить: НЕПЛОХОЙ
Сообщение #2


тема очень интересная

1. Отделить код от дизайна, т.е. создание шабона и простого шаблонизатора.
2. Создание ядра ГК, которое будет отвечать за глобальные функции ГК.
3. Создание модульности, т.е. ГК будет реалищзована как отдельный модуль, который можно будет подключать к любому проекту.б

а нужено ли это для такого простого скрипта? замашки как на CMS)) возможно я просто халявщик и проще подхожу к таким работам...

1. Вывод по 10 сообщений на странице, сначало идут более свежие, потом более старые сообщения.

лучше сделай чтоб через админку можно было настраивать количество выводимых сообщений и направление от старых к новым или от новых к старым.

2. Возможность добавлять сообщения всем желающим.

я думаю тут капча нужна будет, сам будешь делать или готовую возьмешь?

3. Сообщение состоит из 4 полей:
- дата публикации сообщения

мне кажется это лишнее, пользователю не надо менять эту дату, лучше будет если он не будет видеть этого поля...

Покам будем создавать и отлаживать этот этам, можно предлагать, что еще можно добавит в ГК.

а как же бб-коды?:) смайлики)

css.css не серьезно как то.. может лучше style.css?

css\ - здесь будет храниться файл css.css, что в нем думаю не стоит объянять

мне кажется папка с css нужна только тогда когда в ней будет храниться несколько файлов css, а для одного файла не стоит папку создавать. Да и вообще я бы файл с css кинул в папку template

configuration.php как то очень не привычно) config.php и все всем понятно)

// количество выводимых сообщений на страницу
$number = 10;

я выше писал про админку, но можно и так...


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 5.11.2009, 0:27; Ответить: sc2r2bey
Сообщение #3


тема очень интересная

спасибо за такой разврнутый и ценный ответ!!!

а нужено ли это для такого простого скрипта? замашки как на CMS)) возможно я просто халявщик и проще подхожу к таким работам...

ну так я же писал, что пойдем путем от простого к сложному, целую CMS возможно не напишем, но частично реализуем, включая админку и авторизацию, чуть позже :)

лучше сделай чтоб через админку можно было настраивать количество выводимых сообщений и направление от старых к новым или от новых к старым.

смотри выше, а пока в конфиге будет ;)

я думаю тут капча нужна будет, сам будешь делать или готовую возьмешь?

добавим позже на 2 этапе, пока возьмем готовую, какую посоветуете?

мне кажется это лишнее, пользователю не надо менять эту дату, лучше будет если он не будет видеть этого поля...

разумно не публикуем, но в БД вносим

а как же бб-коды?:D смайлики)

добавим на 2 этапе, возмем парсер готовый

css.css не серьезно как то.. может лучше style.css?

дело вкуса, принимаю!

мне кажется папка с css нужна только тогда когда в ней будет храниться несколько файлов css, а для одного файла не стоит папку создавать. Да и вообще я бы файл с css кинул в папку template

идея классная, берем!

configuration.php как то очень не привычно) config.php и все всем понятно)

принимаю!

я выше писал про админку, но можно и так...

см выше...

ок, подредактировал первый пост


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 5.11.2009, 19:16; Ответить: ZiTosS
Сообщение #4


sc2r2bey,
структуру бы сделал такой:
includes\ - файлы включения
js\ - здесь скрипты
modules\ - модули
kernel\ - ядро какой-то системы
kernel\classes\ - классы
templetes\ - здесь шаблоны
templetes\[папка_шаблона]\images\ - здесь будет хранится изображения используемые в шаблоне

1. Отделить код от дизайна, т.е. создание шаблона и простого шаблонизатора.

Если ты файлы шаблонов ГК будешь хранить в общей папке templates, то вообще гостевая книга зависит от системы под которую ты её собираешься ставить. Может там не будет папки templates. Тут стоит подумать... Вот например Joomla-модули придерживается принципа MVC(Model-View-Controller, Модель-представление-поведение):
  • Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контроллера), изменяя свое состояние.
  • Представление (View). Отвечает за отображение информации (пользовательский интерфейс).
  • Поведение (Controller). Интерпретирует данные, введенные пользователем, и информирует модель и представление о необходимости соответствующей реакции.

Важно отметить, что как представление, так и поведение зависят от модели. Однако модель не зависит ни от представления, ни от поведения. Это одно из ключевых достоинств подобного разделения. Оно позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели.


Создадим в папке include файл config.php, селедующего содержания:

Переместил бы файл config.php в папку ядра kernel
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 7.11.2009, 23:30; Ответить: sc2r2bey
Сообщение #5


ядумаю на данном этапе в качестве шаблонизатор задействовать smarty


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
сообщение 17.11.2009, 11:46; Ответить: gaaarfild
Сообщение #6


Я конечно понимаю, что замашка в дальнейшем на CMS, но если оговорено, что пишем Гостевую, то и надо писать гостевую. А если пишете CMS, то, мне кажется, не стоит начинать ее создание с Гостевой книги. Если пишем модуль гостевой, то шаблонизатор должен быть не в модуле а в самой CMS. И если все таки это просто гостевая книга, то, мне кажется, слишком много чести для нее и труда. Простенький скрипт раскидывается по кучам папок. Нерационально. Любое программирование стремится к сокращению кода и оптимизации. А тут на лицо его невостребованное увеличение.
Но за идею статьи "+". =)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
НЕПЛОХОЙ
НЕПЛОХОЙ
сообщение 17.11.2009, 18:56; Ответить: НЕПЛОХОЙ
Сообщение #7


gaaarfild, мне кажется этот скрипт пишется в целях самообучения на реальном примере. Если начать сразу писать cms то сталкнешься с еще кучей разных проблем. Проще научиться на простых примерах, как гостевая книга
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 17.11.2009, 20:05; Ответить: ZiTosS
Сообщение #8


Евгений, ты не понял. gaaarfild говорит, что если ты пишешь скрипт гостевой книги, то не надо описывать подобное как:
2. Создание ядра ГК, которое будет отвечать за глобальные функции ГК.
3. Создание модульности, т.е. ГК будет реалищзована как отдельный модуль, который можно будет подключать к любому проекту.

Создание ядра ГК - это другое понятие нежеле выше, у модуля нет ядра.
Создание модульности - так же другое понятие, надо было сказать возможность подключения модуля в систему. Кстати каждый модуль пишется под свою систему, или же пишется модуль и к нему дописывается мост для включения в систему. Модуля под все системы разом не написать, иначе система не будет нормальной.

Так как гостевая сама по себе модуль, какое-там ядро, какая там модульность? Это уже замах на CMS систему которой здесь даже не будет пахнуть.
Модуль должен выполнять только те задачи, которые на него возложены. И расширять модули, которые сами являются расширениями это тавтология. Стоит только взглянуть что же мы можем написать в виде модуля для гостевой книги? Случаем не CMS ли? Вот в этом и пироги.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
сообщение 18.11.2009, 17:03; Ответить: gaaarfild
Сообщение #9


Короче начинаем писать CMS с модуля. А под него напишем ядро системы. =) Ну как я расшифровал?! =)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Как вы отдыхаете от работы за компом
151 adw-kupon.ru 19830 Вчера, 13:52
автор: Vmir
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
20 uahomka 3455 Вчера, 11:54
автор: Skyworker
Открытая тема (нет новых ответов) Как в пушсетках покупают по 100-200 тысяч кликов за день?
1 Boymaster 541 Вчера, 11:45
автор: Skyworker
Горячая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
30 freeax 5023 20.4.2024, 16:49
автор: Liudmila
Открытая тема (нет новых ответов) Арбитражники, как ведете учет расходов и доходов?
13 Boymaster 2026 20.4.2024, 15:06
автор: Boymaster


 



RSS Текстовая версия Сейчас: 24.4.2024, 15:55
Дизайн