0251 / 590 837 15
info@a-coding-project.de
;

Datenbankklasse Teil 8 (CMS)

Heute geht es in unserem Contentlion CMS wieder um die Datenbank. Diesmal ist das Seiten Bearbeiten an der Reihe.

Fangen wir mit der Hauptdatei des Bearbeitens /admin/includes/site-edit.php an:

$page->loadProperties($GLOBALS['db']->EscapeString($_GET['site']));

Und weiter unten die Menüs:

      <?PHP
        foreach(sys::getMenues() as $menue){
          echo "<option value="".$menue->id.""";
          if($_POST['menu'] == $menue->id){
            echo " selected="selected"";
          }
          else if($page->menu == $menue->id && !$_POST['menu']){
            echo " selected="selected"";
          }

          echo ">".$menue->name."</option>";
        }
      ?>

Weiter geht’s mit der Datei /system/sys.php. Dort gibt es die Funktion getMenues:

  function getMenues(){
    return $GLOBALS['db']->ReadRows("SELECT id, name, (
                                       SELECT COUNT( * ) 
                                       FROM {'dbprefix'}menu
                                       WHERE menuID = {'dbprefix'}menu_names.id
                                     )count
                                     FROM `{'dbprefix'}menu_names`");
  }

In der Klasse /system/classes/page.php bearbeiten wir nun die Methode save:

  function save(){
    $res = $GLOBALS['db']->Execute("UPDATE {'dbprefix'}pages SET
                                    title = '".$this->title."',
                                    alias = '".$this->alias."',
                                    menu = '".$this->menu."' 
                                    WHERE id = '".$this->id."'");
    $this->meta->save();
    if($res){
      $args['title'] = $this->title;
      $args['alias'] = $this->alias;
      $args['menu']  = $this->menu;
      $args['id']    = $this->id;
          EventManager::raiseEvent("page_saved","../",$args);
    }
    return $res;
  }

Und zu guter letzt noch die Klasse /system/classes/meta.php:

<?PHP
  class Meta{
    public $pageid      = '';
    public $description = '';
    public $keywords    = '';
    public $robots      = 'index, follow';
    
    public function load(){
      $rows = $GLOBALS['db']->ReadRows("SELECT name, content
                                       FROM {'dbprefix'}meta_local
                                       WHERE page = '".$this->pageid."'");
      if($rows){
        foreach($rows as $row){
          if(strtolower($row->name == 'description')){
            $this->description = $row->content;
          }
          else if(strtolower($row->name == 'keywords')){
            $this->keywords = $row->content;
          }
          else if(strtolower($row->name == 'robots')){
              $this->robots = $row->content;
          }
        }
      }
    }
    
    public function save(){
      $GLOBALS['db']->Execute("DELETE FROM {'dbprefix'}meta_local WHERE page = '".$this->pageid."'");
      if(trim($this->keywords) != ""){
        $GLOBALS['db']->Execute("INSERT INTO {'dbprefix'}meta_local (page,               name      , content)
                                                              VALUES('".$this->pageid."','keywords','".$this->keywords."')");
      }
      if(trim($this->description) != ""){
        $GLOBALS['db']->Execute("insert into {'dbprefix'}meta_local (page,               name      , content)
                                                              VALUES('".$this->pageid."','description','".$this->description."')");
      }
      if(trim(strtolower($this->robots)) != 'index, follow'){
        $GLOBALS['db']->Execute("insert into {'dbprefix'}meta_local (page,               name      , content)
                                                              VALUES('".$this->pageid."','robots','".$this->robots."')");
      }                                        
    }
    
  }
?>

Ich denke, dass wir in der Datenbankklasse nun ca. die Hälfte geschafft haben.

Kommentare

Daniel schrieb am 19.03.2010:

Wenn ich eine neue Seite erstelle kommt immer die Meldung -Die Seite konnte leider nicht erstellt werden.- . Aber die Seite wird trotzdem erstellt. Das könnte den Nutzer verunsichern. PS.: Werde in der nächsten Woche nicht mittesten können (mitarbeiten im Thema MySQLI ist mir sowieso noch zu hoch). Ich verweile in einem Center-Parcs Park. Eine Woche mal ohne Rechner. MfG Daniel

Stefan Wienströer schrieb am 19.03.2010:

Kannste dort mal nen echo mysql_error() eingeben? Weil wenn dort steht das es nicht erfolgreich ist, ist irgendetwas schiefgegangen. Die Fehlermeldung wurde wahrscheinlich unterdrückt. Viel Spaß in der nächsten Woche, mal sehen, ob die DB-Klasse bis dahin fertig ist ;-)