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.
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
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 ;-)
Über uns

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project