Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java Модуль 3.docx
Скачиваний:
18
Добавлен:
01.07.2025
Размер:
12.88 Mб
Скачать

Программирование пунктов меню

Внешний вид пунктов меню создан, но при нажатии не происходит изменения внешнего вида страницы. При переходах по разделам сайта в адресной строке изменяется значение параметраid в GET-запросе.

Например, при переходе в раздел Товары это значение равно единице(см. рис. 9.10).

Рис. 9.10

Задача:В файле lib.phpсоздать функцию для обработки значения из адресной строки с получением значения параметра id.Функция должна возвращать возможные значения: 0,1,2,3где 1,2,3 значения параметраid, в любом другом случае возвращается 0

Для этого в среде разработки Eclipseдля PHP, в нижней части файла lib.php добавим программный код:

// Получение номера раздела меню

function getIdMenu()

{

// Результат

$tmp=0;

// Если есть данные вGET-запросе

if ($_GET)

{

// Если параметр: id имеет значение вGET-запросе

if ($_GET["id"])

{

// Получаем значение параметра: id

$tmp = $_GET["id"];

}

// Если это значение не лежит в интервале [1..3],

// то записываем нулевое значение в$tmp

if (!(($tmp>=1)&&($tmp<=3))) $tmp=0;

}

// Возвращаем значение из функции

return $tmp;

}

С обработкой параметровGET-запроса мы уже работали. Функция возвращает результат в переменной $tmp. Если возвращаемое значение будет равно нулю, то будет осуществляться переход на главную(домашнюю) страницу.

Проверим работу этой функции для этого в самом верху в файле index.php добавим вывод результата функции getIdMenu() (см.рис. 9.11):

Рис. 9.11

В браузере выполним переход в каждый из четырех разделов и убедимся, что сверху страницы выводятся правильные цифры: 0,1,2,3 (см.рис. 9.12):

Рис. 9.12

Сравнивайте эту цифру со значением параметра id в адресной строке браузера.

Удалим строку для тестирования функции.

На данный момент в центральной части страницы всегда выводится описание товаров. Применим протестированную функцию и сделаем так,чтобы описание товаров выводилось только при выборе раздела Товары. В файле index.php найдем PHP-вставку с выводом описания товаров. Внесем изменения,получится:

<div id="sheet2">

<?php

// Получаем номер раздела меню

$id_menu = getIdMenu();

if ($id_menu==1) // Если номер: 1 -Товары

{

// Выводим описание товаров

makeOpisan();

}

?>

</div>

В переменную $id_menu запишем информацию о текущем разделе сайта и выводим описание товаров, если выбран раздел Товары.

Посмотрим на результат в браузере. Видим, что при нажатии на пункты меню - описание товаров выводится только в нужном разделе.

Получение html-разметки из базы данных

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

Задача: В файле lib.phpнеобходимо создать функцию, которая по переданному ей номеру получает из базы данных соответствующую разметку и выводит на страницу.

Обратите внимание, что фрагмент кода для работы с базой данных уже находится в функции makeOpisan()его можно скопировать и использовать в качестве шаблона с внесением некоторых изменений.

Для решения этой задачи в самом низу файла lib.phpнеобходимо добавить новую функцию:

// Получение HTML-разметки из базы данных и вывод на веб-страницу

function getHTML($nom)

{

// Результат работы функции

$html = "";

// Подключаемся кMySQL

$db = mysql_connect(ServerName,UserLogin,UserPassword);

// Если подключение выполнено

if ($db)

{

// Выбираем базу данных с проверкой успешного выбора

if (mysql_select_db(DbName,$db))

{

//Указываем использование кодировки UTF-8

mysql_query("SET names 'utf8'",$db);

//Выполняем запрос для получения данных

$rez = mysql_query("SELECT * FROM razmetka WHERE (id={$nom})");

//Определяем количество строк в результате запроса

$kol_str = mysql_num_rows($rez);

// Если получена одна строка

if ($kol_str==1)

{

//Получаем строку

$row = mysql_fetch_row($rez);

// Получаем значение поля: html

$html = $row[1];

}

}

//Отключаемся от MySQL

mysql_close($db);

}

// Выводим HTML на страницу

echo $html;

}

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

function getHTML($nom)

Функции передается номер строки в таблице, который находится в колонке id. На данный момент в таблице пять строк.

// Результат работы функции

$html = "";

В переменную $html будет получен фрагмент разметки из базы данных,

// Выводим HTML на страницу

echo $html;

который в самом конце работы функции выводится на страницу.

// Выполняем запрос для получения данных

$rez = mysql_query("SELECT * FROM razmetka WHERE (id={$nom})");

Данный SQL-запрос выбирает из таблицы razmetka строку с номером из переменной$nom.

// Если получена одна строка

if ($kol_str==1)

{

//Получаем строку

$row = mysql_fetch_row($rez);

Если строка с таким номером будет найдена, то запрос вернет всего одну строку.

// Получаем значение поля: html

$html = $row[1];

По номеру колонки получаем значение из колонки htmlтаблицы razmetka.

Для того чтобы получить нужный HTML-код, в дальнейшем будет достаточно вызвать функцию getHTML() и передать ей номер фрагмента разметки.

Внимание!!!Программный код файла lib.php увеличивается. Функции с программным кодом можно сворачивать/разворачивать при помощи знака +/- слева от названия функции (см. рис. 9.13)

Рис. 9.13

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]