ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

Вывод списка книг, относящихся к заданной категории

Вывод списка книг, относящихся к заданной категории

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