zisslaweng.de

 Home    CSS    PHP    HTML    JavaScript    Allgemein    Sitemap   exemption-filter

Chronologisch

Die 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 stufig

Das 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;
  }
}
Logo