|
|
|
|
|
для: ZC
(23.01.2006 в 21:05)
| | Этот код не выводит многоуровневый каталог, не могу найти ошибку, взят из учебника. | |
|
|
|
|
|
|
|
для: XPraptor
(23.01.2006 в 19:16)
| | Таблицы я создам, но как выводить сперва главные каталоги, а под ними подкаталоги.
Напишите поподробнее | |
|
|
|
|
|
|
|
для: dina
(23.01.2006 в 18:50)
| |
<?php
// Устанавливаем соединение с базой данных
require_once("config.php");
$title="Каталог продукции";
?>
<h1 class=artnamepage>Каталог продукции</h1>
<?
// Если значение параметра id_parent не установлено, следовательно,
// выбран самый верхний уровень меню
if(!isset($_GET['id_parent'])) $_GET['id_parent'] = 0;
// Если имеем дело не с корневым каталогом, то выводим ссылку на
// уровень выше и воспроизводим вышележащее меню
if ($_GET['id_parent'] != 0)
{
// Выводим ссылку для возврата в предыдущее меню
echo "<a href=index.php?id_parent=".$_GET['id_parent'].">Верхний уровень</a></p>";
// Воспроизводим вышележащее меню
$query = "SELECT * FROM catalog
WHERE hide='show' AND id_parent=".$_GET['id_parent'];
$prev = mysql_query($query);
if(!$prev) puterror("Ошибка при обращении к каталогу");
// Выводим список каталогов
while($pmenu = mysql_fetch_array($prev))
{
echo "<a href=index.php?id_parent=".$pmenu['id_parent']."&id_catalog=".$pmenu['id_catalog'].">".$pmenu['name']."</a><br>";
// Если вышележащий каталог совпадает с текущим, и у него имеются
// подкаталоги, то выводим их
if($_GET['id_parent'] == $pmenu['id_catalog'])
{
// Формируем и осуществляем SQL-запрос, извлекающий подкаталоги
// текущего каталога
$query = "SELECT * FROM catalog
WHERE hide='show' AND id_parent=".$_GET['id_parent']."
ORDER BY pos";
$ctg = mysql_query($query);
if (!$ctg) puterror("Ошибка при обращении к каталогу");
// Если SQL-запрос вернул больше одной строки – выводим
// подкаталоги
if(mysql_num_rows($ctg)>0)
{
while($cat = mysql_fetch_array($ctg))
{
// Выводим список каталогов
echo "<a href=index.php?id_parent=".$_GET['id_parent']."&id_catalog=".$cat['id_catalog'].">".$cat['name']."</a><br>";
}
}
}
}
}
// Если это корневой каталог просто выводим его подкаталоги
else
{
Выводим список подкаталогов
$query = "SELECT * FROM catalog WHERE hide='show' AND id_parent=".$_GET['id_parent']." ORDER BY pos";
$ctg = mysql_query($query);
if (!$ctg) puterror("Ошибка при обращении к каталогу1");
while($cat = mysql_fetch_array($ctg))
{
// Выводим список подкаталогов корневого каталога
echo "<a href=index.php?id_parent=".$cat['id_parent']."&id_catalog=".$cat['id_catalog'].">".$cat['name']."</a><br>";
}
}
// Если это не корневой каталог: выводим таблицу с товарными позициями
if($_GET['id_catalog'] != 0) include "product.php";
?>
|
CREATE TABLE 'catalog' (
'id_catalog' int(8) NOT NULL auto_increment,
'name' text NOT NULL,
'description' text NOT NULL,
'pos' int(3) NOT NULL default '0',
'hide' enum('show','hide') NOT NULL default 'show',
'id_parent' int(8) NOT NULL default '0',
PRIMARY KEY ('id_catalog'),
KEY 'id_parent' ('id_parent')
) TYPE=MyISAM;
|
INSERT INTO 'catalog' VALUES (1, 'Жильё', 'Вторичный рынок', 1, 'show', 0);
INSERT INTO 'catalog' VALUES (2, 'Строящися квартиры', ' ', 2, 'show', 0);
INSERT INTO 'catalog' VALUES (3, 'Квартиры', ' ', 2, 'show', 1);
|
| |
|
|
|
|
|
|
|
для: dina
(23.01.2006 в 18:50)
| | Трудно читать код. В принципе такой вариант многоуровневости не очень удобен. Я когда то тоже сделал один сайт на таком принципе и потом долго сожалел об этом.
Вам лучше использовать для каждого уровня свою таблицу и выводить из них данные станет на много проще.
В каждой таблице нижнего уровня присутствует ид раздела верхнего уровня к которому относится запись. | |
|
|
|
|
|
|
| Пытаюсь сделать многоуровневый каталог, но не
получается. Подкаталоги не выводятся.
<?php
// Устанавливаем соединение с базой данных
require_once("config.php");
$title="Каталог продукции";
?>
<h1 class=artnamepage>Каталог продукции</h1>
<?
// Если значение параметра id_parent не установлено, следовательно,
// выбран самый верхний уровень меню
if(!isset($_GET['id_parent'])) $_GET['id_parent'] = 0;
// Если имеем дело не с корневым каталогом, то выводим ссылку на
// уровень выше и воспроизводим вышележащее меню
if ($_GET['id_parent'] != 0)
{
// Выводим ссылку для возврата в предыдущее меню
echo "<a href=index.php?id_parent=".$_GET['id_parent'].">Верхний уровень</a></p>";
// Воспроизводим вышележащее меню
$query = "SELECT * FROM catalog
WHERE hide='show' AND id_parent=".$_GET['id_parent'];
$prev = mysql_query($query);
if(!$prev) puterror("Ошибка при обращении к каталогу");
// Выводим список каталогов
while($pmenu = mysql_fetch_array($prev))
{
echo "<a href=index.php?id_parent=".$pmenu['id_parent']."&id_catalog=".$pmenu['id_catalog'].">".$pmenu['name']."</a><br>";
// Если вышележащий каталог совпадает с текущим, и у него имеются
// подкаталоги, то выводим их
if($_GET['id_parent'] == $pmenu['id_catalog'])
{
// Формируем и осуществляем SQL-запрос, извлекающий подкаталоги
// текущего каталога
$query = "SELECT * FROM catalog
WHERE hide='show' AND id_parent=".$_GET['id_parent']."
ORDER BY pos";
$ctg = mysql_query($query);
if (!$ctg) puterror("Ошибка при обращении к каталогу");
// Если SQL-запрос вернул больше одной строки – выводим
// подкаталоги
if(mysql_num_rows($ctg)>0)
{
while($cat = mysql_fetch_array($ctg))
{
// Выводим список каталогов
echo "<a href=index.php?id_parent=".$_GET['id_parent']."&id_catalog=".$cat['id_catalog'].">".$cat['name']."</a><br>";
}
}
}
}
}
// Если это корневой каталог просто выводим его подкаталоги
else
{
Выводим список подкаталогов
$query = "SELECT * FROM catalog WHERE hide='show' AND id_parent=".$_GET['id_parent']." ORDER BY pos";
$ctg = mysql_query($query);
if (!$ctg) puterror("Ошибка при обращении к каталогу1");
while($cat = mysql_fetch_array($ctg))
{
// Выводим список подкаталогов корневого каталога
echo "<a href=index.php?id_parent=".$cat['id_parent']."&id_catalog=".$cat['id_catalog'].">".$cat['name']."</a><br>";
}
}
// Если это не корневой каталог: выводим таблицу с товарными позициями
if($_GET['id_catalog'] != 0) include "product.php";
?>
и создаю таблицу
CREATE TABLE 'catalog' (
'id_catalog' int(8) NOT NULL auto_increment,
'name' text NOT NULL,
'description' text NOT NULL,
'pos' int(3) NOT NULL default '0',
'hide' enum('show','hide') NOT NULL default 'show',
'id_parent' int(8) NOT NULL default '0',
PRIMARY KEY ('id_catalog'),
KEY 'id_parent' ('id_parent')
) TYPE=MyISAM;
#
# Дамп данных таблицы 'catalog'
#
INSERT INTO 'catalog' VALUES (1, 'Жильё', 'Вторичный рынок', 1, 'show', 0);
INSERT INTO 'catalog' VALUES (2, 'Строящися квартиры', ' ', 2, 'show', 0);
INSERT INTO 'catalog' VALUES (3, 'Квартиры', ' ', 2, 'show', 1);
Должно быть ведь: Жилье
Квартиры
Строящиеся квартиры
а у меня только Жилье
Строящиеся квартиры | |
|
|
|
|