Anzeige
Tutorialbeschreibung

PHP - Teil 23 - PHP & MySQL (3)

PHP - Teil 23 - PHP & MySQL (3)

Datensätze aus Datenbanken auszulesen, ist natürlich nur ein Aspekt, der euch bei der Arbeit mit MySQL-Datenbanken begegnen wird. Oftmals will man aber auch neue Datensätze in Datenbanken mittels PHP einfügen. Wie das geht, wird in diesem Video-Training gezeigt. Außerdem erfahrt ihr, wie sich vorhandene Datensätze anpassen und nicht mehr benötigte Datensätze löschen lassen. Und das natürlich nicht per phpMyAdmin, sondern direkt mittels PHP-Skript.

... übrigens findest du die komplette Serie hier: PHP-Workshop-DVD - Basics & Tricks - Schnapp sie dir in unserem Shop oder in der Kreativ-Flatrate!


Die Eingabe von Datensätzen über phpMyAdmin reicht für viele Anwendungen nicht aus, da man hier manuell in die Datenbank eingreifen müsste. Will man z. B. ein PHP-basiertes Gästebuch programmieren, müssen die Daten direkt aus einem HTML-Formular in die Datenbank eingetragen werden. Dazu braucht ihr ein Formular, in dem die Daten eingegeben und die entsprechenden Variablen an ein Skript übergegeben werden. Dieses Skript gibt die Werte der Variablen wiederum an die Datenbank weiter und trägt diese dort vollautomatisch ein.

Das folgende Beispiel zeigt, wie ein solches Formular aussehen kann und welche Besonderheiten beim Erzeugen von Datensätzen berücksichtigt werden müssen. Zunächst das eigentliche Formular:

<h2>Eure Vorschläge:</h2>
<form method="post">
  Thema:
  <input type="text" name="thema" />
  <br />
  <br />
  Beschreibung:
  <input type="text" name="beschreibung" />
  <br />
  <br />
  <input type="submit" value="Absenden" />
</form>

 
Im Browser sieht das folgendermaßen aus:

Bilder



Im einleitenden form-Element wird über das method-Attribut die Übertragungsmethode angegeben, mit der die Formulardaten übermittelt werden sollen. Die Daten werden dabei mittels post an die aufrufende Datei geschickt. Die Variablen ergeben sich aus den Werten der Eingabefelder und deren Namen. Die Variablennamen werden hierbei über das name-Attribut der input-Felder definiert. Die Variablennamen müssen dabei nicht mit den Feldnamen der Datenbanktabelle übereinstimmen.

Aus Gründen der Übersichtlichkeit ist es allerdings empfehlenswert, dass die gleichen Namen verwendet werden. Durch Anklicken des Formularbuttons wird der Skriptbereich der Seite aufgerufen. Dessen Inhalt stellt sich folgendermaßen dar: (Wobei sich dieser Code im oberen Bereich der aufrufenden Datei befindet, also noch oberhalb der Doctype-Anweisung. Es wird also dieselbe Datei aufgerufen, in der auch das Formular definiert wurde. Seht euch zum besseren Verständnis dieses Aspekts auch die zu diesem Tutorial mitgelieferten Arbeitsdateien an).

<?php 
include ('include.php');
if(isset($_POST['thema']) and isset($_POST['beschreibung'])){
$sql = "INSERT INTO tutorials (thema, beschreibung) VALUES ('".$_POST['thema']."', '".$_POST['beschreibung']."')";     
$result = mysql_query($sql);
die("Daten in die Datenbank erfolgreich eingetragen!"); }
?>

Hinter dem Befehl INSERT INTO wird der Name der Datenbanktabelle notiert, in welche die Daten eingetragen werden sollen. In Klammern folgen, durch Kommata getrennt, die Feldnamen der Tabelle. Hinter VALUES werden die Werte, die in die Tabellenfelder eingefügt werden sollen, ebenfalls durch Kommata getrennt, notiert. Hierbei handelt es sich um die von dem Formular übergebenen Werte. Um also beispielsweise das Datenbankfeld thema mit einem Wert zu füllen, wurde innerhalb des Formulars ein input-Feld mit dem name-Attribut thema notiert. Dessen Wert wird im Skriptbereich über $_POST['thema'] ausgelesen und in die Datenbank eingetragen. Genauso funktioniert das dann auch mit dem Feld beschreibung.

Um die Werte tatsächlich einzufügen, wird wieder die mysql_query()-Funktion verwendet.

Einen Sonderfall stellen IDs dar. Wurde in einer Tabelle ein ID-Feld angelegt, wird bei jedem neuen Datensatz die ID automatisch um den Wert 1 erhöht. Das ID-Feld darf somit nicht beim Befehl INSERT INTO mit angegeben werden. (Wobei das nur gilt, wenn das ID-Feld tatsächlich als Autoinkrement-Feld gekennzeichnet wurde).

Bilder



 
Die folgende Abbildung zeigt, dass der Datensatz eingefügt wurde:

Bilder



 

Vorhandene Datensätze verändern

Nachdem zuvor Datensätze in die Datenbank eingefügt wurden, geht es nun darum, wie man vorhandene Datensätze anpassen kann. Um Datensätze zu ändern, wird der Befehl UPDATE verwendet. In dem Formular, über das die Datensätze angepasst werden sollen, befinden sich zwei Eingabefelder, in welche Thema und Beschreibung eingetragen werden, die verändert werden sollen.

<h2>Eure Änderungen:</h2>
<form method="post">
  Thema:
  <input type="text" name="thema" />
  <br />
  <br />
  Beschreibung:
  <input type="text" name="beschreibung" />
   <br />
  <br />
  <input type="submit" value="Absenden" />
</form>

Das Formular sieht folgendermaßen aus:

Bilder



 
Ins Feld thema wird der Wert der Spalte thema eingetragen. Dieser kann geändert werden. Gleiches gilt für die Spalte beschreibung. Auch hierfür gibt es ein eigenes Formularfeld. Durch Anklicken des Formularbuttons wird folgender Skriptbereich aufgerufen. (Dieser befindet sich wieder innerhalb derselben Seiten, in der auch die Formularelemente definiert wurden).

<?php 
 if(isset($_POST['thema']) and isset($_POST['beschreibung'])){
 include ('include.php');
 $thema = $_POST['thema'];
 $beschreibung = $_POST['beschreibung'];
 $sql = "UPDATE tutorials SET thema = '$thema', beschreibung = '$beschreibung' WHERE id = 1"; 
 $result = mysql_query($sql);
 die("Daten eingetragen"); }
?> 

Hinter UPDATE folgt der Spaltenname; in diesem Fall ist das tutorials. Hieran schließen sich das Schlüsselwort SET, die Namen der zu ändernden Felder und deren Werte an. Über WHERE wird der zu ändernde Datensatz bestimmt. Im aktuellen Beispiel wurde die ID statisch angegeben. Das könnt ihr natürlich dynamisch gestalten, indem ihr einfach ein zusätzliches Textfeld anlegt, in das ihr die ID eintragt. Ebenso wäre aber beispielsweise auch ein Auswahlfeld möglich, in dem alle IDs automatisch aufgelistet sind und die gewünschte ID dann nur noch ausgewählt werden muss.


 

So werden Datensätze gelöscht

Ebenso einfach, wie sich Datensätze in die Datenbank einfügen und verändern lassen, können sie auch wieder gelöscht werden. Die Funktionsweisen sind identisch. Auch hier wird ein Formular sowie ein Skript benötigt. Im folgenden Beispiel kann die ID eines Datensatzes in ein Eingabefeld eingetragen werden.

Bilder



 
Diese ID wird an ein Skript gesendet und dort dazu verwendet, den Datensatz, zu dem diese ID gehört, aus der Datenbank zu löschen. Zunächst wieder der Inhalt des Formulars.

<h2>Eure Änderungen:</h2>
 <form method="post">
   Was soll gelöscht werden?:
   <input type="text" name="id" />
    <br />
   <br />
   <input type="submit" value="Löschen" />
</form>

An das Skript wird die ID des zu löschenden Datensatzes übergeben. Da jede ID eindeutig ist, ist sichergestellt, dass tatsächlich nur ein Datensatz gelöscht wird.

<?php 
 include ('include.php');
 if(isset($_POST['id'])){
 $id = $_POST['id'];
 $sql = "DELETE FROM tutorials WHERE id = $id"; 
 $result = mysql_query($sql);
 die("Daten gelöscht"); }
?>

 
Hinter DELETE FROM wird der Spaltenname angegeben. Über WHERE wird bestimmt, welcher bzw. welche Datensätze gelöscht werden sollen. Ihr solltet mit dem DELETE-Befehl behutsam umgehen und stets darauf achten, dass über WHERE die richtigen Bedingungen angegeben werden. Nur so könnt ihr das Risiko des versehentlichen Löschens von Datensätzen mindern. Denn rückgängig machen lässt sich das Löschen von Datensätzen nicht. Gelöscht ist also definitiv gelöscht.

Bilder



Fazit

Dieses Tutorial hat gezeigt, wie einfach sich die Daten, die in einer Datenbank hinterlegt sind, manipulieren und löschen lassen. Achtet in diesem Zusammenhang jedoch unbedingt darauf, die übergebenen Daten, die in die Datenbank geschrieben werden sollen, zu überprüfen. Zudem sollten natürlich nur Leute auf Lösch- und Änderungs-Skripte Zugriff haben, denen ihr vertraut, da ansonsten natürlich jeder eure Datenbank verändern oder löschen kann.

Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von franzg
  • 14.05.2017 - 01:55

Sehr ausführliches Tutorial. Danke!

Portrait von dmtw2107
  • 16.11.2013 - 09:47

verständlich und toll erklärt danke für das tutorial

Portrait von rufinus
  • 16.09.2011 - 16:23

Auch wenn das extrem lowlevel ist, nur ein hinweis das man die daten überprüfen sollten und im beispiel code dann direkt ohne umschweife _POST daten verwenden ist grob fahrlässig.

Portrait von Maximus73
  • 14.11.2011 - 13:01

Na das Denke ich auch, vielleicht sollte es noch einem überarbeitet werden.

x
×
×