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

Menü-Einträge Bearbeiten Teil 2

Code & Blog Logo

Code & Blog Logo

Joa, das ist der zweite und letzte Teil der Menü Einträge Bearbeiten Serie der CMS-Aktion. Heute geht es um das Update der Einträge. Ihr erinnert euch vielleicht daran, dass wir die Einträge bereits in ein 2-dimensionales Array gespeichert haben. Nun hatten wir mit print_r das Array ausgegeben.

In der Klasse Menu (/system/classes/menu.php) kommt nun die Funktion editEntry hinzu. Ist eigentlich nichts besonderes:

function editEntry($menu,$id,$title,$href){
    global $dbpraefix;
    return mysql_query("UPDATE ".$dbpraefix."menu SET 
                          href = '".$href."', 
                              title = '".$title."' 
                        WHERE id = '".$id."' 
                              AND menuID = '".$menu."'");
  }

Was fehlt noch? Na klar, der Aufruf in der /admin/includes/menu-edit.php. Hier ersetzen wir unser print_r einfach durch den folgenden Code:

foreach($entries as $id=>$params){
    Menu::editEntry(mysql_real_escape_string($_GET['menu']),
                    mysql_real_escape_string($id),
                    mysql_real_escape_string($params[title]),
                    mysql_real_escape_string($params[href]));
}

Das wars dann auch schon. Zum Testen hab ich mal Google den Backlink wieder weggenommen und stattdessen dem CMS-Erstellen Hauptbeitrag einen geschenkt^^

Dies ist ein Beitrag aus der Aktion Code & Blog, in der hier ein eigenes CMS erstellt wird.

Kommentare

Daniel Busch schrieb am 23.07.2009:

Hi mein Guru :-). Ich habe es schon hinbekommen das das Plugin im Adminpanel aktiv und inaktiv gesetzt werden kann (flag activated in mysql Tabelle 0 oder 1) Das ich bekomme im Adminmenü auch angezeigt. Meine Schwierigkeit besteht nun darin: Ich lasse auf der index vom defaultskin mit einem query in der DB nach"schauen" was für ein Flag gesetzt ist (if else Schleife) Nur läuft die nicht. $res = mysql_query("SELECT * FROM ".$dbpraefix."plugins WHERE activated = 0" ); if (($res)>1 ) { include("content/articles/testseite.php"); } else { echo "nichts da"; } ?> Was mache ich falsch?

Stefan Wienströer schrieb am 24.07.2009:

Probiers mal statt mit dem if (($res)>1 ) mit einem if($row = mysql_fetch_assoc($res))

Daniel Busch schrieb am 24.07.2009:

OK, versuche ich am Montag mal. Ich mache das parallel an zwei Rechnern. Also, bis zum nächsten mal. Daniel

Daniel Busch schrieb am 27.07.2009:

Ich habe in der Datei plugin.txt vergessen das ich in der menue.php folgendes hinzugefügt: ... <a href="/admin" rel="nofollow">Dashboard</a> <a href="index.php?page=sites" rel="nofollow">Seiten</a> ............................................. <a href="index.php?page=plugin" rel="nofollow">Plugins</a> ............................................. <a href="index.php?page=menues" rel="nofollow">Men&uuml;s</a> <a href="index.php?page=settings" rel="nofollow">Einstellungen</a> <a href="index.php?page=stats" rel="nofollow">Statistik</a> <a href="index.php?page=logout" rel="nofollow">Logout</a> ...

Daniel Busch schrieb am 27.07.2009:

Mist der Blog macht da ausführbaren Code draus. Was ich sagen wollte ich habe im Includeverzeichness in der datei menue.php noch einen Link für das Adminpanel hinzugefügt. MfG Daniel

Stefan Wienströer schrieb am 27.07.2009:

ok, hab aber in der Kommentar-Mail den richtigen Code^^

Dieter schrieb am 08.03.2010:

Hallo Stefan, erst einmal danke für dieses fantastische Tutorial. Sogar ein php-einsteiger wie ich kann nachvollziehen was da passiert. Leider habe ich aber hier an diesem punkt ein problem. So wie ich die "Save" function teste wird table Menu complet durch einzelne Buchstaben ersetzt. Mit ein bisschen testen und drucken der Variablen in "menu-edit.php" befindet sich im gespeicerten Array als Key nicht mehr 0, 1, 2, 3 oder 'title' bzw. 'href' sondern 1_title, 2_title .... entsprechend 1_href, 2_href. Vielleicht hab ich ja auch nur was übersehen?

Stefan Wienströer schrieb am 08.03.2010:

Hi, erstmal herzlich willkommen im Tutorial. Das die Namen die Keys nun 1_title usw. heißen, liegt daran, dass wir mehrere Menü-Einträge auf einmal gebrauchen. Dort müssen wir zum einen die ID und zum anderen die Textbox des Datensatzes wissen. Hast Du evtl. diesen Artikel übersehen? http://blog.stevieswebsite.de/2009/07/menu-eintrage-bearbeiten-teil-1/

Dieter schrieb am 08.03.2010:

Hallo Stefan, genau das wars. Muss wohl ein bisschen geschlafen haben als ich da gestern dran gearbeitet habe. Danke für die schnelle Antwort. Dieter

Stefan schrieb am 30.05.2010:

Hi, erstmal vielen dank für das Tutorial. ich hätte eine einfachere lösung für das Problem mit den input-Feldern anzubieten, in der es mit einer Foreachschleife möglich ist die Felder und die id auszulesen: Dazu muss die Methode displayEditable wie folgt geändert werden: 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." "; } } Dadurch wird im input-attribut name eine Array-Syntax geschrieben, die über $_POST['menu'] ausgelesen werden kann zum speichern braucht man dann nur folgendes eingeben: foreach($_POST['menu'] as $id =&gt; $entry){ Menu::editEntry( mysql_real_escape_string($_GET['menu']), $id, mysql_real_escape_string($entry['title']), mysql_real_escape_string($entry['href']) ); }

Stefan Wienströer schrieb am 30.05.2010:

Hi, kannste mal kruz erläutern, welches Input-Felder Problem Du meinst? (Das ist schon so lange her und ich kann gerade keins finden^^). Evtl. haben wir es auch schon behoben, weil wir im Menü schon wieder einiges gemacht haben.