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.





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
Kommentar von Daniel — 19. März 2010 @ 07:21
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
Kommentar von Stefan Wienströer — 19. März 2010 @ 13:26