Форум ОНУ

Гость


Автор Тема: база на рнр  (Прочитано 11833 раз)

Del_programmer

  • Гость
база на рнр
« : 25 Сентябрь 2006, 11:33:34 »
меня тут спрашивали как сделать....
Пишем на PHP: Каталоги и база данных

На чем мы вчера закончили? А, мы с вами написали крутую прогу для подбора web-цветов. Замечательно. На этом вводный курс в 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-возможностям можно на том же www.citforum.ru.



Базу назовем так же, как и account у провайдера — ROMA. Во-первых, чтобы не путаться, а во-вторых, обычно так провайдер и выдает доступ к SQL-серверу.

Если база еще не создана, то мы ее создаем:

create database roma;

и переходим в нее:

use roma;

Нам потребуются три таблицы: таблица разделов, таблица текстов и таблица статистики. Создадим пока две. Третья подождет.



Информацию по работе с MySQL-сервером вы найдетет на сайте производителя: 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).

Добавили в свою базу данных эти две таблицы? Отлично. Можете пока подумать, как будет выглядеть третья таблица.