Изучаем PHP программирование

   Search   

Русская версия | English version   

Скрипты :: Секреты профессионалов :: Link :: FAQ   Пишите письма  



 

главная :: основы PHP

Заголовок

Проект: каталог ссылок Самый простой способ наполнить ваш сайт реальным содержанием — дать пользователю возможность сделать это за вас. Конечно, для ввода данных удобнее всего воспользоваться формой HTML. Введенную пользователем информацию необходимо обработать и сохранить. В проекте предыдущей главы было показано, как легко эта задача решается при помощи РНР и текстового файла. Бесспорно, текстовые файлы хорошо подходят для хранения относительно маленьких и простых фрагментов данных, но в полноценных web-приложениях информация обычно хранится в базах данных. В настоящем примере база данных MySQL используется для хранения информации о web-сайтах. Для упрощения навигации сайты разделены на несколько категорий. Пользователь может ввести информацию о сайте в форме HTML и отнести его к одной из стандартных категорий, определенных администратором сайта. Кроме того, пользователь может загрузить индексную страницу и просмотреть список всех сайтов той или иной категории, щелкнув на ее названии. Прежде всего вы должны решить, какие сведения о сайтах будут храниться в базе данных SQL. Для простоты я ограничусь следующим набором атрибутов: название, URL, категория, дата включения и описание. Таким образом, определение таблицы в MySQL выглядит примерно так: mysql>create table bookmarks ( category INT, site_name char(35), url char(50), date_added date, description char(254) ); В определении таблицы bookmarks имеется пара моментов, заслуживающих внимания. Во-первых, информация о категории сайта почему-то хранится в виде целого числа — но разве не правильнее было бы сделать названия категорий более содержательными и понятными для пользователя? Не беспокойтесь, в ини-циализационном файле будет создан массив, связывающий целочисленные индексы с названиями категорий. В будущем администратор может изменять и даже удалять отдельные категории. Хранение информации о категориях заметно упрощает эту задачу. Кроме того, целочисленное поле обеспечивает экономию места на диске, поскольку название категории многократно сохраняется в таблице. Другое обстоятельство, относящееся к структуре таблицы, — ограничение длины описания 254 символами. В зависимости от этого объема описаний вместо типа char( ) можно воспользоваться типом medium или text. За дополнительной информацией о типах полей обращайтесь к документации MySQL. Следующим шагом в работе над этим приложением будет создание инициализа-ционного файла. Помимо глобальных переменных, в инициализационном файле определяются две функции: add_bookmark( ) и view_bookmark( ). Функция add_bookmark( ) получает пользовательский ввод из формы и включает его в базу. Функция view_bookmark( ) получает индекс категории, читает из базы данных все записи, относящиеся к указанной категории, и отображает их в браузере. Инициализацион-ный файл приложения init.inc с комментариями приведен в листинге 11.8. Листинг 11.8. Инициализационный файл каталога ссылок (init.inc) "; print ""; if (mysql_numrows($result) > 0) ; while ($row = mysql_fetch_array($result)) ; Posted: ".$row["date added"]."
" else print ""; print ""; print ""; print ""; endwhile; print ""; endif: print "
Category: $categories[$category]
"; print "".$row["site_name"]." print "
"; print "http://". $row["url"]."
"; print "
"; print $row["description"]."
"; print "

There are currently no bookmarks falling under this category. Why don't you add one?
Return to index print "Add a bookmark"; // view bookmark ?> Следующая страница, add_bookmark.php (листинг 11.9), предназначена для ввода информации о новой ссылке, включаемой в базу данных. Для обработки пользовательских данных вызывается функция add_bookmark( ). Листинг 11.9. Программа add_bookmark.php <?=$title:?> if (! $seenform) :

<1nput type="hidden" name="seenform" value="y"> Category:

Site Name:

URL: (do not include "http://"!)

Description:

else : add_bookmark($category, $site_name, $url, $description); print "

Your bookmark has been added to the repository. Click here to return to the index.

"; endif; ?> При исходной загрузке страницы в браузере отображается форма (рис. 11.5). После сохранения ссылки в базе программа выдает соответствующее сообщение и создает ссылку для перехода к домашней странице приложения index.php (листинг 11.11). Рис. 11.5. Форма, отображаемая страницей add_bookmark.php Следующая страница, view_bookmark.php, просто вызывает функцию view_bookmark( ). Код этой страницы приведен в листинге 11.10. Листинг 11.10. Программа view_bookmark.php <?=$title:?> view_bookmark($category) : ?> Если занести в категорию dining информацию о нескольких сайтах, страница view_bookmark.php будет выглядеть примерно так, как показано на рис. 11.6. Рис. 11.6. Выполнение страницы view_bookmark.php для категории dining Остается лишь создать страницу, на которой пользователь выбирает ссылки из списка. Я назвал этот файл index.php (листинг 11.11). Листинг 11.11. Программа index.php

Choose bookmark category to view:

$value
"; endwhile; ?>

Add a new bookmark

Hosted by uCoz
Если оставить в массиве $categories значения, сохраненные в файле init.inc, в результате выполнения листинга 11.11 в браузер будет отправлен код HTML, приведенный в листинге 11.12. Листинг 11.12. Выходные данные, сгенерированные при выполнении index.php

Choose bookmark category to view:

computers
entertainment
dining lifestyle
government
travel

Add a new bookmark

Hosted by uCoz
Если щелкнуть на любой ссылке из приведенного выше,фрагмента HTML, в браузере загружается файл view_bookmark.php, который вызывает функцию view_bookmark( ) и передает ей значение переменной $category.

Designed by Fedin
All right reserved
2003-2004
Hosted by uCoz