Jürgen Schilling - Natur | Fotografie | Technik .

 

JürgenSchilling

Natur | Fotografie | Technik

 
 

 Home

 Black&White
 Cyanotypie
 Fotogramme
 Infrarot
 Jägerprüfung
 Kategorien
 Kirlianfotografie
 Lochkamera
 Makroaufnahmen



Lightbox


 Manuals:
 
Alle Manuals
 Aluminium eloxieren
 Hochspannungsgenerator
 Belichtungszeitentabelle
 Beurteilung v. Negativen
 Blitzlichtfotographie
 Farbmischung
 Filmentwicklung
 Infrarotfotografie
 Teslatrafo
 Teslatrafo Rechner
 Schrauben u. Gewinde

 Entwicklingszeiten:
 Agfa Rodinal
 Kodak D76

 Tiefenschäferechner

 
 Impressum


______

















  
  Bilder pro Gast
  phpMyAdmin
  B4YCounter
  Most viewed
  Logout
  Login
  Theme curve
  Theme my-fruity

Einführung in die Erstellung dynamischer Webseiten mit PHP und MySQL
 

1. Den Rechner vorbereiten:


Als Server für die folgenden Übungen diente ein Windows XP Rechner, auf dem ein Apache 2.2.4 Webserver,
ein MySQL 5.0.45 Datenbankserver und ein PHP 5.2.3 installiert wurden.
 
Apache Konfiguration:
 
Network Domain: rose.com
Server Name: www
Administrators Email Address: info@380volt.com
Webroot (Default): C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
 
Eintrag in der lokale Hosts Datei:
192.168.2.104 www.rose.com
 
MySQL Zugang: root / root123
Datenbankname: rose

 

2. Die PHP Konfigurieren:


PHP Konfiguration erfolgt ausschließlich in der:
C:\Program Files\PHP\php.ini
 
Folgende Einstellungen müssen gemacht werden:
 
Fehlerausgabe von PHP auf den Browser des Clients aktivieren, d.h auf die Webseite auf der wir unsere Skripte testen:
In der C:\Program Files\PHP\php.ini den Wert display_errors = Off auf "On" stellen.
 
Das Kürzel <?  ?> aktivieren. Sonst funktioniert nur <?php  ?>
In der C:\Program Files\PHP\php.ini den Wert short_open_tag = Off auf "On" stellen.
 
Das Globale Variablen aktivieren
In der C:\Program Files\PHP\php.ini den Wert register_globals = Off auf "On" stellen.
 
Alle anderen Optionen blieben auf "default".
Um die Änderungen zu Übernehmen, muß der Apache Service restartet werden.

 

3. PHP Testen:

 
Jetzt soll getestet werden, die PHP Installation korrekt durchgelaufen ist (was selten der Fall ist).
Dafür schreiben wir gleich unser erstes PHP-Script. Tippen Sie folgen den Code in einen Texteditor und speichern die Datei als phpinfo.php unter Webroot ab.

 
phpinfo.php:

<HTML>
<?php
phpinfo();
?>
</HTML>

Nun die phpinfo.php über den Webbrowser mit folgendem Link öffnen:
http://www.rose.com/phpinfo.php




Die Funktion phpinfo(), wird dem PHP- Programm mitgeliefert und erzeugt eine hübsch formatierte Systemübersicht. Für uns ist wichtig, daß es einen Block mit der Bezeichnung "mysql" gibt.
Wenn dieser Block nicht vorhanden ist, bekommt das PHP keine Verbindung zum MySQL-Server. PHP- Skripte die auf die noch anzulegende Datenbank zugreifen müssen bringen in diesem Fall nur einen weißen Monitor.
 
Bei mit hat das PHP einigen Dateien nicht gefunden obwohl sie korrekt im Suchpfad standen.
Lösung bei mir, für php-5.2.3 und MySQL 5.0.45:
 
1) Die Dateien libmysql.dll und php_mysql.dll nach C:\WINDOWS\system32 kopiert.
2) Apache + MySQL Dienst rebootet.
3) phpinfo.php aufgerufen und überprüfen ob  der MySQL Block da.

 

4. Ein erstes einfache Skript schreiben:
 
Nun können wir unser erstes Skript schreiben. Traditionell fangen wir mit der Textausgabe "Hello World" an.
Tippen Sie folgende Zeilen in den Texteditor und speichern Sie die Datei als hello-world.php unter Webroot ab.
 
hello-world.php
 
<HTML>
<?php
echo "Hello World";
?>
</HTML>

  
 
Rufen Sie nun das Skript im Browser mit folgenden Link auf:
http://www.rose.com/hello-world.php
 
Die Webseite zeigt "Hello World".
Schauen Sie sich nun den Html Code dieser Seite um Browser an.
Im Internet Explorer 7.0 ist das unter View -> Source möglich.
 
<HTML>
Hello World
</HTML>
 
Es wird nur der HTML-Code angezeigt. Das passiert weil das PHP- Skript, HTML- Code erzeugt und diesen dann an den Browser weitergibt. Der PHP- Code wird generell nicht im Browser angezeigt.
Beachten Sie die <?php und ?> Begrenzungszeichen. Diese Begrenzer markieren den PHP- Code und sagen dem PHP, daß alles innerhalb der Begrenzer als PHP- Code interpretiert werden muß. Alles vor oder hinter den <?php und ?> Zeichen ist HTML Code.
 
 

5) Eine MySQL Datenbank unter Windows erstellen:

 
Den "MySQL Command Line Client" aufrufen unter
Start -> Programme -> MySQL -> MySQL Server 5.0 -> MySQL Command Line Client
 
Zugangsdaten für die Testumgebung:
User: root
Paßwort: root123
Datenbankname: rose
Datenbank Ort: localhost


- Mit Paßwort einloggen
   

- Datenbank erstellen:
create databaserose;  

- Auf Datenbank verbinden:
connect rose;  
- Eine Tabelle erstellen:
CREATE TABLE personnel
(
id int NOT NULL AUTO_INCREMENT,
firstname varchar(25),
lastname varchar(20),
nick varchar(12),
email varchar(35),
salary int,
PRIMARY KEY (id),
UNIQUE id (id)
);


 
 


UNIQUE in der Spaltendefinition sorgt dafür, daß ein Wert nur 1x in der Spalte vorkommt.

 
-Tabellen anzeigen: show tables;
+--------------------+
| Tables_in_rose |
+--------------------+
| personnel          |
+--------------------+

 
- Tabelle füllen: INSERT INTO personnel VALUES ('1','John','Lever','John','john@everywhere.net','75000');
INSERT INTO personnel VALUES ('2','Camilla','Anderson','Rose','rose@flower.com,','66000');
INSERT INTO personnel VALUES ('3','Karin','Bauer','Mausi','bauer@flower.com,','46000');
INSERT INTO personnel VALUES ('4','Monika','Schmidt','Moni','moni@schmidt.de,','39000');
INSERT INTO personnel VALUES ('5','Susanne','Huber','Susi','susi@huber.com,','56000');
 
 
- Tabelleninhalt anzeigen: select * from personnel;
+----+-----------+----------+-------+-------------------------------+-------  +
| id | firstname | lastname | nick  | email                                | salary |
+----+-----------+----------+-------+-------------------------------+---------+
|  1 | John       | Lever       | John   | john@everywhere.net |  75000 |
|  2 | Camilla   | Anderson | Rose  | rose@flower.com,       |  66000 |
|  3 | Karin      | Bauer       | Mausi  | bauer@flower.com,    |  46000 |
|  4 | Monika   | Schmidt   | Moni    | moni@schmidt.de,    |  39000 |
|  5 | Susanne | Huber     | Susi     | susi@huber.com,        |  56000 |
+----+-----------+----------+-------+-------------------------------+--------+

 
 

6) PHP Befehle:
 
Variablen in PHP definieren:
In PHP wird eine Variable definiert, indem man ein "$" davor schreibt. Die Zeichenfolge nach dem "$" ist der Name der Variablen (z.B.: $db) Wir weisen der Variablen einen Wert zu, indem wir in den Code schreiben:
$variable_name=somevalue; (example: $count=4;)
 
Zeilenende in PHP:
Alle Zeilen die von PHP ausgeführt werden sollen, müssen mit ";" abgeschlossen werden.

isset   if (isset($submit))   Diese Funktion liefert TRUE, wenn die Variable oder das Array-Element $submit existiert, sonst FALSE

MySQL Befehle:

mysql_connect("localhost", "user", "passwort") stellt eine Verbindung zur Datenbank her.

mysql_select_db ("rose",$db); Wählt die Datenbank (=rose) aus. In $db stehen die Zugangsdaten.

mysql_query( ) Liest eine Tabelle aus

mysql_fetch_array( ) liest eine Tabelle, die in einer Variablen hinterlegt ist, zeilenweise aus und weist sie dem Array $myrow[] zu.


Layout:

Werte untereinander ausgeben:
Das Kommando .$myrow["firstname"] <br>liest aus der Spalte "firstname" den Wert aus und macht einen Zeilenumbruch.  Man beachte den Punkt vor .$myrow


Werte hintereinander ausgeben:
Das Kommando .$myrow["firstname"].
.$myrow["lastname"]. liest aus der Spalte "firstname" und "lastname" die Werte aus und schreibt sie hintereinander. Man beachte den Punkt vor und nach .$myrow.

Werte hintereinander in eine Tabelle schreiben:
Aus der Variablen $result Werte auslesen und in Tabelle schreiben:
echo "<TR><TD>".$myrow["firstname"]." ".$myrow["lastname"]."<TD>".$myrow["nick"]."<TD>".$myrow["email"]."</TD></TR>";

echo "<TR><TD>" Generiert den Anfang einer Reihe und die Erste Zelle. Dann wird die Ausgabe von
.$myrow["firstname"]." ".$myrow["lastname"]. in die erste Zelle geschrieben.
Zwischen den " " ist ein Blank, das die beiden Ausgaben in der Zelle trennt.
<TD> springt in die nächste Zelle und schreibt die Ausgabe von .$myrow["nick"].  .Dann geht es
mit dem nächsten "<TD>"
weiter zur nächsten Zelle und .$myrow["email"].] wird geschrieben. "</TR></TD>" schließt die Reihe ab.

Generell muß alles was mit Layout zu tun hat, im PHP-Code in Gänsefüßen (" ")stehen. Auch ein Blank das zwischen Gänsefüßen steht wird als Blank ausgegeben.

 

7) Eine HTML Tabelle erstellen:

Alle Zellen werden von links nach rechts belegt. Das Beispiel zeigt nur den einfachsten
HTML-Code. Durch Formatierungen kann der Code fast beliebig größer und unlesbarer werden.

 

1 2 3
4 5 6
7 8 9
 

Html-Code für eine 3x3 Tabelle:

<table>
            <tr>
                        <td>1</td>
                        <td>2</td>
                        <td>3</td>
            </tr>
            <tr>
                        <td>4</td>
                        <td>5</td>
                        <td>6</td>
            </tr>
            <tr>
                        <td>7</td>
                        <td>8</td>
                        <td>9</td>
            </tr>
</table>

 

 

8) Skript um den Tabelleninhalt anzuzeigen:

 

Schreiben Sie folgende Zeilen in einem Texteditor und speichern ihn dann als viewdb-first.php
unter Webroot ab:
 
viewdb-first.php:

<HTML>
<?php

/*Verbindung zur Datenbank aufbauen und die Variable $db mit den Zugangsdaten belegen -Datenbankort-Username-Paßwort */
$db = mysql_connect("localhost", "root", "root123");

/* Die Datenbank auswählen und sich mit den Zugangsdaten aus $db darauf verbinden */
mysql_select_db("rose",$db);

/*Der gesammte Inhalt der Tabelle "personnel"  wird ausgelesen und an die Variable "$result" übergeben*/
$result = mysql_query("SELECT * FROM personnel",$db);

/*HTML- Tabelle erstellen*/
echo "<TABLE>";

/*Spaltenbezeichnungen der HTML- Tabelle erstellen*/
echo"<TR><TD><B>Full Name</B><TD><B>Nick Name</B><TD><B>Salary</B></TR>";

/* Die while Schleife liest aus $result solange die Spalten aus, bis sie leer ist*/
while ($myrow = mysql_fetch_array($result))
{
echo

/* gibt aus der Spalte mit der Bezeichnung "firstname" die Werte aus*/
/* da "firstname" zuerst ausgelesen wird, wird es auch in die erste Spalte der HTML Tabelle geschrieben*/

echo $myrow["firstname"];

/*Erzeugt Leerzeichen in der HTML Tabelle zwischen  "firstname" und "lastname"*/
echo " ";

/* gibt aus der Spalte mit der Bezeichnung "lastname" die Werte aus und schreibt*/
/*sie in die erste Spalte der HTML-Tabelle hinter "firstname"*/

echo $myrow["lastname"];

/*Ende der ersten Spalte der HTML-Tabelle*/
echo "<TD>";

/* gibt aus der Spalte mit der Bezeichnung "nick" die Werte*//
/*in die zweite Spalte der HTML-Tabelle aus*/

echo $myrow["nick"];

/*Ende der zweiten Spalte der HTML-Tabelle*/
echo "<TD>";

/* gibt aus der Spalte mit der Bezeichnung "salary" die Werte*/
/*in die dritte Spalte der HTHL-Tabelle aus*/

echo $myrow["salary"];

/*Ende der drittenn Spalte der HTML-Tabelle*/
/*Ende der while-Schleife*/

}

/*Ende der HTML-Tabelle*/
echo "</TABLE>";

?>
</HTML>


..und hier noch mal, aber ohne Kommentare:


<HTML>
<?php

$db = mysql_connect("localhost", "root", "root123");
mysql_select_db("rose",$db);
$result = mysql_query("SELECT * FROM personnel",$db);
echo
echo"<TR><TD><B>Full Name</B><TD><B>Nick Name</B><TD><B>Salary</B></TR>";

while ($myrow = mysql_fetch_array($result))
 
{
echo

echo $myrow["firstname"];
echo " ";
echo $myrow["lastname"];
echo
echo $myrow["nick"];
echo "<TD>";
echo $myrow["salary"];
 }

echo "</TABLE>";
?>
</HTML>

 

 

Das Skript im IE mit http://www.rose.com/viewdb-first.php aufrufen.

Wenn beim ausführen des Skriptes nichts angezeigt wird, hat das PHP keinen Zugang auf die MySQL Datenbank!


Wie funktioniert der Code und was hat er generiert?
 
Wir belegen die Variable $db mit den Zugangsdaten zur Datenbank.
$db = mysql_connect("localhost", "root", "root123");
 
In Worten heißt das: verbinde dich auf den MySQL- Server "localhost" mit Benutzernamen "root" und Paßwort "root123"

Als nächstes verbinden wir uns auf die Datenbank "rose". Mithilfe der Zugangsdaten die in $db hinterlegt sind: "mysql_select_db("rose",$db);"
 
Die Datenbank lesen wir mit folgenden Zeilen aus:
"$result = mysql_query("SELECT * FROM personnel",$db);"

Die Anweisung "SELECT * FROM personnel" ist ein SQL Statement, das alle Informationen aus der Tabelle "personnel" in die Variable $result schreibt.
 
Jetzt können wir über die Variable $result auf alle Spalten und Zeilen der Tabelle zugreifen
Die Funktion function mysql_fetch_array() extrahiert die Spalten aus $result und weist sie der Variablen $myrow zu.

Die Anweisung "echo $myrow["firstname"];" bedeutet: hole den Inhalt der ersten (,2.,3.,. .) Zelle, der Spalte mit der Bezeichnung "firstname" und weise sie der Variablen $myrow; zu.
 
Die while() Schleife wiederholt die Abfrage zwischen den { } so oft, bis $result leer ist.

 

9) Daten über ein HTML Formular hinzufügen
 
Zuerst generieren wir das HTML-Formular datain.html
 
<HTML>
<form method="post" action="datain.php">
First name:<input type="Text" name="first"><br>
Last name:<input type="Text" name="last"><br>
Nick Name:<input type="Text" name="nickname"><br>
E-mail:<input type="Text" name="email"><br>
Salary:<input type="Text" name="salary"><br>
<input type="Submit" name="submit" value="Enter information">
</form>
</HTML>
 
Ausgabe der datain.html:
 
First name:
Last name:

Nick Name:

E-mail:

Salary:


 

method="post" hier wird eingetragen, ob die Daten über das Formular (=post) oder optional über einen Link (=get) übergeben werden.

action="datain.php" hier wird das Skript eingetragen, an das die Variablen übergeben werden. Sollen die Daten an das eigene Skript zurückgeliefert werden, trägt man den Scriptnamen ein, under dem man das Skript abspeichet.
Optional kann auch die globale Variable "PHP_SELF" hierfür verwendet werden. Aus Sicherheitsgründen sind globale Variablen in der php.ini standardmäßig deaktiviert. 


Damit die Eingaben in dem Formular auch in die Datenbank geschrieben werden, muß das Formular mit einem entsprechenden Skript hinterlegt werden.
Hierfür schreiben wir das Skript datain.php.

 
datain.php
 
<HTML>
<?php
$db = mysql_connect("localhost", "root","root123");
mysql_select_db("rose",$db);
$sql = "INSERT INTO personnel (firstname, lastname, nick, email, salary) VALUES ('$first','$last','$nickname','$email','$salary')";
$result = mysql_query($sql);
echo "Thank you! Information entered.\n";
?>
</HTML>
 
Die ersten drei Spalten sind die Gleichen wie zuvor in der viewdb-first.php
Um in die Datenbank zu schreiben, benötigen wir das SQL-Kommando "INSERT INTO":
 
$sql = "INSERT INTO personnel (firstname, lastname, nick, email, salary) VALUES ('$first','$last','$nickname','$email','$salary')";
 
In Worten heißt das:
schreibe in die Tabelle "personnel", in die Spalten mit der Bezeichnung (firstname, lastname, nick, email, salary) die Daten, die in den Variablen '$first','$last','$nickname','$email','$salary')"; hinterlegt sind.
 
Wo kommen die Variablen her?
PHP hat die Eigenschaft, Variablen automatisch zu erzeugen, wenn diese mit Daten belegt werden.
Daher erzeugt die Textbox mit Namen "first" eine Variable $first, wenn Daten in die Textbox geschrieben werden.


Jetzt bauen wir die beiden Skripte zu einem funktionstüchtigem "Einfügeskript" zusammen:
 
 
input.php:
 
<HTML>
<?php
if (isset($submit))
{
$db = mysql_connect("localhost", "root","root123");
mysql_select_db("rose",$db);
$sql = "INSERT INTO personnel (firstname, lastname, nick, email, salary) VALUES ('$first','$last','$nickname','$email','$salary')";
$result = mysql_query($sql);
echo "Informationen wurden übernommen.\n";
}
else
{
?>
<form method="post" action="input.php">
First name:<input type="Text" name="first"><br>
Last name:<input type="Text" name="last"><br>
Nick Name:<input type="Text" name="nickname"><br>
E-mail:<input type="Text" name="email"><br>
Salary:<input type="Text" name="salary"><br>
<input type="Submit" name="submit" value="Informationen eingeben [Submit]"></form>
<?php
}
 
?>
</HTML>

 
 

Aufruf über http://www.rose.com/input.php


 


Dieses Script zeigt ein Formular, wenn keine Daten vorhanden sind, andernfalls werden die Daten an die Datenbank geschrieben.

Woher weiß  das Script was gerade zu tun ist?
Wir haben gerade gelernt daß PHP automatisch Variablen generiert, sobald Daten an sie übergeben wurden.
So wird die Variable $submit generiert sobald das Formular angezeigt wird. Wenn $submit existiert und einen Wert enthält werden die Daten in die Datenbank geschrieben, ansonsten ist das Formular anzuzeigen.
 
Über das viewdb-first.php Skript, können wir feststellen ob Daten eingefügt wurden.

 

10. Datenübergabe mit einem Link (method="get")
 
Es gibt zwei Möglichkeiten Daten zu übergeben. Die eine ist läuft wie wir gerade gesehen haben über Formulare, die andere über Query-Strings (=Links). Hierfür setzen wir das  method- Attribut des Formulars auf  GET. Sollen jetzt Werte an die Datenbank übergeben werden, geschieht das, indem die Variable und dessen Wert an die URL angehängt wird.

Ändern Sie in dem input.php Script den String method="post" zu method="get" und speichern Sie es als input-get.php ab.
 
input-get.php:
 
<HTML>
<?php
if (isset($submit))
{
$db = mysql_connect("localhost", "root","root123");
mysql_select_db("rose",$db);
$sql = "INSERT INTO personnel (firstname, lastname, nick, email, salary) VALUES ('$first','$last','$nickname','$email','$salary')";
$result = mysql_query($sql);
echo "Informationen wurden übernommen.\n";
}
else
{
?>
<form method="get" action="input-get.php">
First name:<input type="Text" name="first"><br>
Last name:<input type="Text" name="last"><br>
Nick Name:<input type="Text" name="nickname"><br>
E-mail:<input type="Text" name="email"><br>
Salary:<input type="Text" name="salary"><br>
<input type="Submit" name="submit" value="Informationen eingeben[Submit]"></form>
<?php
}
 
?>
</HTML>
 

Versuchen Sie jetzt neue Daten zur Datenbank hinzuzufügen:
Aufruf über http://www.rose.com/input-get.php

Nach dem Klicken auf "Submit" schaut die URL etwa so aus :

http://www.rose.com/input-get.php?first=Gerhard&last=Boenert&nickname=Gerhard&email=boenert%40tum.de&salary=1500&submit=Informationen+eingeben%5BSubmit%5D

Jetzt werden die Informationen über einen String in der URL übergeben und nicht direkt über das Formular.
 
Der Teil nach dem ? ist der "Query-String", und wie Sie sehen enthält er alle Variablennamen und deren Inhalt. Wenn PHP einen Query-String wie ?first=Gerhard bekommt, erzeugt es automatisch eine Variable mit Namen $first und weißt Ihm den entsprechenden Wert (in unseren Fall "Gerhard") zu. Wenn mehr als eine Variable übergeben wird, der den diese mit einem & verbunden.

 

 

11) Einzelne Reihen anzeigen

Jetzt schreiben wir ein Script, das individuelle Reihen anzeigt.
Die Tabelle wird aufgrund der Variablen $id durchsucht und die entsprechende Reihe angezeigt.
Speichern Sie das Script unter dem Namen view-id.php und rufen es über den Webbrowser auf.

viewdb-id.php:
 
<HTML>
<?php
$db = mysql_connect("localhost", "root", "root123");
mysql_select_db("rose",$db);
$result = mysql_query("SELECT * FROM personnel WHERE id=$id",$db);
$myrow = mysql_fetch_array($result);
echo "First Name: ".$myrow["firstname"];
echo "<br>Last Name: ".$myrow["lastname"];
echo "<br>Nick Name: ".$myrow["nick"];
echo "<br>Email address: ".$myrow["email"];
echo "<br>Salary: ".$myrow["salary"];
?>
</HTML>
 

Aufruf:
Hier z.B. mit $id3: http://www.rose.com/viewdb-id.php?id=3



Hier wurde das SQL Kommando so abgeändert, daß die Datenbank anhand der Variablen $ID durchsucht wird.
 
Können mehrere Zeilen die gleiche ID haben?
Generell kann eine Zeile jeden beliebigen Wert enthalten, auch gleiche Werte. Aber in unserer Tabelle, kann die Spalte mit der ID nur unterschiedliche Werte enthalten, da wir beim Erstellen der Tabelle die Spalte als UNIQUE definiert haben.
 

 

12) Zwei Spalten anzeigen und den Rest über einen Link aufrufen

 
Wir schreiben jetzt unser viewdb-id.php Script so um, daß alle Vor- und Nachname angezeigt werden.
Der Rest der Daten soll durch anklicken eines Links angezeigt werden.

 
viewdb-all-id.php:
 
<HTML>
<?php

/* Zugangsdaten zur Datenbank*/
$db = mysql_connect("localhost", "root", "root123");

/*Baut die Verbindung zur Datenbank "rose" mit den Zugangsdaten aus $db auf*/
mysql_select_db("rose",$db);

/*Die gesamte Tabelle wird ausgelesen und an die Variable $result übergeben*/
$result = mysql_query("SELECT * FROM personnel",$db);

/* html Tabelle wird erzeugt*/
echo "<TABLE BORDER=2>";

/*die Spalten werden benannt*/
echo"<TR><TD><B>Full Name</B><TD><B>Nick Name</B><TD><B>Options</B></TR>";

/* mysql_fetch_array holt die Daten zeilenweise aus $result und übergibt die Zeile an $myrow) */
while ($myrow = mysql_fetch_array($result))
   {

   /* Die Spalte aus der Tabelle "rose" wir von Links nach Rechts ausgelesen und in dieser Reihenfolge */
   /* in die zuvor erzeugte Tabelle geschrieben */

   echo "<TR><TD>".$myrow["firstname"]." ".$myrow["lastname"]."<TD>".$myrow["nick"];

   /*ein Link mit Namen "View" wird  aus der "viewdb-id.php?id="  generiert*/
   echo "<TD><a href=\"viewdb-id.php?id=".$myrow["id"]."\">View</a>";

   }

echo "</TABLE>";
?>
</HTML>
 
 

..und hier noch mal ohne Kommentare:

 

<HTML>
<?php
$db = mysql_connect("localhost", "root", "root123");
mysql_select_db("rose",$db);
$result = mysql_query("SELECT * FROM personnel",$db);
echo "<TABLE BORDER=2>";
echo"<TR><TD><B>Full Name</B><TD><B>Nick Name</B><TD><B>Options</B></TR>";
while ($myrow = mysql_fetch_array($result))
   {
    echo "<TR><TD>".$myrow["firstname"]." ".$myrow["lastname"]."<TD>".$myrow["nick"];
    echo "<TD><a href=\"viewdb-id.php?id=".$myrow["id"]."\">View</a>";
   }
echo "</TABLE>";
?>
</HTML>

Aufruf:
http://www.rose.com/viewdb-all-id.php







 

Die erste Spalte zeigt $firstname $lastname, die zweite Spalte gibt $nick aus. In der dritten Zeile steht ein Hyperlink. Dieser verweist auf http://www.rose.com/view-all-id.php?id=xx . Beim anklicken wird die viewdb-id.php mit der jeweiligen $id aufgerufen
 
Zwei Variablen in eine Zelle schreiben?
echo "<TR><TD>".$myrow["firstname"]." ".$myrow["lastname"]."<TD>".$myrow["nick"];
Hier werden zwei Variabeln, der Vor- und Nachname durch einen Punkt am Ende der Variablen zu einem Wert zusammengefügt.

Sollen beide Ausgaben in unterschiedliche Zellen geschrieben werden, muß der String so ausschauen:
echo "<TR><TD>".$myrow["firstname"]."<TD>".$myrow["lastname"]."<TD>".$myrow["nick"];

 

13. Daten löschen

Das Löschen Skript ist genau so aufgebaut wie das viewdb-id.php Skript. Statt der " SELECT * FROM " Anweisung wird einfach eine "DELETE FROM" Anweisung eingesetzt. Durch Eingabe der Variablen $id wird die zu löschende Zeile ausgewählt.
Das SQL Kommando zum Auswählen und Löschen von Zeilen ist:
DELETE FROM Tabellenname WHERE Spaltenbezeichnung=Zelleninhalt (somevalue)
 
delete.php:
 
<HTML>
<?php
$db = mysql_connect("localhost", "root", "root123");
mysql_select_db("rose",$db);
mysql_query("DELETE FROM personnel WHERE id=$id",$db);
echo "Information Deleted";
?>
</HTML>
 
 
Aufruf des Skriptes für z.B.:
http://www.rose.com/delete.php?id=2
 

 
 
 

14. Werte anzeigen, klickbar machen, löschen
 
Wir bauen jetzt unsere viewdb-id.php und delete.php so in einem Script zusammen, daß der Name angezeigt wird. Die kompletten Informationen werden durch den klick auf einen Link sichtbar. Der gesamte Datensatz kann ebenfalls durch klick auf einen Link gelöscht werden.
 
view-delete.php:
 
 
<HTML>
<?php
$db = mysql_connect("localhost", "root", "root123");
mysql_select_db("rose",$db);
$result = mysql_query("SELECT * FROM personnel",$db);
echo "<TABLE BORDER=2>";
echo"<TR><TD><B>Full Name</B><TD><B>Nick Name</B><TD><B>Options</B></TR>";
while ($myrow = mysql_fetch_array($result))
{
echo "<TR><TD>".$myrow["firstname"]." ".$myrow["lastname"]."<TD>".$myrow["nick"];
//*Der Link zum Löschen wird Mithilfe der view-id.php erzeugt*//
echo "<TD><a href=\"viewdb-id.php?id=".$myrow["id"]."\">View</a> ";
//*Der Link zum Löschen wird Mithilfe der delete-id.php erzeugt*//
echo "<a href=\"delete.php?id=".$myrow["id"]."\">Delete</a>";
}
echo "</TABLE>";
?>
</HTML>
 
 
 
Aufruf:
http://www.rose.com/view-delete.php

 

Klick auf "View":
http://www.rose.com/viewdb-id.php?id=5

                        

Klick auf "Delete"
http://www.rose.com/delete-id.php?id=5



 

15. Daten neu einfügen oder updaten
 
Um Daten zu editieren verwenden wir das bereits erstellte input.php File. Das neue File speichern wir als addedit.php ab.
 
addedit.php:
 
<HTML>
<?php
if (isset($submit))
 
{
$db = mysql_connect("localhost", "root","root123");
mysql_select_db("rose",$db);
$sql = "INSERT INTO personnel (firstname, lastname, nick, email, salary)
VALUES ('$first','$last','$nickname','$email','$salary')";
 
$result = mysql_query($sql);
echo "Thank you! Information entered.\n";
}
 
else if (isset($update))
{
$db = mysql_connect("localhost", "root","root123");
mysql_select_db("rose",$db);
$sql = "UPDATE personnel SET firstname='$first',lastname='$last',nick='$nickname',email='$email',
salary='$salary' WHERE id=$id";
$result = mysql_query($sql);
echo "Thank you! Information updated.\n";
}
 
else if (isset ($id))
{
$db = mysql_connect("localhost", "root", "root123");
mysql_select_db("rose",$db);
$result = mysql_query("SELECT * FROM personnel WHERE id=$id",$db);
$myrow = mysql_fetch_array($result);
?>
<form method="post" action="<?php echo $PHP_SELF?>">
<input type="hidden" name="id" value="<?php echo $myrow["id"]?>">
First name:<input type="Text" name="first" value="<?php echo>
Last name:<input type="Text" name="last" value="<?php echo $myrow["lastname"]?>"><br>
Nick Name:<input type="Text" name="nickname" value="<?php echo $myrow["nick"]?>"><br>
E-mail:<input type="Text" name="email" value="<?php echo $myrow["email"]?>"><br>
Salary:<input type="Text" name="salary" value="<?php echo $myrow["salary"]?>"><br>
<input type="Submit" name="update" value="Update information"></form>
<?php
}
 
else
{
?>
<form method="post" action="<?php echo $PHP_SELF?>">
First name:<input type="Text" name="first"><br>
Last name:<input type="Text" name="last"><br>
Nick Name:<input type="Text" name="nickname"><br>
E-mail:<input type="Text" name="email"><br>
Salary:<input type="Text" name="salary"><br>
<input type="Submit" name="submit" value="Enter information"></form>
<?php
}
?>
</HTML>


Aufruf:
http://www.rose.com/addedit.php

                


Dateneingabe:


 
 

 

Datenübername über Querry-String


http://www.rose.com/addedit.php?first=Heidi&last=Bauer&nickname=Heidi&email=heidi@t-online.at&salary=24&submit=Enter+information+%28Submit%29
 
 

Schaut kompliziert aus, ist es aber nicht.
Das bereits erstellte input.php Skript hat 2 Eigenschaften:
Es kann das Formular anzeigen und in die Datenbank schreiben.
Wir fügen jetzt noch 2 Features hinzu:
Nämlich das Formular mit bereits vorhandenen Daten anzeigen und bereits vorhandene Daten zu editieren.
  • Das Script sucht nach der Variablen $submit. Ist diese vorhanden werden die Daten in die Datenbank geschrieben.
  • Ist $submit leer sucht das Skript die $update Variable. Ist diese vorhanden, wird der entsprechende Eintrag geändert. Wenn nicht, dann wird nach der Variablen $id gesucht.
  • Ist $id vorhanden, geht das Update Formular mit den entsprechenden Daten auf.
  • Ist $id auch nicht vorhanden, geht das Submit- Formular auf und es können neue Daten eingetragen werden.
 
Das Belegen der Variablen $submit mit Daten erfolgt über z.B: untenstehenden Link:
http://www.rose.com/addedit.php?first=Heidi&last=Bauer&nickname=Heidi&email=heidi@t-online.at&salary=24&submit=Enter+information+%28Submit%29

 
Das Belegen der Variablen $update mit Daten erfolgt über z.B: untenstehenden Link:
http://www.rose.com/addedit.php?first=Heidi&last=Bauer&nickname=Heidi&email=heidi@t-online.at&salary=24&submit=Enter+information+%28Update%29


 
Der Unterschied zwischen den beiden Links ist nur das Submit und Update am Ende.
 
Das Belegen der Variablen $id mit Daten erfolgt über z.B: untenstehenden Link:
http://www.rose.com/addedit.php?id=4
 
Wird das Skript ohne Optionen über http://www.rose.com/addedit.php aufgerufen,
springt es in das Eingabeformular. Werte die hier eingegeben werden, werden mit dem "Submit-Knopf" die Daten an die $submit Variable übergeben und die Datenbank geschrieben.  

 

16) Lesen, Ändern, Löschen von Einträgen.
 
Wir bauen jetzt die bereits erstellet Scripte viewdb-id.php, delete.php und addedit.php so zusammen, daß lesen, löschen und ändern in einem Skript möglich ist.
 
view-delete-update.php:
 
<HTML>
<?php
$db = mysql_connect("localhost", "root", "root123");
mysql_select_db("rose",$db);
$result = mysql_query("SELECT * FROM personnel",$db);
echo "<TABLE BORDER=2>";
echo"<TR><TD><B>Full Name</B><TD><B>Nick Name</B><TD><B>Options</B></TR>";

while ($myrow = mysql_fetch_array($result))
 
{
echo "<TR><TD>".$myrow["firstname"]." ".$myrow["lastname"]."</a><TD>".$myrow["nick"];
echo "<TD><a href=\"viewdb-id.php?id=".$myrow["id"]."\">View</a> ";
echo "<a href=\"delete.php?id=".$myrow["id"]."\">Delete</a> ";
echo "<a href=\"addedit.php?id=".$myrow["id"]."\">Edit</a>";
}
 
echo "</TABLE>";
?>
</HTML>

 

 

17) Daten suchen
 
Zum Schluß schreiben wir jetzt noch ein Skript das die Datenbank durchsucht.
Die Seite wird anfangs ein leeres Formular anzeigen. Nach der Eingabe und Übernahme der zu suchenden Daten zeigt das Formular die vollständigen Daten an.
 
search.php:
 
 
<HTML>
<?php
if (isset($searchstring))

{
$sql="SELECT * FROM personnel WHERE $searchtype LIKE '%$searchstring%' ORDER BY firstname ASC";
$db = mysql_connect("localhost", "root", "root123");
mysql_select_db("rose",$db);
$result = mysql_query($sql,$db);
echo "<TABLE BORDER=2>";
echo"<TR><TD><B>Full Name</B><TD><B>Nick Name</B><TD><B>eMail</B><TD><B>Options</B></TR>";

while ($myrow = mysql_fetch_array($result))
{
echo "<TR><TD>".$myrow["firstname"]." ".$myrow["lastname"]."<TD>".$myrow["nick"]."<TD>".$myrow["email"];
echo "<TD><a href=\"viewdb-id.php?id=".$myrow["id"]."\">View</a>";
}

echo "</TABLE>";
}

else
{
?>
<form method="GET" action="<?php $PHP_SELF ?>">
<table border="2" cellspacing="2">
<tr><td>Insert you search string here</td>
<td>Search type</td></tr>
<tr>

<!-- Erzeugung des Dropdown Menues -->
<td><input type="text" name="searchstring" size="28"></td>
<td><select size="1" name="searchtype">

<option selected value="firstname">First Name</option>
<option value="lastname">Last Name</option>
<option value="nick">Nick Name</option>
<option value="email">Email</option>

</select></td>
</tr>
</table>
<p><input type="submit" value="Submit"><input type="reset" value="Reset"></p>
</form>
<?php
}

?>
</HTML>
 
Aufruf:
http://www.rose.com/search.php

Ergebnis:

 

 

Das Skript überprüft ob der Suchstring existiert. Wenn die Variable $searchstring einen Wert enthält, wird die Suche ausgeführt. Wenn nicht, wird das Suchformular angezeigt.
Das SQL Kommando für die Suche ist:
 
"SELECT * FROM personnel WHERE $searchtype LIKE '%$searchstring%' ORDER BY firstname ASC"
 
Zwei neue SQL Befehle kamen jetzt hinzu, "LIKE" und "ORDER BY".
LIKE sucht eine beliebige Buchstaben und / oder Zahlenkombination. Das '%' vor und nach dem String heißt, daß alles was vor und nach dem Suchstring nicht mehr beachtet wird.
'ORDER BY' ordnet die Ausgabe in aufsteigender oder absteigender Richtung. ASC (ASCending) aufsteigend und DES (DESCending) absteigend.



Noch ein Tipp:

Wenn das Script im PHP -Teil hängen bleibt kann man untenstehenden String an mehreren Stellen einfügen.
Wo die Testausgabe nicht mehr erscheint, "hängt" das Skript. 
 
<?php echo "test" ?>

© 10.09.2007, Juergen Schilling