Сценарий show_book.php принимает номер ISBN в качестве параметра, а затем извлекает и отображает детальные сведения о данной книге.
show_book.php — сценарий отображающий данные по определенной книге
<?php
require ('book_sc_fns.php');
// Для покупательской тележки необходимо запустить сеанс
session_start();
$isbn = $_GET['isbn'];
// Извлечь из базы данных информацию о конкретной книге
$book = get_book_details($isbn);
$pagename = $book['title'];
$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 "<header>";
echo "<h2>Книга ".$pagename."</h2>";
echo "</header>";
echo "<article class=book>";
display_book_details($book);
// Установить url для кнопки "Продолжить"
$target = 'index.php';
if($book['catid'])
{
$target = 'show_cat.php?catid='.$book['catid'];
}
// Если пользователь вошел в систему как администратор, вывести
// ссылку на редактирование информации о книге
if( check_admin_user() )
{
display_button("edit_book_form.php?isbn=$isbn",
'edit-item', 'Редактировать элемент');
display_button('admin.php', 'admin-menu', 'Меню администрирования');
display_button($target, 'continue', 'Продолжить');
}
else
{
display_button("show_cart.php?new=$isbn", 'add-to-cart', 'Добавить '
.$book['title'].' в мою тележку');
display_button($target, 'continue-shopping', 'Продолжить покупки');
}
echo "</article>";
echo "</div>";
echo"</section>";
do_html_footer();
?>
Этот сценарий похож на сценарий вывода двух ранее рассмотренных страниц. Сначала запускается сеанс, а затем с помощью строки:
$book = get_book_details($isbn);
из базы данных извлекается информация о книге.
get_book_details() — функция из библиотеки book_fns.php извлекает из базы данных детальную информацию о книге
<?php
function get_book_details($isbn)
{
// Выполняет запрос в базу данных детальной информации о книге
if (!$isbn || $isbn=='')
return false;
$conn = db_connect();
$query = "SELECT * FROM books WHERE isbn='$isbn'";
$result = @$conn->query($query);
if (!$result)
return false;
$result = @$result->fetch_assoc();
return $result;
}
?>
Для вывода данных в HTML-формате используется следующий вызов:
display_book_details($book);
display_book_details() — функция из библиотеки output_fns.php отображающая детальную информацию о книге
<?php
function display_book_details($book)
{
// Выводит детальную информацию по конкретной книге
if (is_array
($book)){
echo '<table><tr>';
// Вывести изображение обложки, если оно имеется
if (@file_exists('images/'.($book['isbn']).'.jpg'))
{
$size = GetImageSize('images/'.$book['isbn'].'.jpg');
if($size[0]>0 && $size[1]>0)
echo '<td><img src=\'images/'.$book['isbn'].'.jpg\' border=0 '.$size[3].'></td>';
}
echo '<td><ul>';
echo '<li><b>Автор:</b> ';
echo $book['author'].'</li>';
echo '<li><b>ISBN:</b> ';
echo $book['isbn'].'</li>';
echo '<li><b>Наша цена:</b> ';
echo number_format($book['price'], 2);
echo '</li><li><b>Аннотация:</b> ';
echo $book['description'];
echo '</li></ul></td></tr></table>';
}
else
echo 'Невозможно вывести сведения о данной книге.';
}
?>
Следует также отметить, что функция display_book_details() выполняет поиск файла изображения для книги, имя которого выглядит как images/$isbn.jpg. Если такой файл не существует, изображения не выводится.
Оставшаяся часть сценария show_book.php устанавливает средства навигации. Обычному пользователю предоставляется кнопка "Продолжить покупки", возвращающая на страницу категорий, и кнопка "Добавить в тележку" для добавления книги в покупательскую тележку. Если вошедший в систему пользователь обладает правами администратора, ему предлагаются несколько иные опции.
На этом обзор системы работы с каталогом можно считать завершенным и перейти к коду, который реализует функциональность покупательской тележки.
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться