bernd viehweger apache-php-mysql1. bernd viehweger apache-php-mysql2 client server prinzip web-...
TRANSCRIPT
Apache-PHP-MySQL 1Bernd Viehweger
Apache - PHP - MySQL
Apache-PHP-MySQL 2Bernd Viehweger
Client Server Prinzip
Web-Server#1
Web-Server#2
Datenbank-Server
Datenbank-Server
Browser Ebene(Client)
Web-Server Ebene
Datenbank-ServerEbene
Apache-PHP-MySQL 3Bernd Viehweger
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 4Bernd Viehweger
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 5Bernd Viehweger
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 6Bernd Viehweger
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 7Bernd Viehweger
PHP - Funktionsweise
• 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 8Bernd Viehweger
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 9Bernd Viehweger
Einbindung PHP als Apache-Modul
Basis-Server
PHP – Interpreter(Modul)
Web-Server(Apache)
DB-Server(MySQL)
.php
Webseite in HTML:
<html><body>Hello world</body></html>
Antwort
Webseite mit inte-griertem PHP-Code:
<?php$str=„Hello world“;echo $str;?>
Anfrage
Browser(Client)
Apache-PHP-MySQL 10Bernd Viehweger
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 11Bernd Viehweger
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 12Bernd Viehweger
Hinweise zur Übung
• Was ist zu beachten?• Wie installiere ich Apache, MySQL, PHP?• Übungen mit PHP• Übungen mit PHP - Apache - MySQL
Apache-PHP-MySQL 13Bernd Viehweger
<html><head><title>1. Uebung mit PHP (ueb1.php)</title></head><body bgcolor="#ffff00"><?php
echo "Hallo PHP!";?></body></html>
Apache-PHP-MySQL 14Bernd Viehweger
<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 15Bernd Viehweger
<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 16Bernd Viehweger
<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 17Bernd Viehweger
<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 18Bernd Viehweger
<html><head><title>Ergebnis (quiz2.php)</title></head><body bgcolor="#88aabb"><h2>Ihr Ergebnis:</h2><a>
<?phpif ($otto == 2){
echo "Glückwunsch, richtig!";}else{
echo "Leider falsch!";}
?></body></html>
Apache-PHP-MySQL 19Bernd Viehweger
<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 20Bernd Viehweger
<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>
Datensatz-Anzeige in einer Tabelle
Apache-PHP-MySQL 21Bernd Viehweger
// 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 22Bernd Viehweger
<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>
Eingabe von Datensätzen
Apache-PHP-MySQL 23Bernd Viehweger
// 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 24Bernd Viehweger
<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>
Ändern eines Datensatzes und Menü
Apache-PHP-MySQL 25Bernd Viehweger
// 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 26Bernd Viehweger
// 2. Fortsetzung von db7.phpecho "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 27Bernd Viehweger
// 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>
<hr>
</BODY>
</HTML>
Apache-PHP-MySQL 28Bernd Viehweger
<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>
Löschen eines Datensatzes
Apache-PHP-MySQL 29Bernd Viehweger
// 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 30Bernd Viehweger
// 2. Fortsetzung von db9.php</table><p><input type="submit" value="Datensatz anzeigen"></form>
<?phpecho "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 31Bernd Viehweger
// 3. Fortsetzung von db9.phpecho "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 32Bernd Viehweger
<HTML><BODY> // db10.php<?php
echo "Datei $db<br>";echo "Neuer Vorname: '$neuvn'<br>";echo "personalnummer oripn $oripn<br>";$db=mysql_connect("localhost","root");echo "Datei $db<br>";$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>
Anzeigen der Änderung eines DS
Apache-PHP-MySQL 33Bernd Viehweger
<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");echo "Datei $db<br>";$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>
Anzeigen der Löschung eines DS
Apache-PHP-MySQL 34Bernd Viehweger
Literatur
• Apache:
• MySQL:
• PHP:
• Schwarze et al.: E-Commerce und LAMP-ArchitekturIn: wisu Das Wirtschaftsstudium, 32. Jg. (2002), Heft 11, S. 1426 - 1433.
• Adler, Olivia; Hartmut Holzgraefe: PHP lernen. - Addison-Wesley Verlag, 2002.