П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 4104 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6762 раз(а).

Учебник HTML.
Просмотров 3722 раз(а).

Руководство по PHP5.
Просмотров 5996 раз(а).

Хостинг через призму DNS.
Просмотров 4817 раз(а).

Подборка текстов стандартных документов.
Просмотров 56248 раз(а).

Учебник PHP - Самоучитель
Просмотров 3709 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 8358 раз(а).

Внешние атаки...
Просмотров 4571 раз(а).

Учебник PHP.
Просмотров 3177 раз(а).

SSI в примерах.
Просмотров 177 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





ГЛАВА 11. Базы данных

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

Самый простой способ наполнить ваш сайт реальным содержанием — дать пользователю возможность сделать это за вас. Конечно, для ввода данных удобнее всего воспользоваться формой 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)

<?
// Файл: 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">
  <input 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.html.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.

Назад | Содержание раздела | Общее Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru