Aktuelles
Startseite
TP Wettbewerbe
Sitemap
Service
Hilfe-Forum
Kolumnen
Linktipps
Buchrezensionen
Traum-Team
Newsletter
Traumquelle
Dreamweaver
Fireworks
Photoshop
Flash
Traum-Start
gimp
GoLive
php / Apache
Sonstige
Grundlagen
Usability
CSS
Apple / Mac
3D
Intern
TP-Sponsor
TP SHOP
Bild Galerie
TP Wallpapers
Forum-Archiv
Link zu uns
Impressum
Zurück  
TP Portal > php / Apache > Newssystem mit PHP und mySQL (Teil IV - bearbeiten und löschen der News)

Newssystem mit PHP und mySQL (Teil IV - bearbeiten und löschen der News)

Dieser Kurs ist eine Einführung in PHP und mySQL. Die nötigen Grundlagen werden anhand der Planung und Umsetzung eines Newssystem besprochen. So lernt man das nötige Handwerkszeug, um zukünftig eigene Projekte umzusetzen.

In diesem Teil

Im dem vierten Teil dieses Kurses geht es um das Bearbeiten der News und um das gezielte Löschen einzelner Nachrichten.

Ergänzungen zum letzen Teil

Im letzten Teil wurde besprochen, wie man die Nachrichten ausgeben kann. Hierzu wurden die Dateien hp_ausgabe.inc.php und hp_teilausgabe.inc.php angelegt. In beiden Dateien sollte noch eine weitere Zeile eingefügt werden. Vor das letzte ?> trägt man jeweils ein mysql_close($mysql_conn); // DB schließen ein.

Codebox 4.1 :: Ergänzungen
mysql_close($mysql_conn); // DB schließen
?>

Mittels dieser mySQL-Anweisung wird die Verbindung zur Datenbank, wie schon in Teil 1 dieses Kurses besprochen, geschlossen. Es ist bei diesem kleinen Script zwar nicht zwingend notwendig dieses zu tun, da die Verbindung nach einiger Zeit von selbst geschlossen wird. Wenn der mySQL-Server aber eine Vielzahl von Anfragen zu beantworten hat, entlastet das schnelle schließen der Verbindung den Server und steigert die Geschwindigkeit. Nicht zuletzt ist es auch einfach der bessere Programmierstil.

Neue Optionen für die Auswahl

Das wichtigste dürfte erst einmal sein, die neuen Funktionen (löschen und bearbeiten) auch in der Auswahl des Adminmenu bereit zustellen. Dafür modifiziert man die schon vorhandene Datei inc/admin_choise.inc.php. Unter dem vorhandenen Formularen werden noch zwei weitere eingefügt.

Codebox 4.2 :: inc/admin_choise.inc.php
<fieldset>
<legend>Auswahl</legend>
<form name="choise1" id="choise1" method="post" action="<? echo $PHP_SELF; ?>">
  <input name="strAction" type="hidden" value="new" />
  <label for="strAction" class="left">Neue Nachricht anlegen:</label>
  <input type="submit" name="Submit" value="Go!" class="button" />
</form>
<!-- Änderungen START -->
<form name="choise2" id="choise2" method="post" action="<? echo $PHP_SELF; ?>">
  <input name="strAction" type="hidden" value="edit" />
  <label for="strAction" class="left">Nachricht bearbeiten:</label>
  <input type="submit" name="Submit" value="Go!" class="button" />
</form>
<form name="choise3" id="choise3" method="post" action="<? echo $PHP_SELF; ?>">
  <input name="strAction" type="hidden" value="del" />
  <label for="strAction" class="left">Nachricht löschen:</label>
  <input type="submit" name="Submit" value="Go!" class="button" />
</form>
<!-- Änderungen ENDE -->
</fieldset>

Die Funktion sollte sich aus den vorherigen Teilen erschließen. Die Formulare werden zur getrennten Formatierbarkeit durchnumeriert.

Modifikationen an tpadmin/index.php

Die neuen Formulare in inc/admin_choise.inc.php übergeben zwei neue Werte für die Variable strAction. Diese sind edit für das Bearbeiten der Nachrichten und del für das Löschen. Damit für die entsprechenden Aktionen auch die richtigen include-Dateien aufgerufen werden, sind Modifikationen an der Datei tpadmin/index.php nötig. Hier wir der markierte Code eingefügt.

Codebox 4.2 :: admin_choise.inc.php
<?php
// HTML-Kopf einbinden
include ("../tpl/admin_header.inc.php");
// Einlesen der übergebenen Variablen
$strAction=$_POST["strAction"];
$intStep=$_POST["intStep"];
// ******** Neue Nachricht
if ($strAction=="new") {
    // eingeben
    if ($intStep=="") {
        include ("../inc/admin_newinput.inc.php");
    }
    // prüfen
    elseif ($intStep=="1") {
        include ("../inc/admin_newerror.inc.php");
    }
    // speichern
    elseif ($intStep=="2") {
        include ("../inc/admin_newsave.inc.php");
    }
}
// ++++++++++++++++++++++++++++ ÄNDERUNG START 
// ******** Nachricht bearbeiten
elseif ($strAction=="edit") {
    // auswählen
    if ($intStep=="") {
        include ("../inc/admin_editwhat.inc.php");
    }
    // prüfen
    elseif ($intStep=="1") {
        include ("../inc/admin_editform.inc.php");
    }
    // prüfen
    elseif ($intStep=="2") {
        include ("../inc/admin_editerror.inc.php");
    }
    // speichern
    elseif ($intStep=="3") {
        include ("../inc/admin_editsave.inc.php");
    }
}
// ******** Nachricht löschen
elseif ($strAction=="del") {
    // auswählen
    if ($intStep=="") {
        include ("../inc/admin_delwhat.inc.php");
    }
    // prüfen
    elseif ($intStep=="1") {
        include ("../inc/admin_delsave.inc.php");
    }
}
// ++++++++++++++++++++++++++++ ÄNDERUNG ENDE
// ******** Auswahlmenu
else {
    include ("../inc/admin_choise.inc.php");
}
// HTML-Fuss einbinden 
include ("../tpl/admin_footer.inc.php");
?>

Auch hier trifft man auf keine Neuigkeiten. Kurz erklärt werden soll an dieser Stelle aber der Ablauf der neuen Funktionen. Beim Bearbeiten wird zunächst eine Liste mit allen Nachrichten dargestellt, aus der man die zu bearbeitende Nachricht aussuchen kann. In einem zweiten Schritt wird dann ein Formular angezeigt, welches die Daten bearbeitbar darstellt. Der nächste Schritt prüft dann, wie beim Anlegen einer neuen Nachricht, ob alle notwendigen Felder gefüllt sind. Im letzten Schritt wird die geänderte Nachricht dann gespeichert.

Das Löschen einer Nachricht startet ähnlich. Hier wird wieder eine Liste erstellt, aus der die zu löschenden Nachricht ausgewählt werden kann. Es folgt ein zweiter Schritt, die die Nachricht dann löscht.

Zunächst aber zurück zu Bearbeiten von Nachrichten.

Schritt 1 - Liste erstellen

Als erste neue Datei für diesen Teil erstellen man eine Datei mit dem Namen admin_editwhat.inc.php im Ordner inc. In der folgenden Codebox ist der Inhalt zu sehen.

Codebox 4.3 :: admin_editwhat.inc.php
<fieldset>
<legend>Nachricht zum bearbeiten auswählen</legend>
<?
include ("../inc/opendb.inc.php"); // DB öffen
$q_select="SELECT * FROM tp_news ORDER BY startdatum DESC, startzeit DESC ";
$r_select=mysql_query($q_select);
while ($arrData=mysql_fetch_array($r_select, MYSQL_ASSOC))
{
?>
    <b><? echo $arrData[titel]; ?></b> von <? echo $arrData[autor]; ?> am <? echo $arrData[startdatum]; ?> um <? echo $arrData[startzeit]; ?> 
<form name="choise<? echo $arrData[id]; ?>" id="choise<? echo $arrData[id]; ?>" method="post" action="<? echo $PHP_SELF; ?>">
        <input name="intStep" type="hidden" value="1" />
          <input name="strAction" type="hidden" value="edit" />
        <input name="intItem" type="hidden" value="<? echo $arrData[id]; ?>" />
        <label for="strAction" class="left">Nachricht mit ID <? echo $arrData[id]; ?>:</label>
        <input type="submit" name="Submit" value="bearbeiten!" class="button" />
</form>
<?
}
mysql_close($mysql_conn); // DB schließen
?>
</fieldset>

Zunächst wird wieder die Datei zum öffnen der Datenbankverbindung mit include ("../inc/opendb.inc.php"); eingebunden. Als nächstes wird ein SQL-Select-Statment zusammengestellt. Dieses ließt alle Datensätze aus der Tabelle tp_news ein und gibt sie geordnet nach Startdatum und Startzeit aus. SELECT id, autor, startdatum, startzeit, titel FROM tp_news ORDER BY startdatum DESC, startzeit DESC. Hierbei werden "nur" die Spalten id, autor, startdatum, startzeit, titel ausgelesen, nicht aber die Spalte, in der der Nachrichtentext steht. Dieses führt zu einer schnelleren Ausgabe. Generell sollte man sich merken, immer nur die Daten auszulesen, die man später auch braucht. Über die Zeile $r_select=mysql_query($q_select); wird das SELECT verarbeitet und das Ergebnis in $r_selectgespeichert.

Die nächste Zeile startet eine while-Schleife, die alle Datensätze abarbeitet. Man erstellt so eine Übersicht über alle Nachrichten die man zuvor angelegt hat. Aus jedem Datensatz wird ein Formular generiert welches erlaubt diesen per Klick zur Bearbeitung auszuwählen. Die Funktion des Formulars ist wieder gleich zu den schon bearbeiteten. Es wird hier versteckt die ID des Datensatzes übergeben. Nur so kann man in nächsten Schritt diesen wieder ausrufen. Zusätzlich wird wieder die Aktion "edit" und der nächste Schritt "1" übergeben. Die Form der Anzeige kann beliebig gewählt werden. In diesem Beispiel wird davon ausgegangen, das man über den Titel, den Autor und das Datum jede Nachricht identifizierten kann.

Als letzter Schritt wird die Verbindung zur Datenbank über mysql_close($mysql_conn); geschlossen.

Schritt 2 - Bearbeiten

Von der eben erstellten Liste der Datensätze gelangt man zum Formular für das Nachträgliche bearbeiten der Nachrichten. Die zu erstellende Datei heißt admin_editform.inc.php. Ziel ist es die Daten einzulesen, anzuzeigen und eine Veränderung zu zulassen.

Codebox 4.4 :: admin_editform.inc.php
<?
include ("../inc/opendb.inc.php"); // DB öffen
// Auslesen der News
$intId=$_POST['intItem'];
$q_select="SELECT * FROM tp_news WHERE id=$intId";
$r_select=mysql_query($q_select);
while ($arrData=mysql_fetch_array($r_select, MYSQL_ASSOC))
{
    // Datum zusammenstellen
    $intDatePart=explode("-", $arrData[startdatum]);
    $strDatum=$intDatePart[2].".".$intDatePart[1].".".$intDatePart[0]." ".$strAusgabe[startzeit];
    // br aus der Nachricht entfernen
    $strNews=preg_replace("=<br(>|([\s/][^>]*)>)\r?\n?=i", "\n", $arrData[nachricht]);
    ?>
<fieldset>
    <legend>Nachricht bearbeiten</legend>
    <form name="input1" id="input1" method="post" action="<? echo($PHP_SELF) ?>">
      <input name="intStep" type="hidden" value="2" />
      <input name="strAction" type="hidden" value="edit" />
      <input name="intItem" type="hidden" value="<? echo $arrData[id]; ?>" />
      <label for="strTitel" class="left">Titel:</label>
      <input type="text" name="strTitel" align="right" value="<? echo $arrData[titel]; ?>"/>
      <br />
      <label for="strNews" class="left">Nachricht:</label>
      <textarea name="strNews" cols="30" rows="10" align="right" ><? echo $strNews; ?></textarea>
      <br />
      <label for="strDate" class="left">Startdatum:</label>
      <input name="strDate" type="text" size="10" maxlength="10"  align="right" value="<? echo $strDatum; ?>" />
      (TT.MM.YYYY)<br>
      <label for="strTime" class="left">Startzeit:</label>
      <input name="strTime" type="text" size="10" maxlength="5"  align="right" value="<? echo $arrData[startzeit]; ?>" />
      (HH:MM)<br>
      <label for="strAuthor" class="left">Autor:</label>
      <input name="strAuthor" type="text" align="right" value="<? echo $arrData[autor]; ?>" />
      <br />
      <br />
      <label for="" class="left"></label>
      <input type="submit" name="Submit" value="Abschicken" class="button" />
    </form>
</fieldset>
<?
}
mysql_close($mysql_conn); // DB schließen
?>

Prinzipiell wiederholt sich der Aufbau der vorherigen Datei. Zunächst wird die verbindung zur Datenbank hergestellt (include). Dann kommt hinzu, dass die per POST übergebene Variable intItem ausgelesen und in $intId gespeichert wird. $intId=$_POST['intItem']; Das nachfolgede SELECT und ruft jetzt alle Spalten zu dem Datensatz mit der gewählten ID aus.

Die Daten werden in dem Array $arrData gespeichert. Was folgt sind Wiederholungen aus dem zweiten Teil. Zunächst wird aus dem mySQL-Datum unser gewünschtes Format gemacht. Dann werden aus dem Nachrichtentext die Umbrüche entfernt. Auf die hinter preg_replace stehenden Regular Expression wird auch hier nicht genauer eingegangen. Zurzeit seit auf das Forum verwiesen, in dem es einige gute Erklärungen hierzu gibt. Im diesem Kurs später wohl mehr davon.

Als nächstes wird das von der Eingabe der News schon bekannte Formular ausgegeben, wobei die einzelnen Felder mittels value="<? echo $arrData[id]; ?>" mit den Daten aus der Datenbank gefüllt werden. (Hier die ID des Eintrages.). Hier also auch nichts wirklich neues.

Schritt 3 - Überprüfen

Die Datei admin_editerror.inc.php ist prinzipiell eine 1:1 Kopie der Datei admin_newerror.inc.php

Codebox 4.5 :: admin_editerror.inc.php
<?
// einlesen von Post´s
$strTitel=htmlentities($_POST['strTitel']);
// nächste Zeile neu ++++++++++++++++++++++++++++++++++
$strNews=preg_replace('#<br />#','' , $_POST['strNews']);
$strNews=nl2br(htmlentities($strNews));
$strDate=htmlentities($_POST['strDate']);
$strTime=htmlentities($_POST['strTime']);
$strAuthor=htmlentities($_POST['strAuthor']);
// nächste Zeile neu ++++++++++++++++++++++++++++++++++
$intItem=$_POST['intItem'];
// error auf 0
$intError=0; ?>
<fieldset>
<legend>bearbeitete Nachricht überprüfen</legend>
<form name="input1" id="input1" method="post" action="<? echo($PHP_SELF) ?>">
<label for="strTitel" class="left">Titel:</label>
<? if ($strTitel!="") {
    echo $strTitel;
    ?><input name="strTitel" type="hidden" value="<? echo $strTitel; ?>" /><? 
}
else {
    $intError=1;
    ?><input type="text" name="strTitel" align="right" style="background: #ff0000;" /><? 
} ?>
<br />
<label for="strNews" class="left">Nachricht:</label>
<? if ($strNews!="") {
    echo "<br /><br />".$strNews;
    ?><input name="strNews" type="hidden" value="<? echo $strNews; ?>" /><? 
}
else {
    $intError=1;
    ?><textarea name="strNews" cols="30" rows="10" align="right" style="background: #ff0000;"></textarea><? 
} ?>
<br />
<label for="strDate" class="left">Startdatum:</label>
<? if ($strDate=="") { 
    $strDate=date('d.m.Y'); 
    $intError=1 
    ?><input name="strDate" type="text" size="10" maxlength="10"  align="right" value="<? echo $strDate; ?>" style="background: #ff0000;" /><?
}
else {
    $intDatePart=explode(".", $strDate);
    if (checkdate($intDatePart[1], $intDatePart[0], $intDatePart[2])) {
          echo ($strDate);
        ?><input name="strDate" type="hidden" value="<? echo $strDate; ?>" /><?
      }
      else {
          ?><input name="strDate" type="text" size="10" maxlength="10"  align="right" value="<? echo date('d.m.Y'); ?>" style="background: #ff0000;" /><? 
        $intError=1; 
      }
} ?>
(MM.DD.YYYY)<br>
<label for="strTime" class="left">Startzeit:</label>
<? 
if ($strTime=="") { 
    $strTime=date('H:i'); 
    $intError=1 
    ?><input name="strTime" type="text" size="10" maxlength="10"  align="right" value="<? echo $strTime; ?>" style="background: #ff0000;" /><?
}
else {
    $intTimePart=explode(":", $strTime);
    if (($intTimePart[0]<=23) AND ($intTimePart[0]>=0) AND ($intTimePart[1]>=0) AND ($intTimePart[1]<=59)) {
          echo $strTime;
        ?><input name="strTime" type="hidden" value="<? echo $strTime; ?>" /><?
      }
      else {
          ?><input name="strTime" type="text" size="10" maxlength="10"  align="right" value="<? echo date('H:i'); ?>" style="background: #ff0000;" /><?
      }
} ?>
(HH:MM)<br>
<label for="strAuthor" class="left">Autor:</label>
<? 
if ($strAuthor!="") {
    echo $strAuthor;
    ?><input name="strAuthor" type="hidden" value="<? echo $strAuthor; ?>" /><?
}
else {
    $intError=1;
    ?><input type="text" name="strAuthor" align="right" style="background: #ff0000;" /><? 
}
?>
<br /><br />
<label for="" class="left"></label>
<!-- ++++++++++++++++++++++++++++++++++ nächste Zeile neu +++++++++++++ -->
<input name="intItem" type="hidden" value="<? echo $intItem; ?>" />
<? if ($intError==1) { ?>
    <input name="intStep" type="hidden" value="2" />
<? } 
else { ?>
    <input name="intStep" type="hidden" value="3" />
<? } ?>
    <input name="strAction" type="hidden" value="edit" />
<? if ($intError==1) { ?>
    <input type="submit" name="Submit" value="Berichtigen" class="button" />
<? } 
else { ?>
    <input type="submit" name="Submit" value="Speichern" class="button" />
<? } ?>
</form>
</fieldset>

Da es aber wichtig ist, die ID des zu bearbeitenden Nachricht mitzunehmen werden zwei Zeilen eingefügt. Zum einen wird weit oben über $intItem=$_POST['intItem']; die ID aus den POST ausgelesen und am Ende der Datei mittels verstecktem Inputfeld (<input name="intItem" type="hidden" value="<? echo $intItem; ?>" />) weitergegeben.

Schritt 4 - Speichern

Typisch für diesen Kursteil: auch die nächste Datei bringt nicht viel neues. admin_editsave.inc.php basiert auch der Datei admin_newsave.inc.php. Hier der Inhalt.

Codebox 4.6 :: admin_editsave.inc.php
<?
// einlesen von Post´s
$strTitel=htmlentities($_POST['strTitel']);
$strNews=preg_replace('#<br />#','' , $_POST['strNews']);
$strNews=nl2br(htmlentities($strNews));
$strDate=htmlentities($_POST['strDate']);
$strTime=htmlentities($_POST['strTime']);
$strAuthor=htmlentities($_POST['strAuthor']);
$intItem=$_POST['intItem'];
include ("../inc/opendb.inc.php"); // DB öffen
// Zeiten umrechnen so das Sie ins mySQL Format passen.
$strTime=$_POST['strTime']; // aus POST
$strTime.=":00"; // Sekunden an Zeit anhängen
$intDatePart=explode(".", $_POST['strDate']);
$strMysqlDate="$intDatePart[2]-$intDatePart[1]-$intDatePart[0]"; // Datum umformatieren
$q_update="UPDATE tp_news SET titel='$strTitel' ,nachricht='$strNews' ,startdatum='$strMysqlDate' ,startzeit='$strTime' ,autor='$strAuthor' WHERE id='$intItem'";
$r_update=mysql_query($q_update);
if ($r_update==TRUE) { // alles ok
    mysql_close($mysql_conn); // DB schließen
    ?>
<fieldset>
    <legend>bearbeitete Nachricht gespeichert</legend>
    <form name="choise1" id="choise1" method="post" action="<? echo($PHP_SELF) ?>">
      <input name="strAction" type="hidden" value="" />
      <label for="strAction" class="left">Zurück zur Auswahl</label>
      <input type="submit" name="Submit" value="Go!" class="button" />
    </form>
</fieldset>
    <?
}
else {
    echo "Fehler beim Speichern der Daten! Fehlermeldung: <br /><br />".mysql_error();
    die;
}
?>

Neu ist hier das SQL-Statement UPDATE (UPDATE tp_news SET titel='$strTitel' ,nachricht='$strNews' ,startdatum='$strMysqlDate' ,startzeit='$strTime' ,autor='$strAuthor' WHERE id='$intItem'";). Update wurde an sich schon im ersten Teil besprochen. Hier eine kurze Auffrischung. Die Tabelle tp_news wird erneuert. Die Zelle mit dem Namen Titel wird durch den Inhalt $strTitel ersetzt. Gleiches gilt für die anderen angegebenen Spaltennamen. Die Einschränkung kommt dannach: WHERE. Also nur dort wo ID gleich unserer übergebenen Variable $intItem ist. Dieses Statment wird dann mittels $r_update=mysql_query($q_update); an die Datenbank gesendet und bei Erfolg (if ($r_update==TRUE) { ) der Button zum Hauptmenu ausgegeben.

Man sieht, das das Bearbeiten von Nachrichten nicht viel anderes ist, als das Anlegen von neuen Nachrichten. Wichtig ist, das man die entsprechende Nachricht jederzeit über die ID identifizieren kann. Noch einfacher ist das beim Löschen.

Löschen in 2 Schritten

Prinzipiell muss man beim Löschen nur die Nachricht auswählen und diese in einem zweiten Schritt löschen. Das Auswählen wurde in diesem Teil schon erklärt. Daher ist die Datei admin_delwhat.inc.php auch eine Kopie von admin_editwhat.inc.php. Einzig die Action ist anders.

Codebox 4.7 :: admin_delwhat.inc.php
<fieldset>
<legend>Nachricht zum löschen auswählen</legend>
<?
include ("../inc/opendb.inc.php"); // DB öffen
$q_select="SELECT * FROM tp_news ORDER BY startdatum DESC, startzeit DESC ";
$r_select=mysql_query($q_select);
while ($arrData=mysql_fetch_array($r_select, MYSQL_ASSOC))
{
?>
    <b><? echo $arrData[titel]; ?></b> von <? echo $arrData[autor]; ?> am <? echo $arrData[startdatum]; ?> um <? echo $arrData[startzeit]; ?><br />
    <? echo $arrData[nachricht]; ?>
<form name="choise<? echo $arrData[id]; ?>" id="choise<? echo $arrData[id]; ?>" method="post" action="<? echo $PHP_SELF; ?>">
        <input name="intStep" type="hidden" value="1" />
          <input name="strAction" type="hidden" value="del" />
        <input name="intItem" type="hidden" value="<? echo $arrData[id]; ?>" />
        <label for="strAction" class="left">Nachricht mit ID <? echo $arrData[id]; ?>:</label>
        <input type="submit" name="Submit" value="ohne Nachfrage löschen!" class="button" />
</form>
<?
}
mysql_close($mysql_conn); // DB schließen
?>
</fieldset>

Der nächste Schritt ruft die Datei admin_delsave.inc.php auf. Wobei save für die Aktion löschen unglücklich ist, man aber hier bei der schon angewendeten Benennung der Dateien bleibt.

Codebox 4.8 :: admin_delsave.inc.php
<?
// einlesen von Post´s
$intItem=$_POST['intItem'];
include ("../inc/opendb.inc.php"); // DB öffen
$q_del="DELETE FROM tp_news WHERE id='$intItem'";
$r_del=mysql_query($q_del);
if ($r_del==TRUE) { // alles ok
    mysql_close($mysql_conn); // DB schließen
    ?>
<fieldset>
    <legend>Nachricht gelöscht</legend>
    <form name="choise1" id="choise1" method="post" action="<? echo($PHP_SELF) ?>">
      <input name="strAction" type="hidden" value="" />
      <label for="strAction" class="left">Zurück zur Auswahl</label>
      <input type="submit" name="Submit" value="Go!" class="button" />
    </form>
</fieldset>
    <?
}
else {
    echo "Fehler beim Speichern der Daten! Fehlermeldung: <br /><br />".mysql_error();
    die;
}
?>

Zunächst wird wieder die ID aus den POST ausgelesen. $intItem=$_POST['intItem']; Das löschen ist ein einfaches SQL-Statment mit folgender Syntax: $q_del="DELETE FROM tp_news WHERE id='$intItem'";. Also übersetzt: "lösche von TABELLENNAME wo ID gleich übergebene ID". Was man erkennt ist, dass man immer nur eine (bzw. mehrere) komplette Zeile(n) löschen kann. Ich könnte beispielsweise auch als Argument WHERE id>0 ist angeben und würde damit alle Nachrichten löschen. Ich kann mit DELETE keine einzelne Zelle löschen. Also beispielsweise aus titel="blabla" zu titel="" machen. Dieses muss über UPDATE passieren. Über $r_del=mysql_query($q_del); wird das Statement an die Datenbank übergeben und man bei Erfolg ins Hauptmenu geleitet.

Ausblick

Die absoluten Grundfunktionen des Skript hat man jetzt zusammen. Die Programmierweise, die hier besprochen wurde legt viele Dateien an und wie man in diesem Teil gesehen hat werden damit viele Codezeilen wiederholt. Ab einer gewissen größe eines Projektes ist das umständlich und vor allen unübersichtlich. Im nächsten Teil wird dieses Skript umgeschrieben auf eine komprimiertere Programmierweise. Dazu werden Funktionen eingeführt.

Daneben soll das Skript aber auch weiter ausgebaut werden. Ich als Autor weiß aber noch nicht genau in welche Richtung das gehen soll. Ich bitte jeden interessierten Leser daher mir im Forum oder unter tp@lauff.info Vorschläge zu mitzuteilen, welche Funktionalitäten eingebaut werden sollten. Die Top X der Wünsche werden dann umgesetzt.

Ich schickt jetzt schon voraus, dass der nächste Teil auch nicht in sehr kurzer Zeit erscheinen wird. Dafür bringt er dann viel neues. An dieser Stelle nochmals der Hinweis, das begleitend die Dateien unter lauff.info/tp_php1.php heruntergeladen werden können.

Befehlsliste

An dieser Stelle werden die, in dem jeweiligen Teil neu besprochenen PHP und mySQL-Befehle aufgelistet. Die Befehle sind ggf. mit der entsprechenden Seite auf der offiziellen Dokumentation verlinkt.

PHP PHP mySQL
$variable @ INSERT
echo if / else / ifelse   SELECT
while die UPDATE
mysql_connect mysql_select_db WHERE
mysql_error() mysql_query CREATE TABLE  
mysql_fetch_array MYSQL_ASSOC   auto_increment  
// und /* */   include   NULL / NOT NULL
$_POST / $_GET   $PHP_SELF   UNIQUE KEY
date()   htmlentities()   PRIMARY KEY  
htmlspecialchars()   nl2br()   tinytext  
preg_replace()   explode()   longtext  
checkdate()   ereg_replace text  
foreach mysql_close() time  
  datetime  
    date  
    ORDER BY
    DESC
    LIMIT neu
    DELETE neu

Zum Autor

Sebastian Lauff ist Diplom-Ingenieur der Fachrichtung Architektur. Seit 1996 arbeitet er angestellt und frei im Bereich Web-Entwicklung. Weitere Informationen zu Ihm findet man unter dem URL lauff.info.

Anfragen und Anregungen zu diesem Kurs bitte unter tp@lauff.info.

Buchrezension

Coverimage
AJAX Hacks
Dynamische Webseiten mit AJAX programmieren - dieses Handbuch bietet einen praktischen Einblick.
[mehr]
Gimahhot - Shopping
TP-Partner
Sprachreise London
Webmasterpro
Computerhilfen
Computerhilfen
Eventagentur Hamburg
it-rechtsinfo.de
Designguide
Getreidemühlen
sk-typo3
Kochkurs Berlin
Maandiko.de
d. Webdesigner
PSD Tutorials
Medizin
Handy Forum

Hier könnte Ihre Werbung stehen

 >> INFO << 

\ Startseite | Forum | Impressum | nach oben | Seite zurück /