Воспользуемся полученными знаниями для построения простого Web-приложения, работающего с СУБД MySQL, - архива Web-адресов, позволяющего вести список любимых Web-узлов с использованием для этого базы данных. Таким образом, на практическом примере мы увидим применение функций API-интерфейса MySQL PHP.
Проектирование базы данных
При создании таких приложений прежде всего необходимо определить требования к ним. В этом приложении каждый пользователь идентифицируется уникальным идентификатором регистрации, который служит ключом, связывающим пользователя с его списком ссылок. Пользователи получают возможность просмотра, добавления или удаления списков Web-адресов с использованием простейшего Web-интерфейса.
Согласно этим требованиям нужно разработать простейшую базу данных, которая будет служить основой этого приложения. Использованная здесь база данных состоит из двух таблиц - bookmark_users и bookmark_urls, содержащих списки пользователей и соответствующие им ссылки на Web-адреса. Ниже представлены SQL-запросы, необходимые для создания и инициализации этих таблиц.
Листинг 21.26.
CREATE TABLE bookmark_users (
uid tinyint(4) NOT NULL auto_increment, uname varchar(15) NOT NULL default '', PRIMARY KEY (uid),
UNIQUE KEY uid (uid), UNIQUE KEY uname (uname) ) TYPE=MyISAM;
INSERT INTO bookmark_users (uid, uname) VALUES (1, 'bill'); INSERT INTO bookmark_users (uid, uname) VALUES (2, 'john'); CREATE TABLE bookmark_urls (
fk_uid tinyint(4) NOT NULL default '0',
label varchar(255) NOT NULL default '',
url varchar(255) NOT NULL default '' ) TYPE=MyISAM;
INSERT INTO bookmark_urls (fk_uid, label, url)
VALUES (1, 'Melonfire', 'http://www.melonfire.com/');
INSERT INTO bookmark_urls (fk_uid, label, url)
VALUES (1, 'Developer Shed', 'http://www.devshed.com/');
INSERT INTO bookmark_urls (fk_uid, label, url)
VALUES (1, 'PHP', 'http://www.php.net/');
INSERT INTO bookmark_urls (fk_uid, label, url)
VALUES (2, 'Yahoo', 'http://www.yahoo.com/');
INSERT INTO bookmark_urls (fk_uid, label, url)
VALUES (2, 'Slashdot', 'http://www.slashdot.org');
Таким образом, будут созданы две таблицы с именами пользователей, названиями и адресами Web-узлов для двух выдуманных пользователей: bill и john. Две таблицы связаны друг с другом по столбцу uid, являющемуся внешним ключом и соединяющим пользователя из таблицы bookmark_users с адресом, хранящимся в таблице bookmark_urls.
Выборка данных
После создания базы данных, не должно вызывать особых затруднений создание простейшего сценария, предназначенного для ведения списка пользователей и их любимых Web-адресов и отображения их в табличном виде.
Листинг 21.27.
<html> <head>
<basefont face "Arial">
</head>
<body>
<?php
// задать переменные доступа к серверу $host = "localhost"; $user= "joe"; $pass = "secret";
$db = "db123";
// открыть соединение с базой данных
$connection = mysql_connect($host, $user, $pass) or die (" Невозможно
подключиться!");
// выбрать базу данных
mysql_select_db($db) or die (" Невозможно выбрать рабочую базу данных!");
// задать строку SQL-запроса
$query = "SELECT uname, label, url FROM bookmark_users, bookmark_urls
WHERE bookmark_users.uid = bookmark_urls.fk_uid";
// выполнить запрос и получить результирующий набор
$result = mysql_query($query) or die (" Ошибка в запросе: $query."
. mysql_error());
// есть ли строки в результате?
if (mysql_num_rows ($result) > 0)
{
// да
// просмотр результирующего набора
// вывести результаты в табличном виде
echo "<table>";
echo "<tablewidth=450 border=1 cellspacing=0 cellpadding=10>"; echo "<tr>";
echo "<td align=left><b>User</b></td>"; echo "<td align=left><b>Bookmark</b></td>"; echo "</tr>";
while ($row = mysql_fetch_assoc($result))
{
echo "<tr>";
echo "<td align=left>" . $row['uname'] . "</td>"; echo "<td align=left><a href=" . $row['url'] . ">" . $row['label'] . "</a></td>"; echo "</tr>";
}
echo "</table>";
}
else
{
// нет
// распечатать диагностическое сообщение echo "Данные не найдены";
}
// закрыть соединение mysql_close($connection);
?>
</body> </html>
Как и во всех предыдущих примерах, этот сценарий сначала устанавливает соединение с базой данных. Затем создается запрос, который отправляется на сервер, и результирующий набор возвращается на браузер. В этом случае из-за того, что данных будет больше, чем ранее, можно воспользоваться функцией mysql_fetch_assoc() . Напомним, что эта функция возвращает значения в виде пронумерованного массива, позволяя выборку элементов по имени столбца.
На рис. 21.6 отображается вывод, который может иметь этот сценарий.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Пример практического применения API-интерфейса PHP
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Обработка ошибок | Все о MySQL. Дополнение данных |