
Отображение закладок
В сценарии 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)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться