php_m
Новичок
SMARTY :: Проблема с вложением FOREACH
Есть скрипт, выводящий категории файлового архива, там есть несколько уровня категорий:
-основные категории
--подкатегории
---"под подкатегории"
т.е. в табличке есть поля CID и PARENTID , скрипт выглядит вот так:
	
	
	
		
и выводится это все таким шаблоном:
	
	
	
		
в таблице категорий 6 записей: две основных категории, у каждой из них есть по одной подкатегории, у одной из подкатегорий есть еще две подкатегории, т.е. примерно такой вид:
								Есть скрипт, выводящий категории файлового архива, там есть несколько уровня категорий:
-основные категории
--подкатегории
---"под подкатегории"
т.е. в табличке есть поля CID и PARENTID , скрипт выглядит вот так:
		PHP:
	
		$db = new db_class();
	$db->con();
	$db1 = $db;
	$db2 = $db;
		$nc = new db_class();
		$nc->con();
		$nc1 = $nc;
		$nc2 = $nc;
		$cat = $lib->checkGet($_GET['cat']);
		$db->query("SELECT cid,title,descr,parentid FROM categories WHERE parentid='0' ORDER BY cid ASC LIMIT 40");
		$z = 0;
	    while ($row = $db->farray()) {
			$nc->query("SELECT cid FROM downloads WHERE cid='".$row['cid']."'");
			$cts = $nc->nrows();
			$dwnld[$z]['cts'] = $cts;
			$dwnld[$z]['cid'] = $row['cid'];
			$dwnld[$z]['title'] = $row['title'];
			$dwnld[$z]['descr'] = $row['descr'];
			$db1->query("SELECT cid,title,descr,parentid FROM categories WHERE parentid='".$row['cid']."' ORDER BY cid ASC LIMIT 40");
			$g = 0;
	    	while ($row1 = $db1->farray()) {
				$nc1->query("SELECT cid FROM occ_downloads WHERE cid='".$row1['cid']."'");
				$cts1 = $nc1->nrows();
				$dwnld1[$g]['cts'] = $cts1;
				$dwnld1[$g]['cid'] = $row1['cid'];
				$dwnld1[$g]['title'] = $row1['title'];
				$dwnld1[$g]['descr'] = $row1['descr'];
    	 		$db2->query("SELECT cid,title,descr,parentid FROM categories WHERE parentid='".$row1['cid']."' ORDER BY cid ASC LIMIT 40");
				$d = 0;
	    		while ($row2 = $db2->farray()) {
					$nc2->query("SELECT cid FROM downloads WHERE cid='".$row2['cid']."'");
					$cts2 = $nc2->nrows();
					$dwnld2[$d]['cts'] = $cts2;
					$dwnld2[$d]['cid'] = $row2['cid'];
					$dwnld2[$d]['title'] = $row2['title'];
					$dwnld2[$d]['descr'] = $row2['descr'];
    	 			$d++;
				}
				$g++;
			}
    	 	$z++;
		}
		$titler = $site_name ." || ".$p_title;
	    $tmpl->assign('title',$titler);
		$tmpl->assign('dnl',$dwnld);
		$tmpl->assign('dnl1',$dwnld1);
		$tmpl->assign('dnl2',$dwnld2);
		$tmpl->assign('keywords',$keywords." , ".$p_title);
		$tmpl->display('header.tpl');
		$tmpl->display('down-cat.tpl');
		$nc->close();
	
		PHP:
	
	{foreach item=dnl from=$dnl}
  <b>» </b><a href="{$siteurl}/downloads/{$dnl.cid}.xhtml">{$dnl.title}</a>: {$dnl.descr} ({$dnl.cts}).<br />
  {foreach item=dnl1 from=$dnl1}
	  <b>» </b><a href="{$siteurl}/downloads/{$dnl1.cid}.xhtml">{$dnl1.title}</a>: {$dnl1.descr} ({$dnl1.cts}).<br />
	{foreach item=dnl2 from=$dnl2}
	      <b>» </b><a href="{$siteurl}/downloads/{$dnl2.cid}.xhtml">{$dnl2.title}</a>: {$dnl2.descr} ({$dnl2.cts}).<br />
    {/foreach}
  {/foreach}
{/foreach}
	в итоге выводится 5 категорий в неправильном порядке и туча каких-то глюков: то первая буква названия категории также, как и сами категории - ссылкой, то по CIDу выводястя ссылками, вот и не пойму че к чему, но если не вкладывать FOREACH'и друг в друга, то выводится все норм, но без древовидности, как бы. Так в чем же моя ошибка? заранее спасибо.-категория 1:
--подкатегория 1.1:
---подкатегория 1.1.1
---подкатегория 1.1.2
-категория 2
-подкатегория 2.1
	            