0251 / 590 837 15
;

Menü-Einträge Bearbeiten Teil 1

Code & Blog Logo

Code & Blog Logo

Wie bereits erwähnt, ist es etwas schwierig die Menü-Einträge im Admin-Bereich unseres CMS zu bearbeiten. Deswegen habe ich das ganze auf 2 Beiträge ausgeweitet. Heute geht es erstmal um das Auswerten der eingegebenen Felder. Beim nächsten mal geht’s dann ums Update selbst.

Das Problem: Wir wissen nicht genau welche Felder wir per $_POST bekommen. Noch nicht einmal die Anzahl ist bekannt.

Die Lösung: Wird durchlaufen alle $_POST Parameter in einer Schleife und suchen uns die passenden raus.

Ihr erinnert euch vielleicht noch daran, dass es pro Eintrag 2 Textboxen gab. Sie hießen {id}_href und {id}_title, wobei das {id} immer anders ist.

Nun können wir einfach die letzten Buchstaben des Strings prüfen. Sind diese _href oder _titlle, wissen wir, dass es sich um eines der beiden Feldern ist. Darauf können wir dann auch über einen substr die ID herausfinden. Das ganze wird dann einfach in einem 2-dimensionalen Array gespeichert. Zum Schluss wird dieses noch mit print_r ausgegeben, um zu prüfen ob alles funktioniert.

Soweit die Theorie, jetzt zur Praxis:

In der Datei /admin/includes/menu-edit.php wird folgendes ergänzt:

  }
  else if($_POST['save']){
    foreach($_POST as $param=>$value){
      if(strlen($param) >= 6){
        if(substr($param,-5,5) == "_href"){
          $entries[substr($param,0,-5)][href] = $value;
        }
        else if(strlen($param) >= 7 && substr($param,-6,6) == "_title"){
          $entries[substr($param,0,-6)][title] = $value;
        }
      }
    }
    print_r($entries);
  }
?>
<h1>Men&uuml; bearbeiten</h1>

Bei mir wird dann das hier ausgegeben:

Array ( [1] => Array ( [title] => Testseite 1 [href] => testseite.htm ) [2] => Array ( [title] => Testseite 2 [href] => testseite2.htm ) [3] => Array ( [title] => Testseite 3 [href] => testseite3.htm ) [4] => Array ( [title] => Google [href] => http://google.de ) )

Passt. War doch gar nicht so schwer, oder?

Kommentare

Daniel Busch schrieb am 21.07.2009:

Ich bin schwer am Pluginsystem dran. Wenn was postbares fertig ist schicke ich es Dir.

Stefan Wienströer schrieb am 21.07.2009:

ok, coole Sache. Freu mich schon drauf

Marco schrieb am 27.11.2010:

Servus, ich bin es noch mal bei mir funktioniert dieser schritt nicht kann aber nicht sagen warum. Immer nach dem ich die menu-edit.php ergänzt hatte hat er mir iwas von falscher syntax gesagt on line 22 aber habe denn code schon paar mal durchgeschaut und ich finde denn fehler nicht :-( das macht mich iwie deprie. Vill kannst du mir helfen wäre echt cool von dir MfG Marco

Stefan Wienströer schrieb am 28.11.2010:

was steht bei dir in Zeile 20-25?

Marco schrieb am 30.11.2010:

Da steht ne ganze menge :-) hier ist es echo "Bitte geben Sie einen Link-Titel ein"; } else if($_POST['save']){ foreach($_POST as $param=&gt;$value){ if(strlen($param) &gt;= 6){ if(substr($param,-5,5) == "_href"){ mehr nsteht dort net wäre cool wenn du denn fehler finden würdest

Marco schrieb am 30.11.2010:

Also es sieht zur zeit so aus das ich im admin menü fast alles klappt was bisher gemacht würde nur wenn ich auf menü gehe und das bearbeiten will zeigt er mir diesen fehler an Parse error: syntax error, unexpected T_ELSE in /data/multiserv/users/473118/projects/1140101/www/admin/includes/menu-edit.php on line 22 würde mich sehr über eine positive meldung von dir freuen MfG Marco P.S. Kannst mich ja mal in icq adden 613388502

Stefan Wienströer schrieb am 30.11.2010:

ich füg dich ma im ICQ hinzu

Marco schrieb am 30.11.2010:

ok habe dich drinne ;-)

m1staX schrieb am 22.09.2011:

Die Abfrage if(strlen($param) &gt;= 6){ erscheint mir überflüssig?! Bei $entries[substr($param,0,-5)][href] = $value; die Single Quotes um 'href' nicht vergessen!

Stefan Wienströer schrieb am 22.09.2011:

Das mit dem strlen hab ich gemacht, damit er nicht bei kürzeren Parametern (die evtl. in der Zukunft hinzugefügt werden) nicht abstürzt.