Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Проект: Каталог ссылок на PHP




Самый простой способ наполнить ваш сайт реальным содержанием -- дать пользователю возможность сделать это за вас. Конечно, для ввода данных удобнее всего воспользоваться формой HTML.

Введенную пользователем информацию необходимо обработать и сохранить. В проекте предыдущей главы было показано, как легко эта задача решается при помощи PHP и текстового файла. Бесспорно, текстовые файлы хорошо подходят для хранения относительно маленьких и простых фрагментов данных, но в полноценных 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)

<?

// Файл: init.inc

// Назначение: глобальные переменные и функции.

// используемые в проекте

// Стандартный заголовок страницы $title = "My Bookmark Repository":

// Цвет фона $bg_color = "white";

// Дата

$post_date = date("Ymd");

// Категории $categories = array(

"computers",

"entertainment",

"dining",

"lifestyle",

"government",

"travel");

// Данные сервера MySQL $host = "localhost"; $user = "root"; $pswd = "";

// Имя базы данных $database = "book";

// Имя таблицы $bookmark_table = "bookmarks";

// Цвет ячеек таблицы $cell_color = "#c0c0c0";

// Установить соединение с сервером MySQL

@mysql_pconnect($host, $user, $pswd) or die("Couldn't connect to MySQL server!");

// Выбрать базу данных

@mysql_select_db($database) or die("Couldn't select Sdatabase database!");

// Функция: add_bookmark()

// Назначение: включение новой ссылки в таблицу bookmark.

function add_bookmark (Scategory, Ssitejname. $url, $description) {

GLOBAL $bookmark_table, $post_date;

$query = "INSERT INTO $bookmark_table

VALUES(\"$category\", \"$site_name\", \"$url\", \"$post_date\", \"$description\")";

$result = @mysql_query($query) or die("Couldn't insert bookmark information!");

} // add_bookmark <

// Функция: view_bookmark()

// Назначение: выборка из таблицы bookmark всех ссылок,

// относящихся к категории $category.

function view_bookmark ($category) {

GLOBAL $bookmark_table, $cell_color, $categories;

$query = "SELECT site_name, url, DATE_FORMAT(date_added,'%m-%d-%Y') AS date_added, description

FROM $bookmark table WHERE category = $category ORDER BY datejdded DESC";

$result = @mysql_query($query);

print "<div align=\"center\"><table cellpadding=\"2\" cellspacing=\"1\" border = \"0\" width = \"600\">";

print "<tr><td bgcolor-\"$cell_color\"><b>Category: $categories[$category]</b></td></tr>";

if (mysql_numrows($result) > 0);

while ($row = mysql_fetch_array($result));

Posted: ".$row["date added"]."<br>"

else

print "<tr><td>";

print "<b>".$row["site_name"]."</b>

print "</td></tr>";

print "<tr><td>";

print "<a href = \"http://".$row["url"]."\">http://".

$row["url"]."</a><br>";

print "</td></tr>";

print "<tr><td valign=\"top\">";

print $row["description"]."<br>";

print "</td></tr>";

print "<tr><td><hr></td></tr>";

endwhile;

print "<tr><td>There are currently no bookmarks falling under this category. Why don't you <a href=\"add_bookmark.php\">add one</a>?</td></tr>";

endif:

print "</table><a href=\"Listing11-11.php\">Return to index</a>

print "<a href=\"add_bookmark.php\">Add a bookmark</a></div>";

// view bookmark

?>

Следующая страница, add_bookmark.php (листинг 11.9), предназначена для ввода информации о новой ссылке, включаемой в базу данных. Для обработки пользовательских данных вызывается функция add_bookmark().

Листинг 11.9. Программа add_bookmark.php

<html>

<?

INCLUDE("init.inc");

?>

<head>

<title><?=$title:?></title> </head>

<body bgcolor="#ffffff" text="#000000" link="#808040" vlink="#808040" alink="#808040"> if (! $seenform):

<form action="add_bookmark.php" method="post"> <1nput type="hidden" name="seenform" value="y">

Category:<br>

<select name="category">

<option value="">Choose a category:

while (list($key, $value) = each($categories)):

print "<option value=\"$key\">$value"; endwhile:

</select><br>

Site Name:<br>

<input type="text" name="site_name" size="15" maxlength="30" value=""><br>

URL: (do <i>not</1> include "http://"!)<br>

<input type="text" name="url" size="35" maxlength="50" value=""><br>

Description:<br>

<textarea name="description" rows="4" cols="30"></textarea><br>

<input type="submit" value="submit">

</form>

else:

add_bookmark($category, $site_name, $url, $description);

print "<h4>Your bookmark has been added to the repository.

<a href=\"Listing11-11.php\">Click here</a> to return to the index.</h4>";

endif;

?>

При исходной загрузке страницы в браузере отображается форма (рис. 11.5).

После сохранения ссылки в базе программа выдает соответствующее сообщение и создает ссылку для перехода к домашней странице приложения index.php (листинг 11.11).

Рис. 11.5. Форма, отображаемая страницей add_bookmark.php

Следующая страница, view_bookmark.php, просто вызывает функцию view_bookmark(). Код этой страницы приведен в листинге 11.10.

Листинг 11.10. Программа view_bookmark.php

<html>

<?

INCLUDE("Listing11-8.php");?>

<head>

<title><?=$title:?></title>

</head>

<body bgcolor="<?=$bg_color;?>" text="#000000" link="#808040" vlink="#808040" alink="#808040">

view_bookmark($category):

?>

Если занести в категорию dining информацию о нескольких сайтах, страница view_bookmark.php будет выглядеть примерно так, как показано на рис. 11.6.

Рис. 11.6. Выполнение страницы view_bookmark.php для категории dining

Остается лишь создать страницу, на которой пользователь выбирает ссылки из списка. Я назвал этот файл index.php (листинг 11.11).

Листинг 11.11. Программа index.php

<html>

<?

INCLUDE("init.inc");

?>

<head>

<titlex?-$title:?></title>

</head>

<body bgcolor="<?=$bg_color;?>" text="#000000" link="#808040" vlink="#808040"

alink="#808040">

<h4>Choose bookmark category to view:</h4>

<?

// Перебрать категории и создать соответствующие ссылки

while (list($key, Svalue) = each(Scategories)):

print "<a href = \"view_bookmark.php?category=$key\">$value</a><br>";

endwhile;

?>

<p>

<b><a href="add_bookmark.php">Add a new bookmark</a></b>

</body>

</html>

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

Листинг 11.12. Выходные данные, сгенерированные при выполнении index.php

<html>

<head>

<title></title>

</head>

<body bgcolor="white" text="#000000" link="#808040" vlink="#808040" alink="#808040">

<h4>Choose bookmark category to view:</h4>

<a href = "view_bookmark.php?category=0">computers</a><br>

<a href = "view_bookmark.php?category=1">entertainment</a><br>

<a href = "view_bookmark.php?category=2">dining</axbr>

<a href - "view_bookmark.php?category=3">lifestyle</a><br>

<a href = "view_bookmark.,php?category=4">government</a><br>

<a href = "view_bookmark.php?category=5">travel</a><br>

<p>

<b><a href=add_bookmark.php">Add a new bookmark</a></b>

</body>

</html>

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

 




Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 270; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.038 сек.