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

CMS: Menü Eintrag hinzufügen

Code & Blog Logo

Code & Blog Logo

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&uuml;gt!</p>";
        }
        else{
          echo "<p>Eintrag nicht hinzugef&uuml;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&uuml; 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.

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.