<?
class menu {
protected $menu = null;
protected function level1($id, $ss) {
$zap = "select * from menu WHERE pid=$id ORDER BY p ASC";
$sth = $dbh->prepare($zap);
$sth->execute();
$dane = $sth->fetchAll();
$ss = ($ss == 1) ? ' id="qm0" class="qmmc" style="width: 600px; float: left;"' : '';
$menu = '<ul'.$ss.'>'."\n";
foreach($dane as $k => $e) {
$menu .="<li>\n";
if($this->ile($e['id']) > 0) {
$menu .= $this->generujlink($e['link'],$e['tytul'.$sys_lang],1,$e['blank'],$this->ile($e['id']),$e['id']);
$menu .= $this->parentel($e['id']);
} else {
$menu .= $this->generujlink($e['link'],$e['tytul'.$sys_lang],0,$e['blank']);
}
$menu .= '</li>'."\n";
if($ss == 1) {
$menu .='<li><span class="qmdivider qmdividery"></span></li>'."\n";
}
}
$menu.="</ul>\n";
$this->menu = $menu;
}
protected function parentel($id) {
$zap = "select * from menu WHERE pid={$id} ORDER BY p ASC";
$sth = $dbh->prepare($zap);
$sth->execute();
$dane = $sth->fetchAll();
$menu2 = "<ul>\n";
foreach($dane as $k => $e) {
$menu2 .="<li>\n";
if($this->ile($e['id']) > 0) {
$menu2 .= $this->generujlink($e['link'],$e['tytul'.$sys_lang],1,$e['blank'],$this->ile($e['id']),$e['id']);
$menu2 .= $this->parentel($e['id']);
} else {
$menu2 .= $this->generujlink($e['link'],$e['tytul'.$sys_lang],0,$e['blank']);
}
$menu2 .= "</li>\n";
}
$menu2.="</ul>\n";
return $menu2;
}
public function ile($id) {
$zap = "SELECT COUNT(*) from menu WHERE pid={$id}";
$sth = $dbh->prepare($zap);
$sth->execute();
$baza = $sth->fetch();
return $baza[0];
}
protected function generujlink($link, $tytul, $e = 0, $t = 0, $ile = 0, $id = 0) {
$link = $sf.'?kt='.$kt[1];
}
if($ile > 0) {
$link = $sf.'?kt=menu&id='.$id;
} else {
$link = '#';
}
}
$e = ($e == 1) ? 'class="qmparent" ' : '';
$t = ($t == 1) ? ' target="_blank"' : '';
$link = '<a '.$e.'href="'.$link.'"'.$t.'>'.$tytul.'</a>';
return $link;
}
public function __construct($id = 0, $ss = 1) {
$this->level1($id, $ss);
}
public function getmenu() {
return $this->menu;
}
}
?>
napisałem taki speudo kod ktory sluzy do twozenia struktury kategorii.
moje pytanie jest nastepujace. czy idzie to jakos zoptymalizowac? chodzi o ilosc zapytan do bazy...
Ten post edytował kallosz 30.10.2008, 07:06:27