Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: меню с подкатегорями
 
 автор: onik   (08.01.2008 в 15:39)   письмо автору
 
 

хочу сделать такое меню
Категория1
Категория2
Категория3

при нажатии Категории 1

Категория1
Под Категория 1-1
Под Категория 1-2
Под Категория 1-3
Категория2
Категория3
код
использую 2 таблицы в одном хранятся оснавная категория в другом подкатегории


<?php 

include ("connect.inc"); 
mysql_connect($DB_HOST,$DB_USER,$DB_PASS) or die (mysql_error()); 
mysql_select_db($DB_NAME) or die (mysql_error()); 
function 
showGood($a) { 
echo 
"$a[1]<br>"


$q="SELECT * FROM `cat` ORDER BY CID "
$res=mysql_query($q); 
while(
$row=mysql_fetch_array($res)) { 
echo 
"<a href=viw.php?CID=".$row[CID].">$row[Cat]</a><br>"

if (
$CID) { //показать товары выбранной категории 
$q mysql_query("SELECT * FROM Cat2 WHERE pid=$CID ORDER BY Namecat2") or die (mysql_error()); 
$i=0
$result = array(); 
while (
$row mysql_fetch_row($q)) { 
$result[$i] = $row
$i++; 
}; 
if (!
$i) { //если кол-во товаров в категории = 0 
echo "нет товаров"

else { 
//$i != 0 -- показываем товары в этой категории 
for ($i=0$i<count($result); $i++) 
    
showGood($result[$i],true); 
}; 


?> 


с таким кодом
а получается вот так

Категория1
Категория2
Категория3
Под Категория 1
Под Категория 2
Под Категория 3

вопрос как сделать чтоб нормально всё выводилось?

   
 
 автор: Trianon   (08.01.2008 в 16:07)   письмо автору
 
   для: onik   (08.01.2008 в 15:39)
 

Если уровней два и ровно два - применяйте запрос, соединяющий таблицы

SELECT cat.*, cat2.* 
FROM cat JOIN cat2 ON cat2.pid = cat.cid
ORDER BY cat.cid,cat2.namecat2

и один цикл, пробегающий весь результат.

Если хочется уровней без ограничений - применяйте схему хранения дерева в одном из классических видов представления. К примеру Adjacency lists - (id, parent_id, name) .

   
 
 автор: onik   (08.01.2008 в 17:11)   письмо автору
 
   для: Trianon   (08.01.2008 в 16:07)
 

Trianon,
что то с таким запросом не получается.
выдает так
Категория1
Под Категория 1
Категория1
Под Категория 1-2
Категория1
Под Категория 1-3
Категория3
категория 2 вапше не показывает т.к. нет подкатегории 2

   
 
 автор: PAUELL   (08.01.2008 в 17:58)   письмо автору
 
   для: onik   (08.01.2008 в 17:11)
 

Ооо. у меня аналогичная проблема, но с 3 , только мне так ничего не объяснили сказали, что ява поможет, только нипонятно...

   
 
 автор: onik   (09.01.2008 в 09:22)   письмо автору
 
   для: PAUELL   (08.01.2008 в 17:58)
 

и мне не помогут?

   
 
 автор: KPETuH   (09.01.2008 в 09:29)   письмо автору
 
   для: onik   (09.01.2008 в 09:22)
 

помоему ваша проблема в перменной $row сделайте во втором while ее например $row1

нет наверна вру немного не туда глянул :)

насколько я понял по задаче у вас второй while должен быть вложен в первый....

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования