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