|
|
|
| Необходимо сделать админку для меню! Меня раскрывающегося типа имеет три уровня вложенности, меню на jQuery!
Задача стоит следующая: Реализовать систему администрирования меню для изменения текущих пунктов и подпунктов и создание новых пунктов и подпунктов
Вот код меню:
<div id="menu_cot_ha_ha">
<h1>Каталог</h1>
<ul id="my-menu" class="sample-menu">
<li><a href="#0">+ Брюки</a>
<ul>
<li><a href="#0">+ Брюки Весна-Осень</a>
<ul>
<li><a href="view_cat.php?cat=vojm">Весна - Осень женские модели</a></li>
<li><a href="view_cat.php?cat=vomm">Весна - Осень молодёжные модели</a></li>
</ul>
</li>
<li><a href="#0">+ Брюки Зима</a>
<ul>
<li><a href="view_cat.php?cat=bzjm">Зима женские модели</a></li>
<li><a href="view_cat.php?cat=bzmm">Зима молодёжные модели</a></li>
</ul>
</li>
<li><a href="#0">+ Брюки Лето</a>
<ul>
<li><a href="view_cat.php?cat=bljm">Лето женские модели</a></li>
<li><a href="view_cat.php?cat=blmm">Лето молодёжные модели</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#0">+ Трикотаж</a>
<ul>
<li><a href="view_cat.php?cat=tbg">Блузы, Джемперы</a></li>
<li><a href="view_cat.php?cat=tv">Водолазки</a></li>
<li><a href="view_cat.php?cat=tpts">Платья, Туники, Сарафаны</a></li>
<li><a href="view_cat.php?cat=ttmf">Топы. Майки, Футболки</a></li>
<li><a href="view_cat.php?cat=tlub">Лосины, юбки, брюки</a></li>
</ul>
</li>
<li><a href="view_cat.php?cat=b">+ Блузы</a></li>
</ul>
</div>
|
| |
|
|
|
|
|
|
|
для: Erema
(21.09.2009 в 16:26)
| | Пункты меню будут храниться в базе данных? Структура таблицы готова или именно это вызывает сложность? | |
|
|
|
|
|
|
|
для: cheops
(21.09.2009 в 16:36)
| | А как лучше их хранить? Ну наверное в базе данных. Я вот и хочу посоветоваться с чего начать как верно построить структуру таблицы?
Да собственно волнует вопрос на счет таблицы.
И еще не понимаю каки образом у меня будит формироваться ссылка ведь сейчас то у меня четко прописаны ссылки.
К примеру:
<li><a href="view_cat.php?cat=tbg">Блузы, Джемперы</a></li>
|
тоеcть к "cat" присваивается tbg для того чтобы по данной категории вывести циклом фотографии.
При нажатии на данную ссылку в файле "view_cat.php" срабатывает вот это:
<?php
$result = mysql_query ("SELECT * FROM catalog_img WHERE cat='$cat' ORDER BY id DESC LIMIT $start, $num",$db);
$myrow = mysql_fetch_array ($result);
do{
printf
("
<span id='box_gallery'>
<a href='%s' class='highslide' onclick='return hs.expand(this)'>
<img src='%s' class='img_size' alt='изображение'>
<span id='ar'><p>Артикул %s</p></span>
</a>
</span>",
$myrow["img"], $myrow["img_small"], $myrow["art"]);
}
while($myrow = mysql_fetch_array ($result));
?>
|
Заранее благодарен!) | |
|
|
|
|
|
|
|
для: Erema
(21.09.2009 в 20:14)
| | id p_id title
1 0 Трикотаж
2 1Блузы
3 1 Джемперы
4 1 Водолазки
5 1 Платья
а вообще у вас хаос в структуре..........4 таблицы:
x( времена года )
id_x title
1 Лето
2 Весна
3 Зима
y ( М ,Ж ,ОНО :) )
id_y title
1 женские модели
2 молодёжные модели
3 детские
4 для всех!
z ( сам Товар.....)
id_z title
1 Брюки
2 Блузы
3 Джемперы
4 Водолазки
5 Платья
6 Туники
7 Сарафаны
xxx(таблица связи)
id_x id_y id_z
1 2 7 // Лето /молодёжные модели/Сарафаны
3 1 3 // Зима/женские модели/Джемперы
|
Кроме того надо предусмотреть размеры ,цвет и материал ..но это чуть другая структура... | |
|
|
|
|
|
|
|
для: serjinio
(21.09.2009 в 21:53)
| | Икак при такой структуре выводить меню средствами php? | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 10:23)
| | Для примера создал точно такую же структуру!
x( времена года )
id_x title
1 Лето
2 Весна
3 Зима
y ( М ,Ж ,ОНО :) )
id_y title
1 женские модели
2 молодёжные модели
3 детские
4 для всех!
z ( сам Товар.....)
id_z title
1 Брюки
2 Блузы
3 Джемперы
4 Водолазки
5 Платья
6 Туники
7 Сарафаны
xxx(таблица связи)
id_x id_y id_z
1 2 7 // Лето /молодёжные модели/Сарафаны
3 1 3 // Зима/женские модели/Джемперы
|
Удалось вывести в цикле заголовки (title) только из таблички "X"
Как не пытался другие пункты либо не выводятся либо выводятся не так как должны.
Вот код:
<div id="menu_cot_ha_ha">
<h1>Каталог</h1>
<ul id="my-menu" class="sample-menu">
<?php
$result = mysql_query ("SELECT * FROM x");
$myrow = mysql_fetch_array ($result);
do{
printf
("<li><a href='#0'>+ %s</a>
</li>",
$myrow["title"]);
}
while($myrow = mysql_fetch_array ($result));
?>
</ul>
</div>
|
| |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 13:29)
| | кстати лучше использовать while вместо do while | |
|
|
|
|
|
|
|
для: psychomc
(22.09.2009 в 13:56)
| | А каким образом мне выводить подпункты? | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 14:01)
| | Можно поступить примерно так
<div id="menu_cot_ha_ha">
<h1>Каталог</h1>
<ul id="my-menu" class="sample-menu">
<?php
$result = mysql_query ("SELECT * FROM x");
while($myrow = mysql_fetch_array ($result))
{
echo "<li><a href='#0'>+ {$myrow['title']}</a>",
// Извлекаем подпункты
$query = "SELECT * FROM y
WHERE id_y IN (SELECT id_y FROM xxx
WHERE id_x = {$myrow[id_x]})";
$sub = mysql_query($query);
if(!$sub) exit("Ошибка извлечения подразделов");
if(mysql_num_rows($sub))
{
echo "<ul>";
while($subrow = mysql_fetch_array($sub))
{
echo "<li>{$subrow[title]}</li>";
}
echo "</ul>";
}
echo "</li>";
}
?>
</ul>
</div>
|
| |
|
|
|
|
|
|
|
для: cheops
(22.09.2009 в 14:44)
| | Спасибо сейчас попробую=) | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 15:04)
| | А как сейчас скрипт выглядит, там $query нигде не выводится?
>и еще хотел уточнить про табличку "xxx" там у поля " id_x" какой тип поля должен был и нужно
>ли у него ставить "авто инкремент" и первичный ключ?
Нет, в таблице связи не стоит - проблем будет больше, а пользы никакой. | |
|
|
|
|
|
|
|
для: cheops
(22.09.2009 в 15:11)
| | Начну с того что напишу новую структуру таблиц:
level_1 ( таблица №1 ) (Уровень _1)
id_x title
1 Брюки
2 Трикотаж
3 Блузы
level_2 ( таблица №2 ) (Уровень _2)
id_y title
1 Брюки Весна-Осень
2 Брюки Зима
3 Брюки Лето
4 Блузы, Джемперы
5 Водолазки
6 Платья, Туники, Сарафаны
7 Топы. Майки, Футболки
8 Лосины, юбки, брюки
level_3 ( таблица №3 ) (Уровень _3)
id_z title
1 Весна - Осень женские модели
2 Весна - Осень молодёжные модели
3 Зима женские модели
4 Зима молодёжные модели
5 Лето женские модели
6 Лето молодёжные модели
svaz ( таблица №4 ) (таблица связи)
id_x id_y id_z
1 1 1 // Брюки - Брюки Весна/Осень - Весна - Осень женские модели
1 1 2 // Брюки - Брюки Весна/Осень - Весна - Осень молодёжные модели
1 2 3 // Брюки - Брюки Зима - Зима женские модели
1 2 4 // Брюки - Брюки Зима - Зима молодёжные модели
1 3 5 // Брюки - Брюки Лето - Лето женские модели
1 3 6 // Брюки - Брюки Лето - Лето молодёжные модели
2 4 - // Трикотаж - Блузы, Джемперы
2 5 - // Трикотаж - Водолазки
2 6 - // Трикотаж - Платья, Туники, Сарафаны
2 7 - // Трикотаж - Топы. Майки, Футболки
2 8 - // Трикотаж - Лосины, юбки, брюки
3 - - // Блузы
|
А вот так теперь выглядит php:
<div id="menu_cot_ha_ha">
<h1>Каталог</h1>
<ul id="my-menu" class="sample-menu">
<?php
$result = mysql_query ("SELECT * FROM level_1");
while($myrow = mysql_fetch_array ($result))
{
echo "<li><a href='#0'>+ {$myrow['title']}</a>";
// Извлекаем подпункты
$query = "SELECT * FROM level_2
WHERE id_y IN (SELECT id_y FROM svaz
WHERE id_x = {$myrow[id_x]}
)";
$sub = mysql_query($query);
if(!$sub) exit("Ошибка извлечения подразделов");
if(mysql_num_rows($sub))
{
echo "<ul>";
while($subrow = mysql_fetch_array($sub))
{
echo "<li>{$subrow[title]}</li>";
}
echo "</ul>";
}
echo "</li>";
}
?>
</ul>
</div>
|
Работает но не так как нужно! Вот скрин как работает меню при вышенаписанном php скрипте:
http://www.corona-jeans.ru/2.gif
А тут скрин меню в развернутом виде при html версии меню:
http://www.corona-jeans.ru/1.gif
html код меню:
<div id="menu_cot_ha_ha">
<h1>Каталог</h1>
<ul id="my-menu" class="sample-menu">
<li><a href="#0">+ Брюки</a>
<ul>
<li><a href="#0">+ Брюки Весна-Осень</a>
<ul>
<li><a href="view_cat.php?cat=vojm">Весна - Осень женские модели</a></li>
<li><a href="view_cat.php?cat=vomm">Весна - Осень молодёжные модели</a></li>
</ul>
</li>
<li><a href="#0">+ Брюки Зима</a>
<ul>
<li><a href="view_cat.php?cat=bzjm">Зима женские модели</a></li>
<li><a href="view_cat.php?cat=bzmm">Зима молодёжные модели</a></li>
</ul>
</li>
<li><a href="#0">+ Брюки Лето</a>
<ul>
<li><a href="view_cat.php?cat=bljm">Лето женские модели</a></li>
<li><a href="view_cat.php?cat=blmm">Лето молодёжные модели</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#0">+ Трикотаж</a>
<ul>
<li><a href="view_cat.php?cat=tbg">Блузы, Джемперы</a></li>
<li><a href="view_cat.php?cat=tv">Водолазки</a></li>
<li><a href="view_cat.php?cat=tpts">Платья, Туники, Сарафаны</a></li>
<li><a href="view_cat.php?cat=ttmf">Топы. Майки, Футболки</a></li>
<li><a href="view_cat.php?cat=tlub">Лосины, юбки, брюки</a></li>
</ul>
</li>
<li><a href="view_cat.php?cat=b">+ Блузы</a></li>
</ul>
</div>
|
| |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 15:53)
| | Вообще зря, как мне кажется, используете три таблицы для каждого из уровня вложений - обычно используют для пунктов меню любого уровня одну таблицу, вводя в неё дополнительное поле, которое указывате на родительский каталог. | |
|
|
|
|
|
|
|
для: cheops
(22.09.2009 в 16:11)
| | Можете пример привести!? | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 16:13)
| | Обсуждение такой таблицы вы сможете найти в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=701. | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 15:53)
| | Поправил скрипт!
<div id="menu_cot_ha_ha">
<h1>Каталог</h1>
<ul id="my-menu" class="sample-menu">
<?php
$result = mysql_query ("SELECT * FROM level_1");
while($myrow = mysql_fetch_array ($result))
{
echo "<li><a href='#0'>+ {$myrow['title']}</a>";
// Извлекаем подпункты
$query = "SELECT * FROM level_2
WHERE id_y IN (SELECT id_y FROM svaz
WHERE id_x = {$myrow[id_x]}
)";
$sub = mysql_query($query);
if(!$sub) exit("Ошибка извлечения подразделов");
if(mysql_num_rows($sub))
{
echo "<ul>";
while($subrow = mysql_fetch_array($sub))
{
echo "<li><a href='#0'>{$subrow[title]}</a></li>";
}
echo "</ul>";
}
echo "</li>";
}
?>
</ul>
</div>
|
теперь ссылки второго уровня вложенности выглядят как должны выглядеть.
Попробую сам вывести пункты третьего уровня !=) | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 16:11)
| | Я наверно останусь на прежнем варианте с четырьмя таблицами.
Только вот ссылки третьего уровня почему то вывести не могу(
Вот что понаделал:
<div id="menu_cot_ha_ha">
<h1>Каталог</h1>
<ul id="my-menu" class="sample-menu">
<?php
$result = mysql_query ("SELECT * FROM level_1");
while($myrow = mysql_fetch_array ($result))
{
echo "<li><a href='#0'>+ {$myrow['title']}</a>";
// Извлекаем подпункты
$query = "SELECT * FROM level_2
WHERE id_y IN (SELECT id_y FROM svaz
WHERE id_x = {$myrow[id_x]}
)";
$sub = mysql_query($query);
if(!$sub) exit("Ошибка извлечения подразделов");
$query3 = "SELECT * FROM level_3
WHERE id_y IN (SELECT id_y FROM svaz
WHERE id_z = {$myrow[id_z]}
)";
$sub3 = mysql_query($query3);
if(!$sub3) exit("Ошибка извлечения подразделов");
if(mysql_num_rows($sub))
{
echo "<ul>";
while($subrow = mysql_fetch_array($sub))
{
echo "<li><a href='#0'>{$subrow[title]}</a>";
if(mysql_num_rows($sub3))
{
echo "<ul>";
while($subrow3 = mysql_fetch_array($sub3))
{
echo "<li><a href='#0'>{$subrow[title]}</a></li>";
}
echo "</li>";
}
echo "</li>";
}
echo "</ul>";
}
echo "</li>";
}
?>
</ul>
</div>
|
| |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 16:48)
| | Я наверно Вам уже надоел но всеже вот вот код при котором выводятся тункты третьего уровня только они все в куче в пункте "Брюки Весна-Осень"
вот скрин http://www.corona-jeans.ru/3.gif
А вот код
<div id="menu_cot_ha_ha">
<h1>Каталог</h1>
<ul id="my-menu" class="sample-menu">
<?php
$result = mysql_query ("SELECT * FROM level_1");
while($myrow = mysql_fetch_array ($result))
{
echo "<li><a href='#0'>+ {$myrow['title']}</a>";
// Извлекаем подпункты
$query = "SELECT * FROM level_2
WHERE id_y IN (SELECT id_y FROM svaz
WHERE id_x = {$myrow[id_x]}
)";
$sub = mysql_query($query);
if(!$sub) exit("Ошибка извлечения подразделов");
$query3 = "SELECT * FROM level_3
WHERE id_z IN (SELECT id_z FROM svaz
WHERE id_x = {$myrow[id_x]}
)";
$sub3 = mysql_query($query3);
if(!$sub3) exit("Ошибка извлечения подразделов");
if(mysql_num_rows($sub))
{
echo "<ul>";
while($subrow = mysql_fetch_array($sub))
{
echo "<li><a href='#0'>{$subrow[title]}</a>";
if(mysql_num_rows($sub3))
{
echo "<ul>";
while($subrow = mysql_fetch_array($sub3))
{
echo "<li><a href='#0'>{$subrow[title]}</a></li>";
}
echo "</ul>";
}
echo "</li>";
}
echo "</ul>";
}
echo "</li>";
}
?>
</ul>
</div>
|
| |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 16:48)
| | При такой компоновке $query3 должен быть располжен внутри цикла
while($subrow = mysql_fetch_array($sub))
|
и при его формировании должен использоваться массив $subrow вместо $myrow. | |
|
|
|
|
|
|
|
для: cheops
(22.09.2009 в 17:15)
| | Все равно почему-то не выходит( | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 17:25)
| | Попробуйте следующий вариант
<div id="menu_cot_ha_ha">
<h1>Каталог</h1>
<ul id="my-menu" class="sample-menu">
<?php
$result = mysql_query ("SELECT * FROM level_1");
while($myrow = mysql_fetch_array ($result))
{
echo "<li><a href='#0'>+ {$myrow['title']}</a>";
// Извлекаем подпункты
$query = "SELECT * FROM level_2
WHERE id_y IN (SELECT id_y FROM svaz
WHERE id_x = {$myrow[id_x]}
)";
$sub = mysql_query($query);
if(!$sub) exit("Ошибка извлечения подразделов");
if(mysql_num_rows($sub))
{
echo "<ul>";
while($subrow = mysql_fetch_array($sub))
{
echo "<li><a href='#0'>{$subrow[title]}</a>";
$query3 = "SELECT * FROM level_3
WHERE id_z IN (SELECT id_z FROM svaz
WHERE id_у = {$subrow[id_у]}
)";
$sub3 = mysql_query($query3);
if(!$sub3) exit("Ошибка извлечения подразделов");
if(mysql_num_rows($sub3))
{
echo "<ul>";
while($subsubrow = mysql_fetch_array($sub3))
{
echo "<li><a href='#0'>{$subsubrow[title]}</a></li>";
}
echo "</ul>";
}
echo "</li>";
}
echo "</ul>";
}
echo "</li>";
}
?>
</ul>
</div>
|
| |
|
|
|
|
|
|
|
для: cheops
(22.09.2009 в 17:32)
| | Блин "Ошибка извлечения подразделов" | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 17:37)
| | Строки вида
exit("Ошибка извлечения подразделов");
|
исправьте на
exit("Ошибка извлечения подразделов - ".mysql_error());
|
что теперь выводит? | |
|
|
|
|
|
|
|
для: cheops
(22.09.2009 в 17:40)
| | "Ошибка извлечения подразделов - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 4" | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 17:43)
| | Исправьте
if(!$sub) exit("Ошибка извлечения подразделов - ".mysql_error());
|
на
if(!$sub) exit("Ошибка извлечения подразделов - ".mysql_error()." ".$query);
|
а
if(!$sub3) exit("Ошибка извлечения подразделов - ".mysql_error());
|
на
if(!$sub3) exit("Ошибка извлечения подразделов - ".mysql_error()." ".$query);
|
| |
|
|
|
|
|
|
|
для: cheops
(22.09.2009 в 17:48)
| | "Ошибка извлечения подразделов - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 4 SELECT * FROM level_2 WHERE id_y IN (SELECT id_y FROM svaz WHERE id_x = 1 )"
Вот код:
<div id="menu_cot_ha_ha">
<h1>Каталог</h1>
<ul id="my-menu" class="sample-menu">
<?php
$result = mysql_query ("SELECT * FROM level_1");
while($myrow = mysql_fetch_array ($result))
{
echo "<li><a href='#0'>+ {$myrow['title']}</a>";
// Извлекаем подпункты
$query = "SELECT * FROM level_2
WHERE id_y IN (SELECT id_y FROM svaz
WHERE id_x = {$myrow[id_x]}
)";
$sub = mysql_query($query);
if(!$sub) exit("Ошибка извлечения подразделов - ".mysql_error()." ".$query);
if(mysql_num_rows($sub))
{
echo "<ul>";
while($subrow = mysql_fetch_array($sub))
{
echo "<li><a href='#0'>{$subrow[title]}</a>";
$query3 = "SELECT * FROM level_3
WHERE id_z IN (SELECT id_z FROM svaz
WHERE id_у = {$subrow[id_у]}
)";
$sub3 = mysql_query($query3);
if(!$sub3) exit("Ошибка извлечения подразделов - ".mysql_error()." ".$query);
if(mysql_num_rows($sub3))
{
echo "<ul>";
while($subsubrow = mysql_fetch_array($sub3))
{
echo "<li><a href='#0'>{$subsubrow[title]}</a></li>";
}
echo "</ul>";
}
echo "</li>";
}
echo "</ul>";
}
echo "</li>";
}
?>
</ul>
</div>
|
| |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 17:58)
| | Хм... странно, а у вас версия MySQL какая? | |
|
|
|
|
|
|
|
для: cheops
(22.09.2009 в 18:09)
| | Apache 2 + SSL, PHP 5, MySQL 5,
А может еще есть какие то варианты решения этой проблемы? | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 18:12)
| | Выкладывайте дамп таблиц, чтобы можно было воспроизвести ситуацию. | |
|
|
|
|
|
|
|
для: cheops
(22.09.2009 в 18:13)
| | Что такое дамп таблиц? | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 18:21)
| | Посмотрите в конце темы http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=68186 - это текстовый файл с SQL-инструкциями, выполнение которого приводит к восстановлению базы данных. | |
|
|
|
|
|
|
|
для: cheops
(22.09.2009 в 18:23)
| | -- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Сен 22 2009 г., 14:35
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
--
-- БД: `coronaj_corona`
--
-- --------------------------------------------------------
--
-- Структура таблицы `level_1`
--
CREATE TABLE `level_1` (
`id_x` int(3) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
PRIMARY KEY (`id_x`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;
--
-- Дамп данных таблицы `level_1`
--
INSERT INTO `level_1` VALUES (1, 'Брюки');
INSERT INTO `level_1` VALUES (2, 'Трикотаж');
INSERT INTO `level_1` VALUES (3, 'Блузы');
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Сен 22 2009 г., 14:35
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
--
-- БД: `coronaj_corona`
--
-- --------------------------------------------------------
--
-- Структура таблицы `level_2`
--
CREATE TABLE `level_2` (
`id_y` int(3) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
PRIMARY KEY (`id_y`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=9 ;
--
-- Дамп данных таблицы `level_2`
--
INSERT INTO `level_2` VALUES (1, 'Брюки Весна-Осень');
INSERT INTO `level_2` VALUES (2, 'Брюки Зима');
INSERT INTO `level_2` VALUES (3, 'Брюки Лето');
INSERT INTO `level_2` VALUES (4, 'Блузы, Джемперы');
INSERT INTO `level_2` VALUES (5, 'Водолазки');
INSERT INTO `level_2` VALUES (6, 'Платья, Туники, Сарафаны');
INSERT INTO `level_2` VALUES (7, 'Топы. Майки, Футболки');
INSERT INTO `level_2` VALUES (8, 'Лосины, юбки, брюки');
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Сен 22 2009 г., 14:35
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
--
-- БД: `coronaj_corona`
--
-- --------------------------------------------------------
--
-- Структура таблицы `level_3`
--
CREATE TABLE `level_3` (
`id_z` int(3) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
PRIMARY KEY (`id_z`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ;
--
-- Дамп данных таблицы `level_3`
--
INSERT INTO `level_3` VALUES (1, 'Весна - Осень женские модели');
INSERT INTO `level_3` VALUES (2, 'Весна - Осень молодёжные модели');
INSERT INTO `level_3` VALUES (3, 'Зима женские модели');
INSERT INTO `level_3` VALUES (4, 'Зима молодёжные модели');
INSERT INTO `level_3` VALUES (5, 'Лето женские модели');
INSERT INTO `level_3` VALUES (6, 'Лето молодёжные модели');
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Сен 22 2009 г., 14:36
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
--
-- БД: `coronaj_corona`
--
-- --------------------------------------------------------
--
-- Структура таблицы `svaz`
--
CREATE TABLE `svaz` (
`id_x` int(3) NOT NULL,
`id_y` int(3) NOT NULL,
`id_z` int(3) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
--
-- Дамп данных таблицы `svaz`
--
INSERT INTO `svaz` VALUES (1, 1, 1);
INSERT INTO `svaz` VALUES (1, 1, 2);
INSERT INTO `svaz` VALUES (1, 2, 3);
INSERT INTO `svaz` VALUES (1, 2, 4);
INSERT INTO `svaz` VALUES (1, 3, 5);
INSERT INTO `svaz` VALUES (1, 3, 6);
INSERT INTO `svaz` VALUES (2, 4, 0);
INSERT INTO `svaz` VALUES (2, 5, 0);
INSERT INTO `svaz` VALUES (2, 6, 0);
INSERT INTO `svaz` VALUES (2, 7, 0);
INSERT INTO `svaz` VALUES (2, 8, 0);
INSERT INTO `svaz` VALUES (3, 0, 0); | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 18:36)
| | Вот отлаженный вариант
<h1>Каталог</h1>
<ul id="my-menu" class="sample-menu">
<?php
$result = mysql_query ("SELECT * FROM level_1");
if(mysql_num_rows($result))
while($myrow = mysql_fetch_array ($result))
{
echo "<li><a href='#0'>+ {$myrow['title']}</a>";
// Извлекаем подпункты
$query = "SELECT * FROM level_2
WHERE id_y IN (SELECT id_y FROM svaz
WHERE id_x = {$myrow[id_x]})";
$sub = mysql_query($query);
if(!$sub) exit("Ошибка извлечения подразделов - ".mysql_error()." ".$query);
if(mysql_num_rows($sub))
{
echo "<ul>";
while($subrow = mysql_fetch_array($sub))
{
echo "<li><a href='#0'>{$subrow[title]}</a>";
$query3 = "SELECT * FROM level_3
WHERE id_z IN (SELECT id_z FROM svaz
WHERE id_y = {$subrow[id_y]} )";
$sub3 = mysql_query($query3);
if(!$sub3) exit("Ошибка извлечения подразделов - ".mysql_error()." ".$query3);
if(mysql_num_rows($sub3))
{
echo "<ul>";
while($subsubrow = mysql_fetch_array($sub3))
{
echo "<li><a href='#0'>{$subsubrow[title]}</a></li>";
}
echo "</ul>";
}
echo "</li>";
}
echo "</ul>";
}
echo "</li>";
}
?>
</ul>
</div>
|
| |
|
|
|
|
|
|
|
для: cheops
(22.09.2009 в 19:04)
| | Большое спасибо за помощь!
Теперь буду решать проблему со ссылками и реализовывать админку =) | |
|
|
|
|
|
|
|
для: Erema
(22.09.2009 в 19:10)
| | Вотзникли проблемы при добавлении данных в табличку "svaz" которая служит для связи пунктов!
Сделал так что можно добавить ссылки первого уровня и второго. тоесть в табличи "level_1" и "level_2"
Для связи пунктов нужно в табличку "svaz" добавить id конкретной записи из таблички "level_1" и id конкретной записи из таблички "level_2"
Вот код формы:
<?php
$linck_put = 'view_cat.php?cat=';
$linck_cat = date ("U");
$linck = "$linck_put" . "$linck_cat";
$linck_put2 = 'view_cat.php?cat=';
$linck_cat2 = date ("U");
$linck2 = "$linck_put2" . "$linck_cat2";
echo "<form method='post' name='add_punkt_menu' action='add_punkts_menu_obrab.php'>";
echo "<br><p class='admin_z'>Заголовок пункта первого уровня:</p>";
echo "<input type='text' maxlength='100' value='' name='zag_l_1' id='zag_l_1' class='razm_text_form_admin'/>";
echo "<p class='admin_z'><input type='checkbox' id='fl' name='fl' value='fl'> Установите флажок если пункт будит содержать подпункт второго уровня!";
echo "</p>";
echo "<br><p class='admin_z'>Заголовок пункта второго уровня:</p>";
echo "<input type='text' maxlength='100' value='' name='zag_l_2' id='zag_l_2' class='razm_text_form_admin'/>";
echo "<p class='admin_z'><input type='checkbox' id='fl2' name='fl2' value='fl2'> Установите флажок если пункт будит содержать подпункт третьего уровня!";
echo "</p>";
echo "<input type='hidden' value='$linck' name='linck_l_1' id='linck_l_1'/>";
echo "<input type='hidden' value='$linck_cat' name='linck_cat' id='linck_cat'/>";
echo "<input type='hidden' value='$linck2' name='linck_l_2' id='linck_l_2'/>";
echo "<input type='hidden' value='$linck_cat2' name='linck_cat2' id='linck_cat2'/>";
echo "<input class='button2' type='submit' name='submit' id='submit' value='Добавить'>";
echo "</form>";
?>
|
А вот обработчика:
<?php
include("block/bd.php");
if (isset ($_POST['zag_l_1'])) {$zag_l_1 = $_POST['zag_l_1']; if ($zag_l_1=='') {unset($zag_l_1);} }
if (isset ($_POST['zag_l_2'])) {$zag_l_2 = $_POST['zag_l_2']; if ($zag_l_2=='') {unset($zag_l_2);} }
if (isset ($_POST['linck_l_1'])) {$linck_l_1 = $_POST['linck_l_1']; if ($linck_l_1=='') {unset($linck_l_1);} }
if (isset ($_POST['linck_cat'])) {$linck_cat = $_POST['linck_cat']; if ($linck_cat=='') {unset($linck_cat);} }
if (isset ($_POST['linck_l_2'])) {$linck_l_2 = $_POST['linck_l_2']; if ($linck_l_2=='') {unset($linck_l_2);} }
if (isset ($_POST['linck_cat2'])) {$linck_cat2 = $_POST['linck_cat2']; if ($linck_cat2=='') {unset($linck_cat2);} }
if (isset ($_POST['fl'])) {$fl = $_POST['fl']; if ($fl=='') {unset($fl);} }
if (isset ($_POST['fl2'])) {$fl2 = $_POST['fl2']; if ($fl2=='') {unset($fl2);} }
?>
.
.
.
.
.
<?php
if (isset($fl))
{
$fl = '';
$linck_l_1 = "$fl";
if (isset($zag_l_1))
{
$result = mysql_query ("
INSERT INTO level_1 (title, linck)
VALUES ('$zag_l_1', '$linck_l_1')
");
}
if ( isset($linck_cat) )
{
$result2 = mysql_query ("
INSERT INTO category (cat)
VALUES ('$linck_cat')
");
}
if (isset($zag_l_2))
{
$result3 = mysql_query ("
INSERT INTO level_2 (title, linck)
VALUES ('$zag_l_2', '$linck_l_2')
");
}
if ( isset($linck_cat2) )
{
$result4 = mysql_query ("
INSERT INTO category (cat)
VALUES ('$linck_cat2')
");
}
echo "
<html>
<head>
<meta http-equiv='Refresh' content='0; URL=add_punkts_menu.php'>
</head>
</html>
";
exit();
}
else{
if (isset($zag_l_1))
{
$result = mysql_query ("
INSERT INTO level_1 (title, linck)
VALUES ('$zag_l_1', '$linck_l_1')
");
}
if ( isset($linck_cat) )
{
$result2 = mysql_query ("
INSERT INTO category (cat)
VALUES ('$linck_cat')
");
}
echo "
<html>
<head>
<meta http-equiv='Refresh' content='0; URL=add_punkts_menu.php'>
</head>
</html>
";
exit();
}
?>
|
| |
|
|
|
|
|
|
|
для: Erema
(23.09.2009 в 14:59)
| | >Вотзникли проблемы при добавлении данных в табличку "svaz" которая служит для связи пунктов!
В чем именно сложности? | |
|
|
|
|
|
|
|
для: Erema
(23.09.2009 в 14:59)
| | Не понятно в чем проблема - что работает не так?
PS Под новые вопросы лучше заводить новую тему (если она связана с предыдущей на неё можно сослаться), сообщений уже много - не удобно их каждый раз выгружать. | |
|
|
|
|
|
|
|
для: cheops
(23.09.2009 в 15:07)
| | Проблема в том что у меня не получается вытащить id конкретноых записей в обработчик и вставить эти id в табличку связи | |
|
|
|