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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Способ решения структуры таблицы и вывода данных

Сообщения:  [1-10]   [11-18] 

 
 автор: virtus   (19.05.2006 в 11:48)   письмо автору
 
   для: virtus   (18.05.2006 в 18:06)
 

ПОДСКАЖИТЕ, пожалуйста :(

   
 
 автор: virtus   (19.05.2006 в 10:17)   письмо автору
 
   для: Axxil   (18.05.2006 в 17:24)
 

Спасибо, только через ГЕТ не работает

   
 
 автор: virtus   (18.05.2006 в 18:06)   письмо автору
 
   для: Axxil   (18.05.2006 в 17:54)
 

спасибо большое за помощь!
в данном релизе :) выводится нужные родительные рубрики, НО как только появляется любой $_GET['level'] - выводятся все сразу подрубрики!!! А НЕОБХОДИМО ТОЛЬКО ПОДРУБРИКУ ТЕКУЩЕГО РОДИТЕЛЯ :(

   
 
 автор: Axxil   (18.05.2006 в 17:54)   письмо автору
 
   для: virtus   (18.05.2006 в 17:45)
 

Само собой не выводит :)
Надо добавить вызов ф-ии tree

<? 
$otstup
=""
$level=0
function 
tree($parent$otstup$level

if  (
$level>$_GET['level']) return; 
$sql="SELECT * FROM table WHERE parent_id=$parent"//выбираем все ветви данного узла 
$result=mysql_query($sql); 
while(
$data=mysql_fetch_array

  echo 
$otstup.$data['text']."<br>"//выводим текущий узел 
  
tree($data['parent_id'], $otstup."&nbsp"$level++); //рекурсивно вызываем саму себя 


echo 
"Корень<br>"
tree(0$otstup); 
?> 


Да, забыл ещё одно поправление
Вместо $data['parent_id'] надо $data['catid'] из вашего первого поста. Так как в качестве родителя следующего по вложенности узла не может выступать родительтекущего.

   
 
 автор: virtus   (18.05.2006 в 17:45)   письмо автору
 
   для: Axxil   (18.05.2006 в 17:30)
 

ОШИБКА: ничего не отображает вообще!
если вот эту строку

 tree($data['parent_id'], $otstup."&nbsp", $level++); //рекурсивно вызываем саму себя

перенести за

}
}

то скрипт не понимает же что $data['parent_id'] - чему-то равно...
как поступить?

   
 
 автор: Axxil   (18.05.2006 в 17:30)   письмо автору
 
   для: Loki   (18.05.2006 в 15:59)
 

Мда... Не так страшен чёрт как говорится.
Только маленькая поправка. Иначе получается бесконечная лесенка.

<?
function tree($parent$otstup$level

if  (
$level>$_GET['level']) return; 
$sql="SELECT * FROM table WHERE parent_id=$parent"//выбираем все ветви данного узла 
$result=mysql_query($sql); 
while(
$data=mysql_fetch_array

  echo 
$otstup.$data['text']."<br>"//выводим текущий узел 
  
tree($data['parent_id'], $otstup."&nbsp"$level++); //рекурсивно вызываем саму себя 


?>

   
 
 автор: Axxil   (18.05.2006 в 17:24)   письмо автору
 
   для: virtus   (18.05.2006 в 16:26)
 

Ну и добавьте третий аргумент в вызове функции tree

tree(0, $otstup,$level); 

   
 
 автор: virtus   (18.05.2006 в 16:26)   письмо автору
 
   для: Loki   (18.05.2006 в 15:59)
 

ДА !! уровень вложености!!!
Warning: Missing argument 3 for tree()

   
 
 автор: Loki   (18.05.2006 в 15:59)   письмо автору
 
   для: virtus   (18.05.2006 в 15:33)
 

Тогда вообще просто:
<?
if (!isset($_GET['id'])) $id=0;
else 
$id=intval($_GET['id']);
$sql="SELECT * FROM table WHERE parent_id=$id";
$result=mysql_query($sql);
while (
$data=mysq_fetch_array($result))
{
 echo 
"<a href=".$_SERVER['PHPSELF']."?id=".$data['id'].">".$data['text']."</a><br>";
}


а... кажись дошло чего надо... надо ограничить уровень вложенности?
тогда так:
<? 
$otstup
=""
$level=0;
function 
tree($parent$otstup$level

if  (
$level>$_GET['level']) return;
$sql="SELECT * FROM table WHERE parent_id=$parent"//выбираем все ветви данного узла 
$result=mysql_query($sql); 
while(
$data=mysql_fetch_array

  echo 
$otstup.$data['text']."<br>"//выводим текущий узел 
  
$otstup.="&nbsp"//увеличиваем отступ 
  
tree($data['parent_id'], $otstup$level++); //рекурсивно вызываем саму себя 


echo 
"Корень<br>"
tree(0$otstup); 

Через get передаем уровень вложенности. И нигде его хранить не надо.

   
 
 автор: virtus   (18.05.2006 в 15:33)   письмо автору
 
   для: Loki   (18.05.2006 в 15:12)
 

Чуток не так! этот - выводит все дерево сразу!
А мне нужно так: вывести все где pidcat=0 (pidcat=0 ЭТО значит он родитель)
а когда будет известен idcat (т.е. получу его через ГЕТ : /index.php?idcat=5) - вывести все где pidcat=0 А ПОД 5 - вывести все где pidcat=5 т.е. все подкатегории этого раздела.
ВОт, вроде понятно пояснил?

   

Сообщения:  [1-10]   [11-18] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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