emailconfirmed, nsInternRO, nsInternRW, Administrators
3,356
edits
m (→Das Backend) |
|||
| (7 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
== Einleitung == | == Einleitung == | ||
MySQL ist ein Datenbank Server, der gut mit PHP zu benutzen ist. Wer XAMP nutzt, kann die MySQL Datenbanken mit PHPMyAdmin inspizieren. | |||
Für das folgende schnelle Praxis-Beispiel brauchen wir lediglich entsprechende Rechte, um eine neue Datenbank anlegen zu können und Zugriff auf den SQL-Server sowie einen Benutzernamen und Passwort (bei XAMP ist das Standardmäßig "localhost" sowie "root/root". | |||
Ein schnelles Beispiel aus der Praxis, wie SQL mit PHP zu benutzen ist. | Ein schnelles Beispiel aus der Praxis, wie SQL mit PHP zu benutzen ist. | ||
== | == Database Connection == | ||
Jedes mal wenn auf die Datenbank zugegriffen werden soll, muss eine Verbindung aufgebaut werden, für die wir die Verbindungsdaten benötigen. Deshalb wird hier eine kurze PHP-Datei angelegt, die wir in alle weiteren PHP-Skripte einfach inkludieren können. Es ist hier besonders darauf zu achten, dass diese Datei niemals mit einer anderen Endung als .php oder .php5 am Server liegen sollte, damit diese Daten von niemandem ausgelesen werden können. Eine weitere übliche Vorgehensweise ist, diese Datei außerhalb des Webserver-Wurzelverzeichnisses abzulegen (auf das kein normaler Websurfer Zugriff haben sollte) | Jedes mal wenn auf die Datenbank zugegriffen werden soll, muss eine Verbindung aufgebaut werden, für die wir die Verbindungsdaten benötigen. Deshalb wird hier eine kurze PHP-Datei angelegt, die wir in alle weiteren PHP-Skripte einfach inkludieren können. Es ist hier besonders darauf zu achten, dass diese Datei niemals mit einer anderen Endung als .php oder .php5 am Server liegen sollte, damit diese Daten von niemandem ausgelesen werden können. Eine weitere übliche Vorgehensweise ist, diese Datei außerhalb des Webserver-Wurzelverzeichnisses abzulegen (auf das kein normaler Websurfer Zugriff haben sollte) | ||
| Line 25: | Line 26: | ||
</source> | </source> | ||
== | == Das Backend == | ||
In diesem Beispiel gehen wir von einer einfachen Datenbankstruktur aus. Wir haben Produkte, und diese Produkte haben alle einen Titel | In diesem Beispiel gehen wir von einer einfachen Datenbankstruktur aus. Wir haben Produkte, und diese Produkte haben alle einen Titel und einen Preis. | ||
Es gibt nun zwei PHP-Skripte. Das eine ist das "Frontend", hier wird die Datenbank ausgelesen und alle vorhandenen Produkte in einer Tabelle angezeigt (siehe unten). Das zweite Script ist das Backend, in dem wir die einzelnen Einträge bearbeiten können - außerdem wird hier die Tabelle und die Datenbank angelegt, wenn sie nicht schon vorhanden ist. | |||
Somit sind die Aufgaben des Backends: | |||
* Database Server Connect (siehe oben) | |||
* Create Database if not exist | |||
* Create Tables in Database if not exist | |||
* Add some values | |||
* Show Table Contents in From | |||
* Update Values in Database | |||
''Datei backend.php:'' | ''Datei backend.php:'' | ||
<source lang="PHP"> | <source lang="PHP"> | ||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||
<HTML> | <HTML> | ||
<head><title>MySQL Example</title></head> | <head> | ||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |||
<title>MySQL Example</title> | |||
</head> | |||
<body> | <body> | ||
<?PHP | <?PHP | ||
| Line 63: | Line 77: | ||
// ********** default values ********** | // ********** default values ********** | ||
// fill products with some default values (products) | // fill products with some default values (products) | ||
// note that this is a very simplified example, | |||
// therefore we're using a hard-coded products array here to easily update the form-values | |||
// in a "real life" example, we'd catch the products from the database | |||
$products = array('Shampoo', 'Soap'); | $products = array('Shampoo', 'Soap'); | ||
$sql = "INSERT INTO products | $sql = "INSERT INTO products | ||
| Line 80: | Line 97: | ||
foreach($products as $prodName) { | foreach($products as $prodName) { | ||
// replace float "," with "." $_POST['prodPrice'] is from the posted form | // replace float "," with "." $_POST['prodPrice'] is from the posted form | ||
// to prevent wrong values due to german floating point separator "," (comma) instead of the english "." (dot) | |||
$prodPrice = str_replace(",",".",$_POST['prodPrice_'.$i]); | $prodPrice = str_replace(",",".",$_POST['prodPrice_'.$i]); | ||
// update db | // update db | ||
| Line 104: | Line 122: | ||
while($entry = mysql_fetch_array($result, MYSQL_BOTH)) { | while($entry = mysql_fetch_array($result, MYSQL_BOTH)) { | ||
printf("<tr> | printf("<tr> | ||
<td>%s</td> | |||
<td><input type='text' name='prodPrice_$i' value='%01.2f' size='8'></input></td> | |||
</tr>", | |||
$entry[prodName], | |||
$entry[prodPrice] ); | |||
$i++; | $i++; | ||
} | } | ||
| Line 119: | Line 137: | ||
</HTML> | </HTML> | ||
</source> | |||
== Das Frontend == | |||
...ist im Prinzip das Gleiche wie das Backend, nur sehr viel einfacher, da wir uns nicht darum kümmern müssen, die Werte zu aktualisieren. Außerdem kann man davon ausgehen, dass alle Tabellen und die Datenbank bereits exisitieren. | |||
Somit sind die Aufgaben des Frontends: | |||
* Database Server Connect (siehe oben) | |||
* Show Table Contents (siehe oben) | |||
''Datei frontend.php:'' | |||
<source lang="PHP"> | |||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||
<HTML> | |||
<head> | |||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |||
<title>MySQL Example</title> | |||
</head> | |||
<body> | |||
<?PHP | |||
// connect to db | |||
include("config_db.php"); | |||
// select db | |||
mysql_select_db($db_name, $link); | |||
?> | |||
<table width="90%" align="center" valign="top"> | |||
<?php | |||
$result = mysql_query("SELECT * FROM products"); | |||
$i = 0; | |||
while($entry = mysql_fetch_array($result, MYSQL_BOTH)) { | |||
printf("<tr> | |||
<td>%s</td> | |||
<td>%01.2f €</td> | |||
</tr>", | |||
$entry[prodName], | |||
$entry[prodPrice] ); | |||
$i++; | |||
} | |||
?> | |||
</table> | |||
</body> | |||
</HTML> | |||
</source> | </source> | ||