![]() |
![]() |
| http://kurepin.ru/php/text/ |
|
Что ж... обещания принято выполнять. Сегодня пишем процедуру добавления в базу нашего сайта нового текста. По крайней мере — начнем писать. Не буду плющить вас долгим предисловием, приступим к работе. Налейте себе чашку крепкого кофе — миндальничать сегодня не буду. Пишем по-взрослому. На какие этапы логично разбить эту задачу? Мне думается, что на такие: 1. Проверка данных на корректность. 2. Приведение текста к нужному виду 3. Сохранение текста на диске 4. Добавление необходимых данных в БД. Согласны? Вот и начнем с самого начала. Функции можно добавлять в class_in, он ведь у нас отвечает за добавление данных. Нам понадобятся переменные. var $this->in_text; // сам текст var $this->in_text_name; // название текста var $this->in_text_id; // id текста var $this->in_text_dt; // дата добавления var $this->in_text_cat; // рубрика Вах! Ну-ка, обратимся к главе, где мы создавали базу данных. Ошибку видите? Нет, не видите. Подсказываю: а где же мы будем хранить номер рубрики? В таблице tbl_texts нет поля для номера рубрики, соответствующей данному тексту. Какая оплошность! Ничего, сейчас исправим: alter table tbl_texts add column t_cat int not null; Все. Теперь есть! А те, кто читают данный курс не подряд — пожалеют об этом, и не один раз (тут злобная ухмылка). Для тех, кто читает подряд, перевожу: изменить таблицу tbl_texts, добавив в нее целочисленное поле t_cat. Свою ошибку удачно исправили, теперь будем проверять на ошибки данные пользователя, управляющего нашей системой (готовьте class_utils — добавлять описания новых ошибок). Нам много не потребуется:
function in_text_data_check()
{
$this->in_text_name=AddSlashes($this->in_text_name);
if(strlen($this->in_text_name)==0) return(24);
if(strlen($this->in_text_name)>200) return(25);
return(0);
}
Тут и пояснять нечего. Добавьте в class_ulils две новые ошибки: $err[24]="Вы не задали название тексту"; $err[25]="Длинна названия текста превышает допустимые 200 символов"; и поехали дальше... Теперь надо серьезно подумать над тем, в каком виде мы будем хранить тексты. Лично я предпочитаю хранить их в html-формате. Почему? В данной задаче этот формат будет чаще использоваться — запрашиваться с сайта. А если надо будет "выгрызть" html-тэги по какой-то нужде — выгрызем, не впервой. На самом деле, храните тексты просто в двух видах. Тогда ничего выгрызать или заменять не придется. При сегодняшних объемах дискового пространства это вполне доступно. В данном случае я просто хочу оставить за собой повод вернуться к "парсингу", когда дойдем до почтовых рассылок или чего-то подобного. А что нужно, чтобы привести текст к html-виду? Для это надо заменить управляющие спецсимволы html-тэгами. Хочу вам дать еще один совет. Не сильно важный, но может пригодиться. Прежде чем превратить символы А в символы Б, попробуйте превратить символы Б в символы А — вдруг они уже есть и могут где-то спутать нам карты. Предлагаю такие условия для добавляемого текста: 1. Текст не должен превышать 100Кб. 2. Текст не должен быть короче 100 символов. 3. Подгружаемый текст не должен иметь html-тэгов и спецсимволов, кроме: <a>, <b>, <i>, <u>, <img>... м-м-м-м... <div>. Хватит пока. Все остальные символы мы просто выкинем в помою. Попробуем реализовать задуманное.... |