Apache - PHP - MySQL Apache-PHP-MySQL
Client Server Prinzip Browser Ebene (Client) Web-Server Ebene Datenbank-Server Ebene Web- Server #1 Web- Server #2 Datenbank- Server Datenbank- Server Apache-PHP-MySQL
LAMP (WAMP) Systemarchitektur (xampp) Linux oder Windows als Betriebssystem Apache als Web Server MySQL als Datenbank-Server PHP als verbindende Skriptsprache (http://www.xampp.de --> Apachefriends) Apache-PHP-MySQL
Web Server - Apache Ein Web-Server beantwortet Anfragen, die durch Web-Clients an ihn gerichtet, werden, d.h. er sendet die angeforderten Seiten zurück Apache Web Server mit 60 % MA das z.Zt. das marktbeherrschende Produkt (http://www.netcraft.com/survey) Apache ist Open Source (www.apache.org), d.h. Quelltext der Software liegt offen, Möglichkeit der Kontrolle der Software Apache-PHP-MySQL
Datenbank Server - MySQL MySQL ist ein relationales Datenbankmanagementsystem Einsatz vorrangig in kleinen und mittelgroßen Unternehmungen Kommunikation erfolgt über die Protokollfamilie TCP/IP Jedes Programm, welches TCP/IP und die SQL Syntax versteht kann mit MySQL kommunizieren (www.mysql.com) Apache-PHP-MySQL
PHP – Hypertext Preprocessor PHP ist eine serverseitig interpretierte, in HTML eingebundene Skriptsprache dient der Erstellung dynamischer Webseiten (reine HTML Seiten sind statisch) dynamische Web Seiten werden serverseitig, im Moment ihres clientseitigen Abrufs generiert ermöglicht somit Einbindung von Daten auf Basis von Nutzeraktionen z.B. Möglichkeit Formularinhalte auszuwerten und darauf zu reagieren Apache-PHP-MySQL
PHP - Funktionsweise <html> PHP Code wird direkt in die HTML Seiten eingebunden Von HTML Seiten abweichende Dateiendung *.php Beispiel: Hello.php <html> <head><title>PHP Test</title></head> <body> <?php echo "Hello World<p>"; ?> </body> </html> Apache-PHP-MySQL
PHP Datenbankanbindung PHP stellt Verbindung zwischen einer verwendeten Datenban und dem Web Server her Einbindung von gespeichertem Datenmaterial in Internetseiten PHP agiert somit u.a. als MySQL Client Apache-PHP-MySQL
Einbindung PHP als Apache-Modul Webseite in HTML: <html> <body> Hello world </body> </html> Browser (Client) Antwort Basis-Server Anfrage .php PHP – Interpreter (Modul) Webseite mit inte- griertem PHP-Code: <?php $str=„Hello world“; echo $str; ?> DB-Server (MySQL) Web-Server (Apache) Apache-PHP-MySQL
Beispielhafte DB Anbindung I <?php $conn = mysql_connect("localhost", "Benutzername", "Passwort"); $res = mysql_query("SELECT * FROM anmeldungen", $conn); $header_printed = false; print "<TABLE>\n"; do { $data = mysql_fetch_array($res); // Retrieve the next row of data. if (!is_array($data)) { break; } Apache-PHP-MySQL
Beispielhafte DB Anbindung II if (!$header_printed) { print " <TR>"; reset($data); while (list($name, $value) = each($data)) { print " <TH>$name</TH>\n" } print " </TR>\n"; $header_printed = true; } print " <TR>\n"; print " <TD>"; print implode("</TD>\n <TD>", $data); print " </TR>\n"; } while ($data); print "</TABLE>\n"; ?> Apache-PHP-MySQL
Hinweise zur Übung Was ist zu beachten? Wie installiere ich Apache, MySQL, PHP? Übungen mit PHP Übungen mit PHP - Apache - MySQL Apache-PHP-MySQL
<body bgcolor="#ffff00"> <?php echo "Hallo PHP!"; ?> <html> <head><title>1. Uebung mit PHP (ueb1.php)</title></head> <body bgcolor="#ffff00"> <?php echo "Hallo PHP!"; ?> </body> </html> Apache-PHP-MySQL
<body bgcolor="#00ffff"> <?php echo "Hallo PHP!<p>"; <html> <head><title>2. Uebung mit PHP (ueb2.php)</title></head> <body bgcolor="#00ffff"> <?php echo "Hallo PHP!<p>"; $a=33.5; $b=7; $c=$a/$b; $x="Division"; echo "Die $x von $a und $b ist $c"; ?> </body> </html> Apache-PHP-MySQL
<body bgcolor="#bbbb00"> <html> <head><title>3. Uebung mit PHP (ueb3.php)</title></head> <body bgcolor="#bbbb00"> <form action="ueb-php.php" method=post> <input type=float size=20 name="x"><p> <input type=float size=20 name="y"><p> <input type="submit" value="weg damit!"> <input type="reset" value="zurueck!"> </form> </body> </html> Apache-PHP-MySQL
<body bgcolor="#aaaa00"> <?php <html> <head><title>3. Uebung mit PHP (ueb-php.php)</title></head> <body bgcolor="#aaaa00"> <?php echo "Hallo, nochmals PHP!<p>"; $z=$x*$y; echo "Die Multiplikation von $x und $y ist $z<p>"; $a=$x/$y; echo "Die Division von $x und $y ist $a<p>"; ?> </body> </html> Apache-PHP-MySQL
<body bgcolor="#33ffff"> <html> <head><title>Kleines Quiz (quiz.html)</title></head> <body bgcolor="#33ffff"> <h2>Kleines Quiz</h2><a> <form action="quiz2.php" method="post"> Was ist ein Verschlüsselungssystem?<p> <br><input type="radio" name="otto" value="1"> PHP <br><input type="radio" name="otto" value="2"> PGP <br><input type="radio" name="otto" value="3"> HTML <br><input type="radio" name="otto" value="4"> TCP/IP <p> <br><input type="submit" value="Abschicken"> </form> </body> </html> Apache-PHP-MySQL
<body bgcolor="#88aabb"> <html> <head><title>Ergebnis (quiz2.php)</title></head> <body bgcolor="#88aabb"> <h2>Ihr Ergebnis:</h2><a> <?php if ($otto == 2) { echo "Glückwunsch, richtig!"; } else echo "Leider falsch!"; ?> </body> </html> Apache-PHP-MySQL
<HTML><HEAD> <TITLE>2. PHP-Beispiel (Datensatz-Anzeige ohne Tabelle)(db2.php) </TITLE></HEAD> <BODY BGCOLOR="#00FFFF"> <?php $db=mysql_connect("localhost","root"); $res=mysql_db_query("firma","select * from personen"); $num=mysql_num_rows($res); echo "$num Datensätze gefunden<hr>"; for($i=0;$i<$num;$i++) { $nn=mysql_result($res, $i, "name"); $vn=mysql_result($res, $i, "vorname"); $pn=mysql_result($res, $i, "personalnummer"); $ge=mysql_result($res, $i, "gehalt"); $gt=mysql_result($res, $i, "geburtstag"); echo "$vn $nn, $pn, $ge, $gt<br>"; } mysql_close($db); ?> <hr> </BODY></HTML> Apache-PHP-MySQL
Datensatz-Anzeige in einer Tabelle <HTML> <HEAD> <TITLE>3. PHP-Beispiel (Anzeige in einer Tabelle)(db3.php) </TITLE> </HEAD> <BODY BGCOLOR="#00FFFF"> <table bgcolor="#FFFF00" border=2 cellspace=3 cellpadding=3><tr><th>Personaldatei</th></tr> <tr><th>Personalnummer</th><th>Vorname</th><th>Nachname</th><th>Gehalt</th><th>Geburtsdatum</th></tr> Apache-PHP-MySQL
// Fortsetzung von db3.php <?php $db=mysql_connect("localhost","root"); $res=mysql_db_query("firma","select * from personen"); $num=mysql_num_rows($res); for($i=0;$i<$num;$i++) { $nn=mysql_result($res, $i, "name"); $vn=mysql_result($res, $i, "vorname"); $pn=mysql_result($res, $i, "personalnummer"); $ge=mysql_result($res, $i, "gehalt"); $gt=mysql_result($res, $i, "geburtstag"); // echo "$vn $nn, $pn, $ge, $gt<br>"; echo "<tr><td>$pn</td><td>$vn</td><td>$nn</td><td> ". number_format($ge,2,",",".")." EUR</td><td>$gt</td></tr>"; } mysql_close($db); ?> </table><hr><a href="db7.php">zurück</a><p><hr> </BODY> </HTML> Apache-PHP-MySQL
Eingabe von Datensätzen <HTML> <HEAD> <TITLE>4. PHP-Beispiel (Eingabe von Datensätzen)(db4.php) </TITLE> </HEAD> <BODY BGCOLOR="#aaaaaa"> <h2>Eingabe von Datensätzen in die MySQL-Datei "Firma"</h2> <hr> <form> <input name="pn" size=5>Personalnummer<p> <input name="vn" size=20>Vorname<p> <input name="nn" size=20>Nachname<p> <input name="gt" size=20>Geburtstag (jjjj-mm-tt)<p> <input name="ge" size=10>Gehalt in EURO<p> <input type="submit" name="Abschicken"> <input type="reset"> </form> Apache-PHP-MySQL
// Fortsetzung von db4.php <?php if ($Abschicken) { $db=mysql_connect("localhost","root"); $eintrag="insert into personen "; $eintrag .= " (personalnummer,name,vorname,gehalt,geburtstag) "; $eintrag .= " values('$pn','$nn','$vn',$ge,'$gt')"; mysql_db_query("firma", $eintrag); $num = mysql_affected_rows(); if($num>0) echo "Es wurde 1 Datensatz hinzugefügt<p>"; else echo "Es ist ein Fehler aufgetreten, "; echo "es wurde kein Datensatz hinzugefügt.<p>"; } mysql_close($db); ?> <hr><a href="db7.php">zurück</a><p><hr> </BODY></HTML> Apache-PHP-MySQL
Ändern eines Datensatzes und Menü <HTML> <HEAD> <TITLE>7. PHP-Beispiel (Menü: Ändern eines Datensatzes)(db7.php) </TITLE> </HEAD> <BODY BGCOLOR="#44ddff"> <h3>Ändern eines Datensatzes <br>aus der MySQL-Datei "Firma", Tabelle "Personen"</h3> <hr> <form> <table bgcolor="#FFFF00" border=2 cellspace=3 cellpadding=3> <tr> <th>Personaldatei</th></tr> <tr><th>Auswahl</th><th>Personalnummer</th><th>Vorname</th> <th>Nachname</th><th>Gehalt</th><th>Geburtsdatum</th></tr> Apache-PHP-MySQL
// 1. Fortsetzung von db7.php <?php if ($auswahl) { $db=mysql_connect("localhost","root"); $sqlab="select * from personen where"; $sqlab .= " personalnummer='$auswahl'"; $res=mysql_db_query("firma",$sqlab); $altnn=mysql_result($res, 0, "name"); $altvn=mysql_result($res, 0, "vorname"); $altge=mysql_result($res, 0, "gehalt"); $altgt=mysql_result($res, 0, "geburtstag"); Apache-PHP-MySQL
// 2. Fortsetzung von db7.php echo "Führen Sie die Änderungen durch,<br>"; echo "betätigen Sie anschließend den Button<p>"; echo "<form action='db10.php' method='post'>"; echo "<input name='neunn' value='$altnn'> Nachname<p>"; echo "<input name='neuvn' value='$altvn'> Vorname<p>"; echo "<input name='neupn' value='$auswahl'> Personalnummer<p>"; echo "<input name='neuge' value='$altge'> Gehalt<p>"; echo "<input name='neugt' value='$altgt'> Geburtstag<p>"; echo "<input type='hidden' name='oripn' value='$auswahl'>"; echo "<input type='submit' value='Änderungen in DB speichern'><p>"; echo "<input type='reset'>"; echo "</form>"; mysql_close($db); } else echo "Es wurde kein Datensatz ausgewählt<p>"; ?> Apache-PHP-MySQL
// 3. Fortsetzung von db7.php <hr> <a href="db3.php">Zur Anzeige aller Datensätze</a><p> <a href="db9.php">Zum Löschen eines Datensatzes</a><p> <a href="db4.php">Zur Eingabe eines Datensatzes</a> </BODY> </HTML> Apache-PHP-MySQL
Löschen eines Datensatzes <HTML> <HEAD> <TITLE>9. PHP-Beispiel (Löschen eines Datensatzes)(db9.php) </TITLE> </HEAD> <BODY BGCOLOR="#ddddff"> <h3>Löschen eines Datensatzes <br>aus der MySQL-Datei "Firma", Tabelle "Personen"</h3> <hr> <form> <table bgcolor="#FFFF00" border=2 cellspace=3 cellpadding=3><tr><th>Personaldatei</th></tr> <tr><th>Auswahl</th><th>Personalnummer</th><th>Vorname</th> <th>Nachname</th> <th>Gehalt</th><th>Geburtsdatum</th></tr> Apache-PHP-MySQL
// 1. Fortsetzung von db9.php <?php $db=mysql_connect("localhost","root"); $res=mysql_db_query("firma","select * from personen"); $num=mysql_num_rows($res); for($i=0;$i<$num;$i++) { $nn=mysql_result($res, $i, "name"); $vn=mysql_result($res, $i, "vorname"); $pn=mysql_result($res, $i, "personalnummer"); $ge=mysql_result($res, $i, "gehalt"); $gt=mysql_result($res, $i, "geburtstag"); // echo "$vn $nn, $pn, $ge, $gt<br>"; echo "<tr><td><input type='radio' name='auswahl' value='$pn'>"; echo "<td>$pn</td><td>$vn</td><td>$nn</td><td>". number_format($ge,2,",",".")." EUR</td>"; echo "<td>$gt</td></tr>"; } mysql_close($db); ?> Apache-PHP-MySQL
// 2. Fortsetzung von db9.php </table><p> <input type="submit" value="Datensatz anzeigen"> </form> <?php echo "Auswahl: $auswahl<br>"; if ($auswahl) { $db=mysql_connect("localhost","root"); $sqlab="select * from personen where"; $sqlab .= " personalnummer='$auswahl'"; $res=mysql_db_query("firma",$sqlab); $altnn=mysql_result($res, 0, "name"); $altvn=mysql_result($res, 0, "vorname"); $altge=mysql_result($res, 0, "gehalt"); $altgt=mysql_result($res, 0, "geburtstag"); Apache-PHP-MySQL
// 3. Fortsetzung von db9.php echo "Wenn Sie diesen Datensatz löschen wollen,<br> echo "betätigen Sie anschließend den Button<p>"; echo "<form action='db11.php' method='post'>"; echo "<input name='neunn' value='$altnn'> Nachname<p>"; echo "<input name='neuvn' value='$altvn'> Vorname<p>"; echo "<input name='neupn' value='$auswahl'> Personalnummer<p>"; echo "<input name='neuge' value='$altge'> Gehalt<p>"; echo "<input name='neugt' value='$altgt'> Geburtstag<p>"; echo "<input type='hidden' name='oripn' value='$auswahl'>"; echo "<input type='submit' value='Löschen in DB speichern'><p>"; echo "<input type='reset'>"; echo "</form>"; mysql_close($db); } else echo "Es wurde kein Datensatz ausgewählt<p>"; ?> <hr> <a href="db3.php">Zur Anzeige aller Datensätze</a><p> <a href="db7.php">Zum Ändern eines Datensatzes</a> <hr></BODY> </HTML> Apache-PHP-MySQL
Anzeigen der Änderung eines DS <HTML> <BODY> // db10.php <?php echo "Datei $db<br>"; echo "Neuer Vorname: '$neuvn'<br>"; echo "personalnummer oripn $oripn<br>"; $db=mysql_connect("localhost","root"); $sqlab="update personen set name = '$neunn',"; $sqlab .="vorname = '$neuvn',"; $sqlab .="personalnummer = '$neupn',"; $sqlab .="gehalt = '$neuge',"; $sqlab .="geburtstag = '$neugt'"; $sqlab .=" where personalnummer=$oripn"; mysql_db_query("firma", $sqlab); $num=mysql_affected_rows(); if ($num>0) echo "Der Datensatz wurde geändert<p>"; else echo "Der Datensatz wurde nicht geändert<p>"; mysql_close($db); ?> <a href="db7.php">zurück</a><hr></BODY></HTML> Apache-PHP-MySQL
Anzeigen der Löschung eines DS <HTML> <BODY> <?php echo "Auswahl db11: $auswahl<br>"; echo "Datei $db<br>"; echo "Vorname: '$neuvn'<br>"; echo "personalnummer oripn $oripn<br>"; $db=mysql_connect("localhost","root"); $sqlab="delete from personen where "; $sqlab .="personalnummer = $oripn"; mysql_db_query("firma", $sqlab); $num=mysql_affected_rows(); if ($num>0) echo "Der Datensatz wurde gelöscht<p>"; else echo "Der Datensatz wurde nicht gelöscht<p>"; mysql_close($db); ?> <a href="db7.php">zurück</a><hr></BODY></HTML> Apache-PHP-MySQL
Literatur Apache: MySQL: PHP: Schwarze et al.: E-Commerce und LAMP-Architektur In: wisu Das Wirtschaftsstudium, 32. Jg. (2002), Heft 11, S. 1426 - 1433. Adler, Olivia; Hartmut Holzgraefe: PHP lernen. - Addison-Wesley Verlag, 2002. Apache-PHP-MySQL