CMS: Menü Eintrag hinzufügen
Im letzten Beitrag der Aktion „Eigenes CMS“ haben wir bereits die Form für das Menü-Eintrag hinzufügen erstellt. Heute soll die Form genau dies auch machen können.
Da wir schon eine Menü-Klasse haben, können wir auch schön objektorientiert dort einen Eintrag hinzufügen. Dafür gibt es die neue Methode addEntry. Sie bekommt die folgenden Parameter:
- $menu: MenüId, in welcher der Eintrag hinzugefügt werden soll
- $title: Titel des neuen Eintrags
- $href: Url des Ziels
In der Tabelle cms_menu hat auch jeder Eintrag eine eigene ID. Dies bestimmt die Reihenfolge der Einträge. Wir benötigen hier die höchste ID + 1 für den neuen Eintrag.
Danach fügen wir einfach via Insert den Eintrag hinzu (Datei /system/classes/menu.php):
function addEntry($menu,$title,$href){ global $dbpraefix; $res = mysql_query("SELECT MAX(id) FROM ".$dbpraefix."menu WHERE menuID = '".$menu."'"); $row = mysql_fetch_row($res); $id = $row[0] + 1; return mysql_query("INSERT INTO ".$dbpraefix."menu (id,menuID,title,href) VALUES('".$id."','".$menu."', '".$title."','".$href."')"); }
Nun muss das ganze nur noch im Admin-Menü ausgeführt werden. Natürlich mit Validierung: (Datei /admin/includes/menu-edit.php):
<?PHP if($_POST['add']){ if(trim($_POST['newtitle']) != ""){ if(trim($_POST['newurl']) != ""){ $res = Menu::addEntry(mysql_real_escape_string($_GET['menu']), mysql_real_escape_string($_POST['newtitle']), mysql_real_escape_string($_POST['newurl'])); if($res){ echo "<p>Eintrag hinzugefügt!</p>"; } else{ echo "<p>Eintrag nicht hinzugefügt!</p>"; } } else{ echo "<p>Bitte geben Sie ein Link-Ziel ein</p>"; } } else{ echo "<p>Bitte geben Sie einen Link-Titel ein</p>"; } } ?> <h1>Menü bearbeiten</h1> ...
Zum Testen hab ich in meinem Menü mal Google einen Backlink spendiert^^
Freut ihr euch auch schon aufs Bearbeiten der Einträge? Ich kann euch versprechen, dass es nicht leicht wird 😉
Dies ist ein Beitrag aus der Aktion Code & Blog, in der hier ein eigenes CMS erstellt wird.
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Kommentare
jULiM schrieb am 30.05.2011:
Habe eine Frage: Es funktioniert soweit alles nur wird dem neuen Eintrag automatisch die MenüID 0 zugewiesen. Was könnte man dagegen tun? Thx!
m1staX schrieb am 22.09.2011:
Wenn man in der Tabelle cms_menu der id die Eigenschaft 'AUTO_INCREMENT' gibt, kann man sich die MAX(id) Abfrage sparen.
m1staX schrieb am 22.09.2011:
if($_POST['add']){ erzeugt Warnungen wenn add nicht submittet wurde, besser ist: if (isset($_POST['add'])) {
Stefan Wienströer schrieb am 22.09.2011:
Das auto_increment bei menu ist nicht möglich, da es ja keine komplett forlaufende Nummer ist. Bei jeder MenuID wird ja wieder von 1 angefangen. Wegen der zweiten Meldung gib ich dir recht.
m1staX schrieb am 22.09.2011:
Stimmt, das habe ich nicht beachtet.
Über uns

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