|
|
 |
Пишем на PHP. Каталоги и БД |
Мне думается, что описывать общие принципы - это не совсем то, чего вы от меня
ждете. Я предлагаю несколько иное. Давайте просто возьмем, да и напишем вместе
цельный web-проект! По всем правилам. Да так, чтобы был он полезен многим, да
чтобы на него ложился любой дизайн, да чтобы все у нас было как у взрослых: замысел,
план, блок-схема и все остальное. С использованием PHP, MySQL и особенностей Apache.
Договорились? Ну вот и ладненько.
Я сегодня посоветовался с Александром Малюковым и решил принять его идею. Пишем
систему персонального паблишинга. Или "колонку обозревателя", как назвал ее Саша.
Задача.
Написать комплект скриптов на языке PHP(4), предоставляющие следующие возможности
пользователю:
- Возможность публиковать тексты через стандартную web-форму.
- Возможность изменять и удалять опубликованные тексты.
- Возможность создавать и редактировать темы, объединяющие тексты.
- Автоматическое создание оглавления.
- Автоматический вывод выбранного текста в рамках заложенного дизайна.
- Подсчет элементарной статистики посещения сайта.
...и так далее.
В общем, у нас должно получиться нечто, напоминающее данный сайт (http://kurepin.ru).
Только созданный не в виде десятка примитивных функций, а в виде солидного пакета
скриптов со всеми современными примочками: back office, mail-информер, полный
контроль над ошибками, и прочей фигней, без которой крупный проект просто не сможет
эффективно существовать.
Начнем мы с планирования. Но-но, попрошу без соплей в этом месте! Планирование
- важнейшая часть создания большого проекта. Мы же пишем большой проект, а не
фигню какую-то.
Для начала спланируем место в нашей директории, чтобы правильно сохранять то,
что у нас будет рождаться.
Предположим, что вы выбрали правильного провайдера, который хостит ваши страницы
на одной из UNIX-систем. Например, на FreeBSD. И полный путь к вашему каталогу
выглядит так:
/home/roma/
Мне почему-то показалось, что вас непременно зовут Романом.
А директория (или "папка", - как сейчас принято говорить), в которой должны лежать
html-файлы сайта, называется:
/home/roma/WWW/
А что, так оно чаше всего и бывает. Еще эту папку называют html или public_html.
Теперь, нам нужна папка, где мы будем хранить все наши скрипты. Это должна быть
папка НЕ в директории WWW, иначе все желающие смогу посмотреть ваши скрипты и
найти в них лазейки для кряка. Нам это надо? Нет, нам это не надо. Поэтому, для
необходимых нам файлов-скриптов мы создаем:
/home/roma/req/
req - это от слова require (нуждаться).
Еще нам понадобится папка, в которую мы сложим куски html для динамической сборки
страниц. Назовем ее inc (от include).
/home/roma/inc/
Еще папка для хранения данных:
/home/roma/data/
И папка для хранения периодически выполняемых программ службой cron:
/home/roma/cron/
Давайте до кучи создадим в папке WWW папку pic (от picture) для хранения
всякой графики.
Все. Наш каталог /home/roma/ выглядит вот так:
./req
./data
./inc
./WWW
./WWW/pic
Следующим этапом я предлагаю создать базу данных для хранения данных, простите
за тавтологию.
Если вы не знакомы с языком SQL, то это вас не должно пугать.
Во-первых, я постараюсь прокомментировать то, что будет написано на этом языке.
А во-вторых, если вы потратите час на прочтение любого общего руководства по языку
запросов к БД SQL, то сможете без каких-либо проблем читать запросы на этом языке
и писать свои. Там и надо-то знать с десяток ключевых слов и несколько стандартных
конструкций запросов. Все остальное - ваша фантазия (я преклоняюсь перед изобретателями
этого языка. Ничего более совершенного, созданного человеком в области программирования,
я в жизни не встречал). Найти документацию по стандартным SQL-возможностям можно
на том же http://www.citforum.ru/.
Базу назовем так же, как и account у провайдера - ROMA. Во-первых, чтобы не путаться,
а во-вторых, обычно так провайдер и выдает доступ к SQL-серверу.
Если база еще не создана, то мы ее создаем:
create database roma;
и переходим в нее:
use roma;
Нам потребуются три таблицы: таблица разделов, таблица текстов и таблица статистики.
Создадим пока две. Третья подождет.
Информацию по работе с MySQL-сервером вы найдетет на сайте
производителя: http://www.mysql.com/. Или
поищите FAQ-и при помощи поисковых серверов. Их полным-полно.
Таблица tbl_cats (категории, разделы):
create table tbl_cats(
c_id int not null auto_increment primary key,
c_name varchar(50) not null default ""
);
Поясняю. Тут написано, что таблица tbl_cats имеет два поля: c_id - уникальный
целочисленный идентификатор записи и c_name - буквенное название раздела, собственно.
Можем сразу добавить в нашу таблицу первый раздел:
insert into tbl_cats(c_name) values('web-обзоры');
Теперь вторая таблица:
create table tbl_texts(
t_id int not null auto_increment primary key,
t_name varchar(200) not null default "",
t_dt datetime not null
);
в которой написано почти тоже самое: идентификатор, название текста и дата+время
публикации работы (t_dt).
Добавили в свою базу данных эти две таблицы? Отлично. Можете пока подумать, как
будет выглядеть третья таблица. А я тем временем прощаюсь с вами до следующего
выпуска.
Вернуться к оглавлению.
Руслан Курепин
Kurepin.ru
|