ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Интеграция баз данных. Часть Седьмая.


02-06-2015

23.3. Хранение содержимого в базе данных
Информация, сохраненная в базе данных, не ограничивается только короткими строками наподобие 32-символьного названия товара из листинга 23.3. Есть возможность создать большие логические объекты (blob) размером 64 Кбайт, которых достаточно для Web-страниц больших размеров. Преимуществом такого подхода является то, что страницы существуют в хорошо структурированной среде. Их можно идентифицировать с помощью чисел, и связи с ними должны осуществляться с использованием только этих чисел. Недостатком является то, что у разработчика нет возможности воспользоваться любимым текстовым редактором, поскольку информация теперь располагается в базе данных. Поэтому приходится балансировать между затратами и преимуществами, и некоторым Web-узлам совсем не надо, чтобы все его компоненты хранились в базе данных.
Ситуация, когда этот метод можно использовать на практике, - размещение в базе данных содержимого электронной доски объявлений (Bulletin Board System, BBS). Эта система хранит сообщения, которые не являются просто Web-страницами. Каждая из страниц снабжена своим собственным заголовком, на ней указано время создания и приводится информация об авторе. Каждая структура может быть удобно запакована в таблицу базы данных. Кроме того, если каждому сообщению может быть присвоен уникальный идентификатор, он позволяет организовать сообщения в деревьях "родитель-потомок". Пользователь может создавать новую дискуссионную ветвь, которая порождает множество других сообщений. Сообщения могут создаваться в иерархической структуре, позволяющей осуществлять просмотр.
Как и в любом случае с системами, работающими с базами данных, первым шагом является создание таблицы. В листинге 23.7 показано, как создается таблица для хранения сообщений. Каждое сообщение снабжается заголовком, в нем также указывается имя того, кто разместил сообщение, когда сообщение было размещено, и тело самого сообщения. Начальный идентификатор может иметь значение NULL. Это свидетельствует о том, что сообщение является началом темы или потока сообщений. Тело сообщения не обязательно должно быть представлено простым текстом, оно может содержать и HTML-код. Таким образом, пользователи с помощью своих браузеров смогут создавать собственные Web-страницы.

| Листинг 23.7. Создание таблицы message
CREATE TABLE Message
(
ID INT NOT NULL AUTO_INCREMENT,
Title VARCHAR(64),
Poster VARCHAR(64),
Created DATETIME,
Parent INT,
Body BLOB,
PRIMARY KEY(ID)
); 
Сценарий, приведенный в листинге 23.8, имеет два рабочих режима: отображение перечней заголовков сообщений и отображение целого сообщения. Если переменной messageID не задано значение, сценарий отображает список всех сообщений в системе, организованных потоком, вызвав функцию showMessages (см. главу 4, "Функции"). Функция showMessages для перехода на любую ветвь дерева сообщений использует механизм рекурсии. Просмотр начинается с перечня всех сообщений, находящихся на верхнем уровне. Это сообщения корневого уровня или начало тем. После отображения сообщений корневого уровня функция showMessages вызывается для отображения отдельных тем. Этот процесс продолжается до тех пор, пока не будет найдено сообщение, не имеющее порожденных сообщений. Идентификация помогает понять иерархию сообщений.

Листинг 23.8. Простейшая BBS

<html> <head>
^^^^Листинг 23.8</title>
</head>
<body>
<?php
print("<h1>BBS Леона^!!^^");
//Подключиться к серверу, а затем проверить на ошибку if(!($dbLink = mysql_connect("localhost", "httpd", "")))
{
print("Heвoзмoжнo подключиться к серверу!<br>n");
print("Завершение работы!<brn");
exit();
}
//выбрать базу данных, затем проверить на ошибку if(!($dbResult = mysql_query("USE test", $dbLink)))
{
print("Heвoзмoжнo работать с базой данных test!<BR>n");
print("Завершение работы!<BR>n");
exit();
}
/*
** рекурсивная функция, разбивающая все
** последующие сообщения
*/
function showMessages($parentID)
{
global $dbLink;
$dateToUse = Date("U");
print("<ul>n");
$Query = "SELECT ID, Title, Created " . "FROM bbsMessage " . "WHERE Parent=$parentID " .
"ORDER BY Created ";
if(!($dbResult = mysql_query($Query, $dbLink)))
{
// невозможно выполнить запрос
print("Запрос к таблице bbsMessage невозможен!<br>n"] print("MySQL сообщает: " . mysql_error() . "<br>n");
Интеграция баз данных
Интеграция баз данных
Интеграция баз данных

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Интеграция баз данных. Часть Шестая. PHP. Интеграция баз данных. Часть Восьмая.