Консультация № 105130
12.10.2007, 00:53
0.00 руб.
0 3 3
Здравствуйте ! У меня такой вопрос. Обьясните мне пожалста как передавать параметры через url адрес , или как там правильно)).
Ну допустим хотя бы взять адрес этой страницы, где я задаю вопрос :

http://rusfaq.ru/?Step=ask&ID0=5&ID1=3&ID2=22

У нас есть 4 параметра: step, id0, id1, id2. Каждый получает определенное значение в зависимости от выбранной мною категории. Так вот мне интересно, а как это все работает.

К примеру:
Мне нужно чтобы в зависимости от выбранной пользователем ссылки на экране появлялась та или иная информация. Допустим у меня есть сайт со сборником книг. На странице находится 30 ссылок , каждая представляет собой определенный раздел: скажем фантастика, детективы..... В зависимости от нажатой пользователем ссылки отображается список книг данного раздела. Возможно ли все это запихать в один php файл ?
Просто не хочется создавать 30 html файлов , а потом еще для каждой книги свой файл.

Обьясните пожалста как все это организовать. Если можно с исходником. Спасибо.

Обсуждение

Неизвестный
12.10.2007, 01:08
общий
это ответ
Здравствуйте, Whiteman!
Есть множество вариантов:
1) В зависимости от параметра подгружать нужную страницу файл (нужно быть осторожным, т.к. можно будет подставить в запрос любой сторонний файл)
Запрос http://somesite.ru/script.php?file=fantastic подгрузит fantastic.html

2) Запихать всё в один файл (получится очень большой файл)


Приложение:
1)<?if (is_file($file.".html")) echo file_get_contents($file.".html");?>2)<?switch($_GET[‘cat‘]){case "fantastic":echo <<<HTML<b>Фантастика</b>HTMLbreak;case "horror":....break;}?>
Неизвестный
12.10.2007, 15:49
общий
это ответ
Здравствуйте, Whiteman!

Не соглашусь с предыдущим экспертом - какой смысл инклудить хтмл‘и в пхп файл - если уж все-равно эти 30 хтмл файлов создавать, так лучше их оставить обычным хтмлом, роботам с ними проще работать

Для каталога лучше использовать базу. Описания и названия книг и категорий хранятся в базе. Создается один html для книги (темплейт страницы), в котором вставками пхп-кода выводятся описание/название той книги, идентификатор который скрипт получил в качестве параметра. Ну и аналогично с категорией. Потом еще в идеале при помощи mod_rewrite перевести урл в псевдостатический, т.е. вместо http://site.com/book.php?id=1 будет например http://site.com/book1.html.

По базе - в самом простом случае нужно 2 таблицы - категорий и книг. Если в каталоге не может быть подкатегорий то все просто:

Categories
-------------
id
name
description

Books
-------------
id
cat_id
name
description

если могут быть подкатегории - для каталога нужно хранить еще либо parent_id (проще в реализации), либо left, right, level - работает быстрее, но такое дерево реализовать сложнее.

приводить код думаю смысла особого нет - десятью строчками тут не обойдешься, а полный - у меня есть только полноценный интернет-магазин, там многовато будет :)
Неизвестный
12.10.2007, 20:08
общий
это ответ
Здравствуйте, Whiteman!
Дам пример с использованием базы данных.
Для начала создаете таблицу в базе данных из трех полей ID; link и name (с именем book_kateg например). Первое поле - индекс с параметром автозаполнение, второе имя таблицы базы данных с инфой о книгах определнного раздела (фантастика, детективы)(таблицы кстати тоже нужно создать). После этого в файле например index.php создаете скрипт, в котором сперва проверяете передачу параметров через url то есть методом GET например так:
<?php
if (!isset($_GET[‘kateg‘]))// если в урле ничего не передается выводим список категорий
{
include(‘modul/home.php‘);..подключаем файл с сылками на категории
}
else
{
//запрашиваем имя таблицы категорий из таблицы book_kateg по переменной $_GET[‘kateg‘с индексом на таблицу и далее выводим инфу из таблицы с книгами соответствующей категории (фантастика, детективы)

}
?>

в файле home.php пишете скрипт запроса к таблице book_kateg и вывода в браузер тех самых 30 ссылок на категории программ вида
echo ‘<p><a href="http://www.vash_sait/index.php?kateg=‘.$kateg.‘">‘.$name.‘</a>.; При формировании ссылок в цикле вместо $kateg скрипт поставит числа 1,2,3..., а вместо $name название категории, значения которых беруться из таблицы book_kateg. Кстати в таблицу можно добавить еще одно поле с описанием категории и выводить еще и его после названия.
Примерно так. Полностью скрипт не привожу. Его нужно писать под конкретную базу данных, но основная идея, я думаю, понятна. Не мешает еще сделать скрипт безопасным - выполнять проверку переменных, полученных методом GET.
Кстати этот тот же принцип можно использовать и при хранении информации и в текстовых файлах. Если нужны пояснения пишите в личку, либо на мыло serg-gor@yandex.ru
Удачи!
Форма ответа