Hallo,
Heute lernen wir das Einfügen und Ausgeben von Datensätze einer Datenbank-Tabelle. Als praktisches Beispiel machen wir mit den 2 Befehlen ein Gästebuch. Wichtig ist die Verbindung zu dem Server und dessen Datenbank, da wir sonst nichts machen können. Achtung PHP Tutorial, KEIN PAWN!!
Wir legen eine Datei namens sql.php mit folgenden Inhalt an und speichern:
Wenn ihr jetzt das Skript im Browser aufführt, ist die Seite weiß ->> Funktioniert. Wenn nicht, gibt euch das Skript die Fehlermeldung aus!
Wir kommen zu der Datenbankstruktur, wir schreiben ein kleines Gästebuch, also benötigen wir folgende Felder:
- ID
- Autor
- Nachricht
- Datum
Hier der SQL - SYNTAX:
Erklärung der einzelnen Felder:
ID ist für die Ordnung der Postings zuständig, mit jedem neuen Eintrag in die Tabelle addiert sich die ID um 1.
author ist varchar(25), das heißt, dass maximal 25 Zeichen eingetragen werden.
message ist text, verbraucht mehr Speicher, hat jedoch keine Limitation an Zeichen, das selbe wie bei datum.
Primarykey ist auf ID, das heißt das ID gegen alle anderen Feleder ein "VIP" ist.
ENGINE=InnoDB ist für uns relativ, gibt nur an welche Datenbankengine auf dem MySQL - Server läuft.
DEFAULT CHARSET=latin1 gibt den Standardformatierung der Buchstaben an --> Deutsch z.B..
AUTO_INCREMENT=1 ist entscheidend aber welcher Zahl addiert wird!
So fertig mit der Datenbank, ab auf das Skripten, wir beschränken uns auf das wesentliche. Das Eintragen der Nachricht erfolgt über eine eigene .html Seite!
Für das Anzeigen der eingetragenen Nachrichten benötigen wir dieses Skript:
Name index.php
Alles anzeigen
Erklärung:
include 'sql.php'; - Wir inkludieren die sql.php mit den MySQL - Daten!
$query = "SELECT ID, author, message, datum FROM book"; - Hier geschiet die Zuweisung der Variable $query mit SQL Syntax:
---
- SELECT ID, author, message, datum = Auswählen der Datensätze: ID, author, message, datum.
- FROM book = Aus der Tabelle book.
---
$result = mysql_query($query); - Der Variable wird der Befehl mysql_query mit dem Inhalt der Variable $query "gefüttert".
while($row = mysql_fetch_object($result)) - Hier wird es Fortgeschrittener, da ich persönlich gerne mit $row arbeite, verwende ich diese Lösung von der While-Schleife.
---
- mysql_fetch_object($result) - Diese Funktion gibt die aktuelle Zeile eines Datensatzes retour - näheres bei $row!
---
echo 'Gepostet von: ' . $row->author .
'---Datum & Zeit: ' . $row->datum .
'<br/>'; = $row->author bewirkt, dass der Inhalt von dem Tabellenfeld author in der aktuellen Zeile von der While-Schleife per echo ausgegeben wird.
= Leerzeichen.
Der HTML Block ist ein Container(DIV) wo sich ein Link befindet, die eintragen.html schauen wir uns an:
Alles anzeigen
Die Sachen sind ausmeiner Sicht selbsterklärend, denn wer PHP programmiert, sollte auch HTML Grundlagen kennen!
Jetzt wird es kniffiger die eintragen.php:
Alles anzeigen
Das HTML Formular schickt uns einen Link in diesem Format an die PHP: "eintragen.php?author=sdsd&message=sdsd", ohne Anführungszeichen! Diese Methode nennt sich GET, damit sieht der User die eingebenen Daten aus dem Formular.
Das PHP Skript holt sich die Werte aus dem Link so:
$author = $_GET['author']; - Die Variable $author wird mit dem Inhalt sdsd aus der $_GET Variable['author'] befüttert! Das selbe bei message!
Für die Datumseingabe holen wir uns die Serverzeit und formatieren sie auf deutsches Format:
$datum = date("d.m.Y",time()) . " -- " . date("H:i",time()); - Die Variable wird zuerst mit dem Datumsformat "Day.Month.Year" und dann mit Zeitformat "Hour:Minute" aus der Funktion time() befüllt.
$query = "INSERT INTO book (author,message,datum) VALUES ('$author','$message','$datum')"; - Hier wird die Variable mit dem Befehl INSERT INTO befüllt:
---
- INSERT INTO book =Füge in die Tabelle book mit den Datenfeldern (author,message,datum) folgende Werte ein VALUES ('$author','$message','$datum'). Wichtig ist, dass die Werte(-variablen) in der richtigen Reinfolge sind!
---
if ($_GET['author'] == "" or $_GET['message'] == "" )
.... - Hier findet Überprüfung statt ob die Felder leer sind, wenn ja bricht das Skript ab, wenn nicht (else - Abschnitt) wird die Variable $abfrage mit dem MySQL - Query befüllt und ausgeführt!
if ($abfrage == true)
{
header('Location: index.php');
}
Wenn der MySQL - Query erfolgreich war, gibt dieser einen boolischen Werte zurück (true, false), wenn dieser true ist, schickt er uns auf die index.php zurück.
FERTIG -> Die fertigen Dateien sind auf der Webdisk.
lg
Heute lernen wir das Einfügen und Ausgeben von Datensätze einer Datenbank-Tabelle. Als praktisches Beispiel machen wir mit den 2 Befehlen ein Gästebuch. Wichtig ist die Verbindung zu dem Server und dessen Datenbank, da wir sonst nichts machen können. Achtung PHP Tutorial, KEIN PAWN!!
Wir legen eine Datei namens sql.php mit folgenden Inhalt an und speichern:
PHP-Quellcode
- <?php
- $host = 'localhost'; //IP-Adresse des Datenbankserver, da ich LOKAL arbeite gebe ich die Loop-Back Name localhost ein!
- $user = 'root'; //Der Datenbankserverusername
- $password = ''; // Das Datenbankserverpasswort
- $database = 'mysql_test'; //Die Datenbank wo wir arbeiten
- //------------------------
- mysql_connect($host,$user,$password) or die (mysql_error()); //Verbinde zu MySQL - Server, wenn nicht, dann Fehlermeldung ausgeben
- mysql_select_db($database) or die (mysql_error()); //Verbinde zu MySQL - Datenbank, wenn nicht, dann Fehlermeldung ausgeben
- ?>
Wenn ihr jetzt das Skript im Browser aufführt, ist die Seite weiß ->> Funktioniert. Wenn nicht, gibt euch das Skript die Fehlermeldung aus!
Wir kommen zu der Datenbankstruktur, wir schreiben ein kleines Gästebuch, also benötigen wir folgende Felder:
- ID
- Autor
- Nachricht
- Datum
Hier der SQL - SYNTAX:
Erklärung der einzelnen Felder:
ID ist für die Ordnung der Postings zuständig, mit jedem neuen Eintrag in die Tabelle addiert sich die ID um 1.
author ist varchar(25), das heißt, dass maximal 25 Zeichen eingetragen werden.
message ist text, verbraucht mehr Speicher, hat jedoch keine Limitation an Zeichen, das selbe wie bei datum.
Primarykey ist auf ID, das heißt das ID gegen alle anderen Feleder ein "VIP" ist.

ENGINE=InnoDB ist für uns relativ, gibt nur an welche Datenbankengine auf dem MySQL - Server läuft.
DEFAULT CHARSET=latin1 gibt den Standardformatierung der Buchstaben an --> Deutsch z.B..
AUTO_INCREMENT=1 ist entscheidend aber welcher Zahl addiert wird!
So fertig mit der Datenbank, ab auf das Skripten, wir beschränken uns auf das wesentliche. Das Eintragen der Nachricht erfolgt über eine eigene .html Seite!
Für das Anzeigen der eingetragenen Nachrichten benötigen wir dieses Skript:
Name index.php
PHP-Quellcode
- <?php
- include 'sql.php'; //Wir inkludieren die sql.php - Für den Aufbau zum MySQL - Server
- //Okay, wir müssen jetzt über PHP dem MySQL - Server sagen, was wir wollen. Wichtig ist, dass wir hier eine foreach Schleife verwenden!
- $query = "SELECT ID, author, message, datum FROM book";
- $result = mysql_query($query);
- while($row = mysql_fetch_object($result))
- {
- echo 'Gepostet von: ' . $row->author . '---Datum & Zeit: ' . $row->datum . '<br/>';
- echo 'Nachricht:<br/>' . $row->message. '<br/><hr>';
- }
- ?>
- <html>
- <div>
- <a href="eintragen.html">Neuer Eintrag</a>
- </div>
- </html>
Erklärung:
include 'sql.php'; - Wir inkludieren die sql.php mit den MySQL - Daten!
$query = "SELECT ID, author, message, datum FROM book"; - Hier geschiet die Zuweisung der Variable $query mit SQL Syntax:
---
- SELECT ID, author, message, datum = Auswählen der Datensätze: ID, author, message, datum.
- FROM book = Aus der Tabelle book.
---
$result = mysql_query($query); - Der Variable wird der Befehl mysql_query mit dem Inhalt der Variable $query "gefüttert".
while($row = mysql_fetch_object($result)) - Hier wird es Fortgeschrittener, da ich persönlich gerne mit $row arbeite, verwende ich diese Lösung von der While-Schleife.
---
- mysql_fetch_object($result) - Diese Funktion gibt die aktuelle Zeile eines Datensatzes retour - näheres bei $row!
---
echo 'Gepostet von: ' . $row->author .
'---Datum & Zeit: ' . $row->datum .
'<br/>'; = $row->author bewirkt, dass der Inhalt von dem Tabellenfeld author in der aktuellen Zeile von der While-Schleife per echo ausgegeben wird.
= Leerzeichen.
Der HTML Block ist ein Container(DIV) wo sich ein Link befindet, die eintragen.html schauen wir uns an:
HTML-Quellcode
- <html>
- <head>
- <title>Neuer Gästebucheintrag</title>
- </head>
- <body>
- <form action="eintragen.php" method="GET">
- <table>
- <tr><td>Dein Name</td><td><input type="text" name="author"/></td></tr>
- <tr><td>Deine Nachricht</td><td><textarea style="width: 388px; height: 222px;" name="message"/></textarea></td></tr>
- <tr><td></td><td><input type="submit" value="Eintragen"/></td></tr>
- </table>
- </form>
- </body>
- </html>
Die Sachen sind ausmeiner Sicht selbsterklärend, denn wer PHP programmiert, sollte auch HTML Grundlagen kennen!
Jetzt wird es kniffiger die eintragen.php:
PHP-Quellcode
- <?php
- include 'sql.php';
- $author = $_GET['author'];
- $message = $_GET['message'];
- $datum = date("d.m.Y",time()) . " -- " . date("H:i",time()); //Formatierung der Zeit
- $query = "INSERT INTO book (author,message,datum) VALUES ('$author','$message','$datum')";
- //Überprüfung ob alles Eingebeben wurde - wenn alles da - > INSERT INTO
- if ($_GET['author'] == "" or $_GET['message'] == "" )
- {
- echo "Leer";
- }
- else
- {
- $abfrage = mysql_query($query);
- }
- if ($abfrage == true)
- {
- header('Location: index.php');
- }
- ?>
Das HTML Formular schickt uns einen Link in diesem Format an die PHP: "eintragen.php?author=sdsd&message=sdsd", ohne Anführungszeichen! Diese Methode nennt sich GET, damit sieht der User die eingebenen Daten aus dem Formular.
Das PHP Skript holt sich die Werte aus dem Link so:
$author = $_GET['author']; - Die Variable $author wird mit dem Inhalt sdsd aus der $_GET Variable['author'] befüttert! Das selbe bei message!
Für die Datumseingabe holen wir uns die Serverzeit und formatieren sie auf deutsches Format:
$datum = date("d.m.Y",time()) . " -- " . date("H:i",time()); - Die Variable wird zuerst mit dem Datumsformat "Day.Month.Year" und dann mit Zeitformat "Hour:Minute" aus der Funktion time() befüllt.
$query = "INSERT INTO book (author,message,datum) VALUES ('$author','$message','$datum')"; - Hier wird die Variable mit dem Befehl INSERT INTO befüllt:
---
- INSERT INTO book =Füge in die Tabelle book mit den Datenfeldern (author,message,datum) folgende Werte ein VALUES ('$author','$message','$datum'). Wichtig ist, dass die Werte(-variablen) in der richtigen Reinfolge sind!
---
if ($_GET['author'] == "" or $_GET['message'] == "" )
.... - Hier findet Überprüfung statt ob die Felder leer sind, wenn ja bricht das Skript ab, wenn nicht (else - Abschnitt) wird die Variable $abfrage mit dem MySQL - Query befüllt und ausgeführt!
if ($abfrage == true)
{
header('Location: index.php');
}
Wenn der MySQL - Query erfolgreich war, gibt dieser einen boolischen Werte zurück (true, false), wenn dieser true ist, schickt er uns auf die index.php zurück.
FERTIG -> Die fertigen Dateien sind auf der Webdisk.
lg