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