Отображение закладок
В сценарии member.php и функции add_bm() применялись функции get_user_urls() и display_user_urls(). Они осуществляют, соответственно, извлечение закладок из базы данных и их отображение. Функция get_user_urls() содержится в библиотеке url_fns.php, a display_user_urls() — в библиотеке output_fns.php.
Функция get_user_urls() из библиотеки url_fns.php — извлекает закладки пользователя из базы данных
function get_user_urls($username)
{
// Извлекает из базы данных все сохраненные пользователем URL-адреса
$conn = db_connect();
$result = $conn->query( "select bm_URL
from bookmark
where username = '$username'");
if (!$result)
return false;
// Создать массив URL-адресов
$url_array = array();
for ($count = 1; $row = $result->fetch_row(); ++$count)
{
$url_array[$count] = $row[0];
}
return $url_array;
};
Рассмотрим кратко эту функцию. Она принимает имя пользователя в качестве параметра и извлекает для него закладки из базы данных. Функция возвращает массив URL-адресов либо значение false, если закладки не могут быть извлечены.
Этот массив может передаваться из функции get_user_urls() в функцию display_user_urls(). Это простая функция вывода HTML-содержимого, выполняющая печать URL-адресов в привлекательном табличном формате. Она здесь не рассматривается. Пример вывода показан на рисунке. Функция помещает URL-адреса в форму. Рядом с каждым URL-адресом находится флажок, который позволяет пометить закладку для удаления.
Удаление закладок
Когда пользователь помечает некоторые закладки для удаления и выбирает из меню опцию Удалить закладку, передается форма, содержащая URL-адреса. Каждый флажок генерируется с помощью следующего кода функции display_user_urls():
echo "<td><input type='checkbox' name=\"del_me[ ]\" value=\"$url\"></td>";
Именем каждого флажка является del_me [ ]. Это означает, что если форма запускает PHP-сценарий, будет осуществляться доступ к массиву $del_me, который содержит все удаляемые закладки.
Выбор опции Удалить закладку приводит к запуску сценария delete_bms.php.
delete_bms.php — этот сценарий удаляет закладки из базы данных
<?php
require_once('bookmark_fns.php');
session_start();
$title = "Удаление закладок";
$description = "Удаление закладок";
$keywords = "Удаление закладок";
// Создать короткие имена переменных
$del_me = $_POST['del_me'];
$valid_user = $_SESSION['valid_user'];
do_html_header($title, $description, $keywords);
blok_left();
echo'<div id="blok_right">';
echo '<div class="blok_text">';
echo'<div class="text_top" align=left>';
do_html_heading($title);
check_valid_user();
if (!filled_out($_POST))
{
echo 'Не выбрано ни одной закладки для удаления. '
.'Пожалуйста, повторите попытку.';
display_user_menu();
echo '</div></div></div>';
do_html_footer();
exit;
}
else
{
if (count($del_me) >0)
{
foreach($del_me as $url)
{
if (delete_bm($valid_user, $url))
echo 'Удалена '.htmlspecialchars($url).'.<br />';
else
echo 'Невозможно удалить '.htmlspecialchars($url).'.<br />';
}
}
else
echo 'Не выбрано ни одной закладки для удаления';
}
// Получить закладки, сохраненные данным пользователем
if ($url_array = get_user_urls($valid_user));
display_user_urls($url_array);
display_user_menu();
echo '</div></div></div>';
do_html_footer();
?>
Сценарий начинается с обычной проверки допустимости данных. Когда выясняется, что пользователь выбрал несколько закладок для удаления, их удаление выполняется в следующем цикле:
foreach($del_me as $url)
{
if (delete_bm($valid_user, $url))
echo 'Удалена '.htmlspecialchars($url).'.<br />';
else
echo 'Невозможно удалить '.htmlspecialchars($url).'.<br />';
}
Несложно заметить, что функция delete_bm() выполняет удаление закладок из базы данных.
function delete_bm($user, $url)
{
// Удаляет один URL-адрес из базы данных
$conn = db_connect();
// Удалить закладку
if (!$conn->query( "delete from bookmark
where username='$user' and bm_url='$url'"))
throw new Exception('Закладка не может быть удалена.');
return true;
}
Эта функция также очень проста. Она предпринимает попытку удаления из базы данных закладки определенного пользователя. Отметим, что необходимо удалить опре деленную пару "имя пользователя — закладка". Для остальных пользователей данная закладка может сохраняться.
Пример вывода сценария удаления показан на рисунке.
Как и в сценарии addjbms.php, после внесения изменений в базу данных отображается новый список закладок с помощью функций get_user_urls() и display_user_urls().
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться