io ho risolto un problema simile in questo modo:
questo metodo dentro una classe. $arrCategoriesTree è una variabile di classe, ovviamente, puoi valorizzarlo cosi:Codice PHP:public function categories_tree($parent=0, $spacer = '') {
$sql = "select * from categories where parent = $parent order by parent";
$result = $this->db->fetchAll($sql);
$num = count($result);
$spacer .= '- ';
foreach($result as $k => $v) {
if($num == 0 || $result[$k]['parent'] == '0') {
$spacer = '';
}
$this->arrCategoriesTree[$result[$k]['id']] = $spacer.$result[$k]['category'];
$this->q++;
$this->categories_tree($result[$k]['id'], $spacer);
}
return $this->arrCategoriesTree;
}
il metodo è richiamata da uno script php, il risultato lo passiamo a smarty:Codice PHP:private $arrCategoriesTree = array();
infine in smarty recupero il valore passato:Codice PHP:$smarty->assign('loopcategorie', $c->categories_tree());
se vuoi metterle in una select fa semplicemente cosiCodice PHP:{foreach from=$loopcategorie key="keyvar" item="itemvar"}
{$itemvar}
{/foreach}
nel mio caso il value è la colonna "id" della tabella.Codice PHP:<select>
{html_options options=$loopcategorie}
</select>
non è esattamente il tuo caso ma secondo me puoi riadattarlo facilmente.
ciao


Rispondi quotando