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

Seite löschen

Code & Blog Logo

Code & Blog Logo

In unserem CMS geht es heute um das Löschen von Seiten. Ihr solltet also beim Testen sehr darauf achten, dass ihr nicht eure bereits erstellten Seiten löscht. Sichert sie am besten vorher.

Als erstes bauen wir in der Klasse page (Verzeichnis system/classes) die Methode delete ein. Sollte kein Problem für euch sein ;-):

function delete(){
    global $dbpraefix;
    $res = mysql_query("DELETE FROM ".$dbpraefix."pages WHERE alias = '".$this->alias."'");
    return $res;
  }

Fehlt noch die Seite neue Seite zum Löschen. Wir verlinken bereits darauf, deswegen muss die Seite site-delete.php heißen und im Verzeichnis /admin/includes liegen.

Um das versehentliche Löschen zu vermeiden, müssen wir noch eine kleine Abfrage erstellen:

<?PHP
  $page = new Page();
  $page->loadProperties(mysql_real_escape_string($_GET['site']));
?>
<h1>Seite l&ouml;schen</h1>
<?PHP
  if(!$_GET['delete']){
?>
  <p>Soll die Seite <strong><?PHP echo $page->title; ?></strong> 
     unwideruflich gel&ouml;scht werden?</p>
  <a href="/admin/?page=sites">Abbrechen</a>
  <a href="/admin/?page=site-delete&site=<?PHP echo $_GET['site']; ?>&delete=true">
    Seite l&ouml;sche
  </a>
<?PHP
  }
  else{
    if($page->delete()){
      ?>
        <p>Die Seite <strong><?PHP echo $page->title; ?></strong> 
           wurde gel&ouml;scht!</p>
      <?PHP
    }
  }
?>

Kleiner Performance Tipp zwischendurch: Wie ihr seht hab ich in der If-Abfrage erst geprüft ob $_GET[‚delete‘] nicht vorhanden ist. Da dies häufiger der Fall sein wird, als dass sie vorhanden ist, steht sie an erster stelle. So muss der else-Block nicht ganz so oft ausgeführt werden. Macht aber mehr Sinn, bei mehreren else ifs.

Kommentare

Daniel Busch schrieb am 28.08.2009:

Hmm. Wenn ich das Thema nicht auf Twitter hätte würde ich den Beitrag nicht sehen. Aus welchen Gründen auch immer steht er nicht unter Code &amp; Blog, oder ich habe die Blätterfunktion übersehen? MfG Daniel

Stefan Wienströer schrieb am 28.08.2009:

Sry, hab vergessen ihn auf die Seite zu schreiben (passiert ja manuel^^). Werds nun nachholen.

Kay schrieb am 10.09.2009:

Servus, nach langer Zeit mal wieder ich. ;) <a href="/admin/?page=sites" rel="nofollow">Abbrechen</a> &lt;a href=&quot;/admin/?page=site-delete&amp;site= Da hat sich entweder der Fehlerteufel eingeschlichen oder das TipEx wurde verschüttet, auf jeden fall sollte man bei beiden hrefs das index.php nicht vergessen. PHP ist da nen bissl nörglig. ^^ In diesem Sinne lese ich dann mal weiter. Muss ja noch nen bissl nachholen. Gruss Kay

Stefan Wienströer schrieb am 10.09.2009:

Hi, schön dich mal wieder zu hören ;-) Das index.php hab ich eigentlich absichtlicht weggelassen, damit die Urls kürzer sind. In wie weit gibt's da Probleme?

Kay schrieb am 11.09.2009:

Wie ich gerade feststelle keines. Wieder was gelernt. ^^ Bin halt gewöhnt immer schön alles zu schreiben und war mir daher sicher, das das weglassen einen Fehler verursacht. Also nix für ungut. Beim nächsten Mal werde ich erst probieren und dann schreien. ;)

Johannes schrieb am 19.12.2009:

Hallo, wenn man eine Seite löscht, wird sie nur aus der DB entfernt. wäre es nicht besser, wenn sie auch von der Festplatte des Servers verschwände? PS: Das /r/n hinzufügen, dass schon früher erwähnt wurde kommt bei mir auch. Ich habe allerdings keinen Editor eingebaut.

Stefan Wienströer schrieb am 19.12.2009:

Das Problem wurde bereits in einen neueren Artikel behoben ;-)