ChronologischDie Datei z_menu.php5 war ursprünglich nur für die Menüsteuerung gedacht. Inzwischen enthält sie include Anweisungen für alle allgemein notwendigen Dateien. Die hier benötigte Variable $script_name kommt aus der Datei z_globals.php5, die sie bereits von vorigen Beispielen unter PHP kennen sollten. ... include ($dir.'php/z_globals.php5'); include ($dir.'/php/z_menuedbclass.php5'); $MENUE= new MenueDbMapper(); ... Die Vorgehensweise also: 2 stufigDas Script holt sich an Hand des Dateinamens (in $script_name) die Zeile, die für sie zuständig ist. $pd = $MENUE->get_Page_Data($script_name);Die hieraus gewonnenen Informationen reichen jetzt, um eine Abfrage zu starten, die jeweils nur die, aus Sicht dieses Scripts, relevanten Menüpunkte ausliest. Für das MainMenü oben waagerecht $menue = $MENUE->get_Main_Menue($pd);und das Menü links senkrecht $m = $MENUE->get_Menue_Data($pd); Die Datei z_menueclass.php5
class Page {
private $daten;
public function __construct($page = null) {
$this->daten = array('ord' => ''
'parent_ord' => '',
'pfad'=> '',
'verz_level' => '',
'gruppe'=> '',
'datei'=> '',
'menue_text'=> '',
'main'=>'',
'menue_level'=> '',
'selektor1'=> '',
'selektor2'=> '',
'selektor3'=> '',
'selektor4'=> '',
'description'=> '',
'keywords'=>'');
if (is_array($page)) {
foreach ($page as $feld => $wert){
$this->$feld = $wert;
}
}
}
public function __set($eigenschaft, $wert){
$this->daten[$eigenschaft] = $wert;
}
public function __get($eigenschaft){
if (isset($this->daten[$eigenschaft])) {
return $this->daten[$eigenschaft];
} else {
return false;
}
}
public function get_datei() {
return substr_replace($this->daten['datei'],'',
strpos($this->daten['datei'],'.php5'));
}
}
und die Datei z_menuedbclass.php5
class MenueDbMapper extends BaseDbMapper {
public function __construct (){
parent::__construct();
}
public function get_Page_Data($datei) {
if (is_numeric($datei)) {
$ext = "ord = $datei";
} else {
$ext = "if(pfad like '.',concat('/',datei),
concat('/',pfad,'/',datei)) like '$datei'";
}
$sql = "
SELECT
ord,
parent_ord,
pfad,
repeat('../',verz_level) as verz_level,
gruppe,
datei,
menue_text,
main,
menue_level,
selektor1,
selektor2,
selektor3,
selektor4,
description,
keywords
FROM seite
WHERE $ext";
$result = $this->base_query($sql);
return new Page($result->fetch_assoc());
}
public function get_Main_Menue($pd) {
$returnlist = array();
$sql = "
SELECT
menue_level,
pfad,
gruppe,
datei,
menue_text,
main,
REPEAT('../',verz_level) as verz_level,
IF (menue_level like '$pd->selektor1'
|| menue_level like '$pd->selektor2'
|| menue_level like '$pd->selektor3'
|| menue_level like '$pd->selektor4','m_act','')
AS menue_class
FROM seite
WHERE menue_level like '_00000000'
ORDER BY menue_level asc ";
$result = $this->base_query($sql);
while ($row = $result->fetch_object()){
$returnlist[] = $row;
}
return $returnlist;
}
public function get_Menue_Data ($pd) {
$returnlist = array();
$sql = "
SELECT
menue_level,
pfad,
datei,
menue_text,
REPEAT('../',verz_level) as verz_level,
IF (ord = $pd->ord,'m_act','') as menue_class
FROM seite
WHERE menue_level like '$pd->selektor1'
|| menue_level like '$pd->selektor2'
|| menue_level like '$pd->selektor3'
|| menue_level like '$pd->selektor4'
ORDER BY menue_level asc ";
$result = $this->base_query($sql);
while ($row = $result->fetch_object()){
$returnlist[] = $row;
}
return $returnlist;
}
}
|
||