|
|
|
| Уважаемые друзьЯ!
Подскажите как сделать динамическую навигацию, вот такого типа:
Например, в левой части страницы index.php, есть навигация, вот такого вида:
<A href="http://yyy.ru/index.php">Главная</A>
<A href="http://yyy.ru/index.php?menu=music">Музыка</A>
<A href="http://yyy.ru/index.php?menu=video">Видео</A>
И в соответствии с этими ссылками выводились определенные данные (как не трудно догадаться, в первом случае - список имеющихся на сайте исполнителей, во втором - список имеющегося на сайте видео).
А далее, например когда выводится список исполнителей, формировалась алфавитная навигация (А Б В и т.д.) со ссылками <A href="http://yyy.ru/index.php?menu=music&cat=А">А</A>
Что в этом стиле.
Просто хочется понять принцип "приклеивания" параметров и запросов http://yyy.ru/index.php/menu=music&cat=ariana&id=1"
Заранее спасибо. | |
|
|
|
|
|
|
|
для: Shadow69
(10.04.2006 в 14:39)
| | Подробности зависят от того, где храниться информация в базе данных или в файле. но ко всем параметрам в гиперссылке <A href="http://yyy.ru/index.php?menu=music&cat=А">А</A> вы можете получить доступ при помощи суперглобального массива $_GET
<?php
echo $_GET['music']." - ".$_GET['cat']; // music - A
?>
|
В зависимости от того какие значения принимают элементы $_GET['music'] или $_GET['cat'] можно предпринимать то или иное действие. | |
|
|
|
|
|
|
|
для: cheops
(10.04.2006 в 22:46)
| | Ой! Спасибо огромное за ответ.
Информация хранится в базе данных mysql.
Значения!? Выводятся текстовая информация, и ссылки... ну, может и картинки ещё. | |
|
|
|
|
|
|
|
для: Shadow69
(11.04.2006 в 08:05)
| | Тогда задача сводится к динамическому формированию SQL-запроса
<?php
$where = "";
if($_GET['music'] == 'music') $where = "WHERE music = 34";
if($_GET['video'] == 'video') $where = "WHERE video = 34";
$query = "SELECT * FROM tbl".$where;
?>
|
Конечно, реальный код будет зависеть от того, что на самом деле обозначают параметры music и video. | |
|
|
|
|
|
|
|
для: cheops
(11.04.2006 в 14:37)
| | Что-то не понятно. :-) Но всё равно спасибо.
Объясню точнее.
Вот например GET-ссылка вашего форума: http://softtime.ru/forum/read.php?id_forum=1&id_theme=15886&page=3
Это значит, что файл read.php, обрабатыет переменную id_forum, значение которой 1, переменную id_theme, значение - 15886, переменную page, значение которой = 3.
Это значит, что если ввести выше названную ссылку, то "движок" выведет форум №1, тему №15886, страницу №3.
Вот тоже самое и у меня: если например, в строке браузера набрать http://yyy.ru/index.php?menu=video, то выведется полный список видеоролликов, а если http://yyy.ru/index.php?menu=video&id=1, то уже конкретный видеоролик под номером 1.
Ну, и так далее http://yyy.ru/index.php?menu=music, выводится общий список исполнителей, если http://yyy.ru/index.php?menu=music&cat=abba, то список всех композиций исполнителя abba, http://yyy.ru/index.php?menu=music&id=102, песню 102 исполнителя abba.
Надеюсь, ещё больше на запутал :-) | |
|
|
|
|
|
|
|
для: Shadow69
(14.04.2006 в 16:49)
| | А как у Вас организованы таблицы, хранящие весь этот контент?
Покажите, пожалуйста, дамп структуры таблиц. | |
|
|
|
|
|
|
|
для: Shadow69
(14.04.2006 в 16:49)
| | http://yyy.ru/index.php?menu=music&id=102, песню 102 исполнителя abba.
не совсем так )
http://yyy.ru/index.php?menu=music&cat=abba&id=102 | |
|
|
|
|
|
|
|
для: КРУТО
(14.04.2006 в 21:25)
| | Мне кажется, как и сказал Cheops, надо воспользоваться суперглобальным $_GET. Просто при каждом обновлении страницы проверяете наличие в этом массиве переменных, а в соответствии с их значениями (если они, конечно, заданы) вызываете определенный SQL-запрос. Вот пример.
index.php
<?php
if (isset($_GET['menu'])) {
//если задана только переменная menu, т.е. в URL-запросе: http://yyy.ru/index.php?menu=music
$query=".......";
//формируем выборку по значению music
} else if (isset($_GET['cat'])) {
//если задана дочерняя переменная, т.е. в URL-запросе: http://yyy.ru/index.php?menu=music&cat=abba
$query=".......";
//формируем выборку по значениям music и abba
}
//и т.д., после чего посылаем полученный запрос MySQL'у:
$res=mysql_query($query);
$row=mysql_fetch_array($res, mysql_assoc);
//к примеру. А дальше уже идет обработка и вывод на страницу данных, полученных из БД. Нечто вроде:
foreach($row as $value) {
echo $value."<br>";
}
//это, конечно, бредовый вариант вывода, так, для примера.
?>
<!-- Дальше идет код самой страницы на ХТМЛ... -->
|
Возможны, в принципе, и другие варианты, этот может показаться несколько громоздким. | |
|
|
|
|
|
|
|
для: Anwor
(14.04.2006 в 22:57)
| | Огромнейшее спасибо всем за ответы!
А вот такой вопрос:
Объясните, пожайлуста общий принцип вот такой навигации:
http://yyy.ru/index.php?menu=music (выводит данные по разделу "музыка")
http://yyy.ru/index.php?menu=video (выводит данные по разделу "видео")
http://yyy.ru/index.php?menu=guestbook (выводит данные из гостевой книги)
и т.д.
Чтобы сайт был из одного файла index.php, а с помощью вышеописанных GET-запросов выводил соответствующие данные? Как его реализовать? И как составить таблицу sql в данном случае?
Заранее спасибо. | |
|
|
|
|
|
|
|
для: Shadow69
(27.04.2006 в 11:29)
| | Для этого необходимо проверять содержимое GET-параметра menu
<?php
if($_GET['menu'] == 'music')
{
// Содержимое страницы "музыка"
}
if($_GET['menu'] == 'video')
{
// Содержимое страницы "видео"
}
if($_GET['menu'] == 'guestbook')
{
// Вывод из гостевой книги
}
?>
|
Если параметров много - их можно оформить в виде конструкции switch. | |
|
|
|
|
|
|
|
для: cheops
(27.04.2006 в 12:27)
| | Огромное спасибо.
А посоветуйте, как сделать вывод названий меню (видео, музыка, и т.д.) в заголовке <TITLE>. Как лучше и проще сделать? | |
|
|
|
|
|
|
|
для: Shadow69
(22.05.2006 в 11:03)
| | Что в данном случае вызывает сложность? Обычно подставляют переменную
<title><?php echo $title?></title>
|
Методы передачи этой переменной зависит от структуры страницы: монолитная она или фрагментирована и собирается при помощи require_once(). | |
|
|
|
|
|
|
|
для: cheops
(22.05.2006 в 12:34)
| | Спасибо.
Сложность в практической стороне...
Допустим я ввожу в адресную строку http://yyy.ru/index.php?menu=music (guestbook, forum).
У меня в заголовке "движок" должен вывести: Сайт YYY > Раздел Музыка (Гостевая книга, Форум)
Описать с помошью if, довольно таки громозко, так как дальше будут подразделы.
Ввожу: http://yyy.ru/index.php?menu=music&artist=abba.
Т.е "движок" должен вывести Сайт YYY > Раздел Музыка> Группа ABBA
Страница монолитная. С помощью require_once(), подключается только config.php. | |
|
|
|
|
|
|
|
для: Shadow69
(02.06.2006 в 11:00)
| | >http://yyy.ru/index.php?menu=music (guestbook, forum).
С такой структурой намучаетесь - нет возможности исправить формат строки запроса? | |
|
|
|
|
|
|
|
для: cheops
(02.06.2006 в 12:22)
| | Мне казалось, что структура не плохая.... :-) А как сделать лучше? | |
|
|
|
|
|
|
|
для: Shadow69
(02.06.2006 в 14:59)
| | Ну в принципе можно и эту оставить, так как любая другая структура будет близкой к этой, более удобна в работе, но менее читабельной. Информация у вас извлекается из базы данных? Какова структура таблицы? | |
|
|
|
|
|
|
|
для: cheops
(02.06.2006 в 21:39)
| | Еще раз спасибо.
Структупа таблицы следующая:
CREATE TABLE music (
id_music int(11) NOT NULL auto_increment,
name_groups text NOT NULL,
name_trek text NOT NULL,
time_trek time NOT NULL default '00:00:00',
bitrate_trek tinytext NOT NULL,
size_trek tinytext NOT NULL,
clicks int(5) NOT NULL default '0',
url_trek text NOT NULL,
PRIMARY KEY (id_music)
) TYPE=MyISAM AUTO_INCREMENT=3;
INSERT INTO 'music' VALUES (1, 'Evanescence', 'Going Under', '00:03:34', '320', '8,59', 0, 'http://yyy.ru/mp3/evanescence/going_under.mp3');
INSERT INTO 'music' VALUES (2, 'Evanescence', 'Bring Me To Life', '00:03:56', '320', '9,47', 0, 'http://yyy.ru/mp3/evanescence/bring_me_to_life.mp3'); | |
|
|
|