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

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

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

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

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

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

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

Вывод списка категорий

Вывод списка категорий

Первый сценарий, index.php, выводит список всех категорий из базы данных. На титульной странице, также, в ручном режиме, выведен список новых поступлений.

index.php — сценарий вывода титульной страницы сайта

<?php
require_once ('book_sc_fns.php');
// Для покупательской тележки необходимо запустить сеанс
session_start();
$pagename = "Интернет-магазин традиционной и электронной книги";
$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>Добро пожаловать в магазин ABC-Book</h2>";
echo "</header>";
echo "<article>";
?>

<div class="table">
<h3>Новинки сезона</h3>
<table>
<tr>
<td><a href="show_book.php?isbn=0104"><img src="images/0104.jpg" alt="Компьютерные сети"></a></td>
<td><a href="show_book.php?isbn=0201"><img src="images/0201.jpg" alt="Веб-дизайн"></a></td>
<td><a href="show_book.php?isbn=0401"><img src="images/0401.jpg" alt="Книга веб-программиста"></a></td>
<td><a href="show_book.php?isbn=0305"><img src="images/0305.jpg" alt="Связной из Багдада"></a></td>
</tr>
<tr>
<td>Компьютерные сети <br>
Э. Таненбаум, Д. Уэзеролл<br>
Твердый переплет (2012)<br>
Computer Networks, 5ed.
<br>
1 678.00руб</td>
<td>Веб-Дизайн: книга Стива Круга или "не заставляйте меня думать!" <br>
Стив Круг <br>
Мягкая обложка (2008)<br>
Don't Make Me Think! A Common Sense Approach to Web Usability
<br>
716.00руб</td>
<td>Книга веб-программиста. Секреты профессиональной разработки веб-сайтов <br>
Б. Хоган, К. Уоррен, М. Уэбер, К. Джонсон, А. Годин<br>
Мягкая обложка (2013)<br>
422.00руб </td>
<td>Связной из Багдада <br>
Чингиз Абдуллаев<br>
Букинистическое издание<br>
Твердый переплет (2005)<br>
240.00 руб<br>
</td>
</tr>
</table>
</div>
<?php
echo "</article>";
echo "</div>";
echo"</section>";
do_html_footer();
?>

Сценарий начинается с включения файла book_sc_fns.php, который содержит все библиотеки функций для данного приложения.

book_sc_fns.php — библиотека функций для данного приложения

<?php
require_once('db_fns.php');
require_once('data_valid_fns.php');
require_once('output_fns.php');
require_once('book_fns.php');
require_once('user_auth_fns.php');
require_once('admin_fns.php');
require_once('order_fns.php');
?>

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

Сценарий включает вызовы функций вывода HTML-содержимого, таких как do_html_header() и do_html_footer(), код которых находится в файле output_fns.php.

do_html_header() — функция вывода верхнего содержимого страницы

<?php
function do_html_header($pagename, $keywords, $description)
{
// Выводит HTML-заголовок
// Объявить переменные сеанса
if(!$_SESSION['items']) $_SESSION['items'] = '0';
if(!$_SESSION['total_price']) $_SESSION['total_price'] = '0.00';
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<title><?php echo $pagename ?></title>
<meta name="keywords" content="<?php echo htmlspecialchars($keywords, ENT_QUOTES)?>">
<meta name="description" content="<?php echo htmlspecialchars($description, ENT_QUOTES)?>"
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="css/style.css" rel="stylesheet" type="text/css">
<link href="css/basic.css" rel="stylesheet" type="text/css">
<!--[if lt IE 9]>
<script src="js/libs/modernizr-2.0.6.min.js"></script>
<![endif]-->
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<div id="container">
<header>
<div id="header">
<h1><?php echo $pagename ?></h1>
<nav id="navigator">
<ul>
<li ><a class="active" href="index.php">Home</a></li>
<li><a href="#showcase/free_templates/">О компании</a></li>
<li><a href="#showcase/commercial_templates/">Как сделать заказ</a></li>
<li><a href="#about/">Помощь</a></li>
<li><a href="#contact/">Контакты</a></li>
</ul>
</nav>
<?php
if($_SESSION['items']>0)
{
echo "<div class=info>";
echo "<div class=item>";
if(isset($_SESSION['admin_user']))
echo ' ';
else
echo '<p>Всего книг = '.$_SESSION['items'].'</p>';
if(isset($_SESSION['admin_user']))
echo ' ';
else
echo '<p>Общая сумма = '.number_format($_SESSION['total_price']).' руб</p>';
echo "</div>";

echo "<div class=button>";
if(isset($_SESSION['admin_user']))
display_button('logout.php', 'log-out', 'Выход');
else
display_button('show_cart.php', 'view-cart', 'Показать тележку');
echo "</div>";
echo "</div>";
} else {
echo "<div class=info_net>";
echo "<div class=item>";
if(isset($_SESSION['admin_user']))
display_button('logout.php', 'log-out', 'Выход');
echo"</div>";
echo"</div>";
}
?>
</div>
<?php
}

do_html_footer() — функция вывода нижнего содержимого страницы

<?php
function do_html_footer()
{
// Выводит завершыющие HTML-дескрипторы
?>
<div class="spacer"></div>
<footer id="footer">
<p>© Смирнов В.И. 2013 год   <a href="http://sevidi.ru">www.sevidi.ru </a>   E-mail: <a href="mailto:istern24@mail.r">istern24@mail.ru</a></p>
</footer>
</div>
</body>
</html>
<?php
}

Кроме того, предусмотрен код для проверки ситуации, когда пользователь входит в систему с правами администратора. В этом случае такому пользователю предоставляются несколько иные средства навигации. Мы вернемся к этому вопросу в разделе, посвященным функциям администрирования.

Ниже показана наиболее важная часть сценария:

// Извлечь категории из базы данных
$cat_array = get_categories();

//Отобразить в виде ссылок на соответствующие страницы категорий
display_categories($cat_array);
?>

Прежде чем приступим к рассмотрению сценариев, подсоединимся к созданной базе данных book_sc, сценарий присоединения к которой находится в файле db_fns.php.

<?php
// Выставляем уровень обработки ошибок
error_reporting(E_ALL & ~E_NOTICE);
// сейчас выставлен сервер локальной машины
$dblocation = "localhost";
// Имя базы данных, на хостинге или локальной машине
$dbname = "book_sc";
// Имя пользователя базы данных
$dbuser = "root";
// и его пароль
$dbpasswd = "admin";
// Устанавливаем соединение с базой данных
$db=mysqli_connect("$dblocation", "$dbuser", "$dbpasswd", "$dbname");

/* проверка соединения */
if (mysqli_connect_errno()) {
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
exit();
}
mysqli_query($db,'SET AUTOCOMMIT=1');
@mysqli_query($db, "SET NAMES 'utf8'");
/* Установка русской локали соединения */
mysqli_query($db, "SET lc_time_names = 'ru_RU'") ;

if(!function_exists('get_magic_quotes_gpc'))
{
function get_magic_quotes_gpc()
{
return false;
}
}
function db_connect()
{

$result = new mysqli('localhost', 'root', 'tktyf', 'book_sc');
$result->set_charset("utf8");
if (!$result)
return false;
$result->autocommit(TRUE);
return $result;
}

function db_result_to_array($result)
{
$res_array = array();

for ($count = 0; $row = $result->fetch_assoc(); $count++)
$res_array[$count] = $row;

return $res_array;
}
?>

Функции get_categories() и display_categories() находятся, соответственно, в библиотеках book_fns.php и output_fns.php. Функция get_categories() возвращает массив категорий, существующих в системе, который затем передается в функцию display_categories().

Функция get_categories() из библиотеки book_fns.php — эта функция извлекает из базы данных список категорий

<?php
function get_categories()
{
// Эапросить в базе данных список категорий
$conn = db_connect();
$query = 'select catid, catname
from categories'
;
$result = @$conn->query($query);
if (!$result)
return false;
$num_cats = $result->num_rows;
if ($num_cats == 0)
return false;
$result = db_result_to_array($result);
return $result;
}
?>

Как видите, функция get_categories() подключается к базе данных и затем извлекает список, включающий все идентификаторы и имена категорий. Здесь используется ранее написанная функция db_result_to_array() из библиотеки db_fns.php, которая показана выше. Эта функция принимает идентификатор результата от MySQL и возвращает массив строк с числовой индексацией, где каждая строка представляет собой ассоциативный массив. В нашем случае массив возвращается в сценарий index.php, где, в свою очередь, передается в функцию display_categories() из библиотеки output_fns.php. Эта функция отображает каждую категорию в виде ссылки на страницу, содержащую книги данной категории.

Функция display_categories() из библиотеки output_fns.php — эта функция отображает массив категорий в виде списка ссылок на категории

<?php
function display_categories($cat_array)
{
if (!is_array($cat_array))
{
echo 'В настоящий момент нет доступных категорий<br />';
return;
}

echo '<ul>';
foreach ($cat_array as $row)
{
$url = 'show_cat.php?catid='.($row['catid']);
$title = $row['catname'];
echo '<li>';
do_html_url($url, $title);
echo '</li>';
}
echo '</ul>';

}
?>

Функция display_categories() преобразует каждую категорию базы данных в ссылку. Все ссылки передаются в следующий сценарий, show_cat.php, при этом каждая из них имеет собственный параметр — идентификатор категории catid (Это уникальное число сгенерированное MySQL, которое служит для идентификации категории).

Упомянутый параметр определяет, какая категория должна в конечном итоге отображаться.