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

Datenbank-Daten bei ‚Seite Bearbeiten‘ verwenden

Code & Blog Logo

Code & Blog Logo

Heute geht es bei der Aktion Eigenes CMS nochmal um das Bearbeiten einer Seite im Admin-Bereich. Bisher sieht man nur die einzelnen Formularelemente. Hier sollen heute auch Daten reinkommen! Bis auf den Inhalt an sich, wird nun alles gefüllt.

Im Seite Bearbeiten soll schön objektorientiert mit der Klasse Page gearbeitet werden. Da sie im Admin-Bereich noch gar nicht importiert wurde müssen wir das nun tun. Also fügen wir einach einen Verweis zu /system/classes/page.php hinzu. Die Verweise in der Datei /admin/index.php sehen also so aus:

<?PHP
  session_start();
  include("../system/dbconnect.php");
  include("../system/settings.php");
  include("../system/classes/user.php");
  include("../system/classes/menu.php");
  include("../system/classes/page.php");
  include("../system/filterfilename.php");
  include("../system/sys.php");
?>

Nun geht es weiter mit der Datei /admin/includes/site-edit.php. Hier laden wir uns erstmal die Eigenschaften der zu bearbeitenden Seite in die Variable $page:

<?PHP
  $page = new Page();
  $page->loadProperties(mysql_real_escape_string($_GET['site']));
?>
<h1>Seite bearbeiten</h1>
...

Dann geben wir schonmal den Titel und den Alias in den 2 Textboxen aus:

...
<h2>Inhalt</h2>
<label for="title">Titel:</label>
<input name="title" value="<?PHP echo $page->title; ?>" /><br />
<label for="alias">Alias:</label>
<input name="alias" value="<?PHP echo $page->alias; ?>" /><br />
...

Fehlt nur noch die Auswahl des Menüs. Hier muss als erstes beim Befüllen der Auswahlliste das selected gesetzt werden. Derzeit wird dort schon einmal das selcted gesetzt. Fügen wir einfach ein else if hinzu:

<?PHP
  foreach(sys::getMenues() as $menue){
    echo "<option value="".$menue['id'].""";

    if($_POST['menu'] == $menue['id']){
      echo " selected="selected"";
    }
    else if($page->menu == $menue['id']){
      echo " selected="selected"";
    }

    echo ">".$menue['name']."</option>";
  }
?>

Jetzt gibt es nur noch ein Problem, dass wenn man ein anderes Menü auswählt 2 Einträge selektiert werden. Das lösen wir aber ein anderes Mal. Aber die Vorschau des Menüs können wir schon einbauen:

<?PHP
  if($_POST['menu']){
    Menu::display($_POST['menu'],"<ul>","</ul>","<li>","</li>","");
  }
  else if($page->menu > 0){
    Menu::display($page->menu,"<ul>","</ul>","<li>","</li>","");
  }
?>

Das war dann für heute auch schon alles. Bis zum nächsten Mal 😉

Kommentare

Kay schrieb am 14.08.2009:

Servus, ich wollte mal nen bissl zu dem hier unterstützen: "Jetzt gibt es nur noch ein Problem, dass wenn man ein anderes Menü auswählt 2 Einträge selektiert werden. Das lösen wir aber ein anderes Mal." Bei mir habe ich das wie folgt gelöst: if(isset($_POST) &amp;&amp; $_POST['menu'] == 0) { echo '-- Kein Men&uuml; --'; } else { echo '-- Kein Men&uuml; --'; } foreach(sys::getMenues() as $menue) { echo 'menu == $menue['id']) { echo 'selected="selected"'; } echo '&gt;' . $menue['name'] . ''; } Und für das Preview des selektierten Menüs: if(isset($_POST['menu']) &amp;&amp; $_POST['menu'] &gt; 0) { Menu::display($_POST['menu'],"","","","",""); } else if(isset($_POST['menu']) &amp;&amp; $_POST['menu'] == 0) { } else if($page-&gt;menu &gt; 0) { Menu::display($page-&gt;menu, '', '', '', '', ''); } Gruss Kay

Stefan Wienströer schrieb am 14.08.2009:

hab ich das ganz vergessen? Na dann werd ich das demnächst nochmal einbauen und veröffentlichen