0251 / 590 837 15
;

Menü Einträge löschen

Code & Blog Logo

Code & Blog Logo

In unserer „Eigenes-CMS-Aktion“ geht es heute um das Löschen von Menüeinträgen. Hier müssen wir als erstes in der Methode displayEditable der Klasse Menu Löschen-Buttons einfügen. Danach müssen wir in der selben Klasse eine Methode hinzufügen, die die Einträge tatsächlich löscht. Und wir brauchen natürlich noch den Aufruf in der menu-edit.php

Aber als erstes muss ich leider noch über einen Fehler im letzten Beitrag berichten. Ich habe den nur zufällig gefunden. An einer Stellen wurde $menu statt $_GET[‚menu‘] verwendet. Ich hab den Beitrag nun verbessert. Schaut’s euch am besten nochmal an: /menu-eintrage-bearbeiten-teil-2/.

So nun zur Methode displayEditable (Datei system/classes/menu.php). Hier muss wie gesagt ein Löschen-Button hinzugefügt werden. Als Name bekommt er {id}_delete, damit wir ihn später auswerten können. Hier ist der neue Code:

function displayEditable($id){
  global $dbpraefix;
  $res = mysql_query("SELECT id, title,href FROM ".$dbpraefix."menu WHERE menuID = '".$id."' ORDER BY id");
  while($row = mysql_fetch_row($res)){
    echo $elementstart."<input name="".$row[0]."_title" value="".$row[1]."" />
                        <input name="".$row[0]."_href" value="".$row[2]."" />
                        <input type="submit" name="".$row[0]."_delete" value="X" /><br />";
  }
}

Und wenn wir schonmal dort sind, können wir auch sofort die Methode fürs Löschen anlegen. Hier muss noch berücksichtigt werden, dass die nachfolgenden ids alle kleiner werden. So haben wir da keine Lücken drin:

function deleteEntry($menu,$id){
  global $dbpraefix;
  $res = mysql_query("DELETE FROM ".$dbpraefix."menu WHERE menuID = '".$menu."' AND id = '".$id."'");
  if($res){
    $res = mysql_query("UPDATE ".$dbpraefix."menu SET id = id - 1 WHERE id > '".$id."'");
  }
  return $res;
}

Fehlt uns nur noch der Aufruf in der /admin/includes/menu-edit.php:

...
  }
  else{
    foreach($_POST as $param=>$value){
      if(strlen($param) >= 8){
        if(substr($param,-7,7) == "_delete"){
          Menu::deleteEntry(mysql_real_escape_string($_GET['menu']),
                            mysql_real_escape_string(substr($param,0,-7)));
        }
      }
    }
  }
?>
<h1>Men&uuml; bearbeiten</h1>
...

Kommentare

jULiM schrieb am 08.06.2011:

Komischerweise passiert, wenn ich auf den Löschen-Button klicke überhaupt nichts. Ich habe mir den Einstiegspunkt geladen und das Skript ausgetauscht aber nichts zu machen...? Was jemand an was das liegen könnte?

jULiM schrieb am 09.06.2011:

Hat sich erledigt... War ein kleines, vergessenes Anführunszeichen ;)