
Процесс вывода книг, относящихся к определенной категории, аналогичен рассмотренному выводу категорий. Вывод книг осуществляется сценарием show_cat.php.
show_cat.php — сценарий отображающий книги определенной категории
<?php
              require ('book_sc_fns.php');
              // Для покупательской тележки необходимо запустить сеанс
              session_start();
              
              $catid = $_GET['catid'];
              $pagename = get_category_name($catid);
              $keywords= "";
              $description="Интернет-магазин ABC-Book. Книги традиционные и на электронных носителях";
              do_html_header($pagename, $keywords, $description);
              echo "<section class=blok>";
              echo "<div class=col1>";
              echo "<header>";
              echo "<h5>Категория книг</h5>";
              echo "</header>";
              echo "<nav>";
              // Извлечь категории из базы данных
              $cat_array = get_categories();
              display_categories($cat_array);
              echo "</nav>";
              echo "</div>";
              echo "<div class=col2>";
              echo "<article class=book>";
              // Извлечь из базы данных информацию о книге
              $book_array = get_books($catid);
              
              display_books($book_array);
              
              // Если пользователь вошел в систему как администратор, вывести
              // ссылки на добавление и удаление ссылок на книги
              if(isset($_SESSION['admin_user']))
              {
              echo "<ul>";
              echo"<li>". display_button('index.php', 'continue', 'Продолжить покупки')."</li>";
              echo"<li>". display_button('admin.php', 'admin-menu', 'Меню администрирования')."</li>";
              echo"<li>".display_button("edit_category_form.php?catid=$catid",
              'edit-category', 'Редактировать категорию')."</li>";
              echo "</ul>";
              }
              else
              display_button('index.php', 'continue-shopping', 'Продолжить покупки');
              echo "</article>";
              echo "</div>";
              echo"</section>";
              do_html_footer();
              ?>
            Структура этого сценария во многом подобна структуре сценария вывода главной страницы, с той лишь разницей, что вместо категорий извлекаются книги.
Сначала, как обычно, запускается сеанс с помощью функции session_start(), а затем с использованием функции get_category_name() передаваемый идентификатор категории преобразуется в имя категории:
$pagename = get_category_name($catid);
Эта функция выполняет поиск имени категории в базе данных.
Функция get_category_name() из библиотеки book_fns.php, преобразующая идентификатор категории в имя категории
function get_category_name($catid)
              {
              // Запросить в базе данных имя категории для данного идентификатора категории
              $catid = intval($catid);
              $conn = db_connect();
              $query = "select catname
              from categories
              where catid = $catid";
              $result = $conn->query($query);
              if (!$result)
              return false;
              $num_cats = $result->num_rows;
              if ($num_cats == 0)
              return false;
              $row = $result->fetch_object();
              return $row->catname;
              }
            После извлечения имени категории мы можем вывести HTML-заголовок и перейти к извлечению из базы данных списка книг, относящихся к выбранной категории:
$book_array = get_books($catid);
            display_books($book_array);
Функция get_books()—извлекает список книг данной категории из базы данных
<?php
              function get_books($catid)
              {
              // Выполняет запрос в базу данных книг определенной категории
              if (!$catid || $catid=='')
              return false;
              
              $conn = db_connect();
              $query = "select * from books where catid='$catid'";
              $result = @$conn->query($query);
              if (!$result)
              return false;
              $num_books = @$result->num_rows;
              if ($num_books ==0)
              return false;
              $result = db_result_to_array($result);return $result;
}
?>
Функция display_books() — отображает массив книг заданной категории
<?php
              function display_books($book_array)
              {
              // Выводит все книги, переданные в массиве
              if (!is_array($book_array)){
echo '<br />В настоящий момент нет доступных книг в этой категории<br />';
}
else
{
// Создать таблицу
echo '<table>';
// Создать строку таблицы для каждой книги
foreach ($book_array as $row)
{
$url = 'show_book.php?isbn='.($row['isbn']);
echo '<tr><td>';
if (@file_exists('images/'.$row['isbn'].'.jpg'))
{
$title = '<img src=\'images/'.($row['isbn']).'.jpg\'>';
do_html_url($url, $title);
}
else
{
echo ' ';
}
echo '</td><td>';
$title = $row['title'].'<br> <strong>Aвтор:</strong> '.$row['author'];
do_html_url($url, $title);
echo '</td></tr>';
}
echo '</table>';
}
}
?>
Функции get_books() и display_books() во многом подобны функциям get_categories() и display_categories(), поэтому они здесь детально не рассматриваются. Единственное отличие состоит в том, что информация извлекается из таблицы книг, а не из таблицы категорий.
Функция display_books() создает ссылку на каждую книгу данной категории с использованием сценария show_book.php. И снова, каждая ссылка сопровождается параметром в виде суффикса. На этот раз он представляет собой ISBN конкретной книги.
В заключительном фрагменте сценария show_cat.php содержится код для отображения дополнительных функциональных возможностей в случае, когда в систему входит администратор. Мы рассмотрим этот код в разделе, посвященном функциям администрирования.
 
               
               
               
               
              
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться