Версия для печати. Взято с сайта phpsql.ru

На главную   Назад   Вперед

Обработка параметров URL

А сейчас мы напишем скрипт этой самой новостной ленты.
У нее будет два режима:
1. показывать список всех новостей (если нет параметров)
2. показывать текст конкретной новости (если ее номер передан в качестве параметра)
Всего новостей у нас будет три штуки:
1. "За качество ответят. Контролировать продукты питания начали по
2. "Варшава не раскрывает перечень возможных мер против Минска"
3. "Павел Астахов намерен добиваться отставки ряда чиновников Удмуртии"
Внимание! Пример упрощен. Никто никогда не хранит новости в коде скрипта. Хранить подобную информацию следует в базе данных
Сейчас же нам важно научиться обрабатывать параметры
Создайте файл news.php:

<?php
// Функция вывода всего списка новостей.
function show_list($news)
{
echo '<html>';
echo '<head>';
echo '<title>Последние новости</title>'
echo '<title>Последние новости</title>'
echo '</head>';
echo '<body>';
echo '<ul>';
for ($i = 0; $i <
{
echo '<li>';
echo '<a href="news.php?id=' . ($i + 1) . '">';
echo $news[$i];
echo '</a>';
echo '</li>';
}
echo '</ul>';
echo '</body>';
echo '</html>';
}
// Функция вывода конкретной новости.
function show_item($news, $id)
{
echo '<html>';
echo '<head>';
echo "<title>Новость #$id</title>";
echo '</head>';
echo '<body>';
echo '<a href="news.php">Вернуться к списку новостей</a>';
echo '<p>';
echo $news[$id - 1];
echo '</p>';
echo '<p>';
echo 'Представьте, что здесь много текста и картинок :)';
echo '</p>';
echo '</body>';
echo '</html>';
}
// Точка входа.
// Создаем массив новостей.
$news = array();
$news[0] = 'За качество ответят. Контролировать продукты питания начали по-
новому.';
$news[1] = 'Варшава не раскрывает перечень возможных мер против Минска';
$news[2] = 'Павел Астахов намерен добиваться отставки ряда чиновников
Удмуртии';
// Был ли передан id новости в качестве параметра?
if (isset($_GET['id']))
{
show_item($news, $_GET['id']);
}
else
{
show_list($news);
}
?>

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

Напоминаю! Нумерация элементов в массиве начинается с нуля.
Далее проверяем, был ли передан id новости в качестве параметра. Параметры, переданные через URL, хранятся в системной переменной $_GET. Она представляет собой ассоциативный массив (или, по-другому, словарь).
Напоминаю! Ассоциативный массив (или словарь) - это такая структура данных, которая содержит пары ключ-значение.
Ключи словаря $_GET - это имена параметров. Функция isset() возвращает true, если переменная определена. Таким образом,
if (isset($_GET[id]))
следует читать: "если URL запроса содержит параметр id".
Теперь возвращаемся к функциям. Здесь все просто, но я хотел бы обратить внимание на два момента. Во-первых, может быть не совсем понятно, для чего мы в одном месте прибаляем к $i единицу, а в другом вычитаем. Сделано это для того, чтобы пользователь видел URL первой новости так: "news.php?id=1", а не "news.php?id=0". Это хороший тон и не более того.
Во-вторых, обратите внимание на строчку:
echo "Новость $id";
Двойные кавычки отличаются от одинарных тем, что если внутри них встречаются имена переменных (со знаком $), то они заменяются на значения этих самых переменных.
Строка в одинарных кавычках остается как есть.

 
Предыдущая   На главную   Следующая