Kapitel N Lösungen
In diesem Abschnitt finden Sie die Lösungen zu den Übungsaufgaben aus allen Abschnitten. Sollten Sie die Übungsaufgabe nicht vollständig gelöst haben, so kann die Lösung als Hilfestellung dienen. Sofern Sie selber eine lauffähige Lösung gefunden haben, sollten Sie sie mit der vorgeschlagenen Lösung vergleichen.
N.1 HTML für PHP  
Lösung zu Übung UB03
<html>
<body>
Bitte tragen Sie Ihren Namen ein, und senden Sie das Formular ab.<p>
<form>
<input size="30"> Vorname <p>
<input size="30"> Nachname <p>
<input size="30"> Straße <p>
<input size="30"> Hausnummer <p>
<input size="30"> Postleitzahl <p>
<input size="30"> Ort <p>
<input type = "submit">
<input type = "reset">
</form>
</body>
</html>
Lösung zu Übung UB05
<html>
<body>
<table border>
<tr>
<td>Berlin</td>
<td>Deutschland</td>
</tr>
<tr>
<td>Paris</td>
<td>Frankreich</td>
</tr>
<tr>
<td>Brüssel</td>
<td>Belgien</td>
</tr>
<tr>
<td>London</td>
<td>Großbritannien</td>
</tr>
</table>
</body>
</html>
Lösung zu Übung UB06
<html>
<body>
Zur <a href = "ub01.htm">ersten</a> Datei<p>
Zum <a href = "ub02.htm">einfachen</a>
Eingabeformular<p>
Zum <a href = "ub03.htm">erweiterten</a>
Eingabeformular<p>
Zur <a href = "ub04.htm">ersten</a> Tabelle<p>
Zur <a href = "ub05.htm">zweiten</a> Tabelle<p>
Klicken Sie mit der Maus auf das unterstrichene Wort<p>
</body>
</html>
N.2 Strukturierte Programmierung mit PHP  
Lösung zu Übung UC03
<html>
<body>
<?php
// es folgt der echo-Befehl
echo "Dieses Programm wurde geschrieben";
echo " von Max Müller";
?>
</body>
</html>
Lösung zu Übung UC06
<html>
<body>
<?php
$a = 4;
$c = 2;
$ergebnis = 7 / $a + $c – 5.5 * (3 – $c);
echo $ergebnis;
?>
</body>
</html>
Lösung zu Übung UC08
<html>
<body>
<?php
$a = 4;
$c = 2;
$ergebnis = 7 / $a + $c – 5.5 * (3 – $c);
$ta = '$a hat den Wert ' . $a;
$tc = '$c hat den Wert ' . $c;
$tausdr = 'Der Ausdruck lautet ';
$tausdr .= ' 7 / $a + $c – 5.5 * (3 – $c)';
$terg = "Das Ergebnis dieses Ausdruckes ";
$terg .= " ist $ergebnis";
echo "$ta <p>";
echo "$tc <p>";
echo "$tausdr <p>";
echo $terg;
?>
</body>
</html>
Lösung zu Übung UC12
<html>
<body>
<?php
$tn = "Bonn ist Hauptstadt";
$ta = "Berlin ist Hauptstadt";
$w1 = 15;
$w2 = 3.2;
if ($tn == $ta)
echo "Die Zeichenketten sind gleich<BR>";
else
echo "Die Zeichenketten sind ungleich<BR>";
if ($tn != $ta)
echo "Die Zeichenketten sind ungleich<BR>";
else
echo "Die Zeichenketten sind gleich<BR>";
if ($w1 <= $w2)
echo "$w1 ist kleiner oder gleich $w2<BR>";
else
echo "$w1 ist größer als $w2<BR>";
if ($w1 >= $w2)
echo "$w1 ist größer oder gleich $w2<BR>";
else
echo "$w1 ist kleiner als $w2<BR>";
?>
</body>
</html>
Lösung zu Übung UC16
<html>
<body>
<?php
for ($i=13; $i<=29; $i=$i+4)
{
echo "$i ";
}
echo "<p>";
for ($i=2; $i>=-1; $i=$i-0.5)
{
echo "$i ";
}
echo "<p>";
for ($i=2000; $i<=6000; $i=$i+1000)
{
echo "$i ";
}
echo "<p>";
for ($i=5; $i<=13; $i=$i+2)
{
echo "Z$i ";
}
echo "<p>";
for ($i=1; $i<=3; $i=$i+1)
{
echo "a b$i ";
}
echo "<p>";
for ($i=2; $i<=22; $i=$i+10)
{
$k = $i + 1;
echo "c$i c$k ";
}
echo "<p>";
for ($i=13; $i<=45; $i=$i+4)
{
if ($i<=21 || $i>=33) echo "$i ";
}
?>
</body>
</html>
Lösung zu Übung UC23
<html>
<head>
<?php
function av($a, $b, $c)
{
$mw = ($a + $b + $c) / 3;
echo "Der Mittelwert von $a, $b";
echo " und $c ist $mw<p>";
}
?>
</head>
<body>
<?php
av(4,7,7);
av(44,69,1);
av(-5,0,-13);
av(1e-3,8e-3,3e-3);
$x = 5;
av($x,$x+3,$x-3);
?>
</body>
</html>
Lösung zu Übung UC24
<html>
<head>
<?php
function dev($vname, $nname, $firma, $stadt)
{
$ausgabe = "Dieses Programm ist von $vname";
$ausgabe .= " $nname, $firma in $stadt";
echo "$ausgabe<p>";
}
?>
</head>
<body>
<?php
$meinvorname = "Max";
$meinnachname = "Müller";
$meinefirma = "Quadro GmbH";
$meinestadt = "Obertupfingen";
dev($meinvorname, $meinnachname,
$meinefirma, $meinestadt);
dev("Hans", "Maier", "Siemens", "Düsseldorf");
dev($meinvorname, $meinnachname, "Siemens",
"Düsseldorf");
?>
</body>
</html>
Lösung zu Übung UC25
<html>
<head>
<?php
function dev($vname, $nname, $firma, $stadt, $g)
{
if ($g == 1) $gtext = "Frau";
else $gtext = "Herrn";
$ausgabe = "Dieses Programm ist von $gtext ";
$ausgabe .= " $vname $nname, $firma ";
$ausgabe .= " in $stadt";
echo "$ausgabe<p>";
}
?>
</head>
<body>
<?php
$meinvorname = "Max";
$meinnachname = "Müller";
$meinefirma = "Quadro GmbH";
$meinestadt = "Obertupfingen";
dev($meinvorname, $meinnachname, $meinefirma,
$meinestadt, 2);
dev("Julia", "Maier", "Siemens", "Düsseldorf", 1);
dev($meinvorname, $meinnachname, "Siemens",
"Düsseldorf", 2);
?>
</body>
</html>
Lösung zu Übung UC27
<html>
<head>
<?php
function bigger($x, $y)
{
if ($x > $y)
$ergebnis = $x;
else
$ergebnis = $y;
return $ergebnis;
}
?>
</head>
<body>
<?php
$c = bigger(3,4);
echo "Maximum: $c<p>";
$x = 5;
$c = bigger($x,12);
echo "Maximum: $c<p>";
echo "Maximum: " . bigger(13,2) . "<p>";
?>
</body>
</html>
Lösung zu Übung UC28
<html>
<head>
<?php
function etikett($vn, $nn, $plz, $ort)
{
$erg = "An<br>$vn $nn<br>$plz $ort";
return $erg;
}
?>
</head>
<body>
<?php
$meinvorname = "Max";
$meinnachname = "Müller";
$meineplz = 52699;
$meinestadt = "Obertupfingen";
$ausgabe = etikett($meinvorname, $meinnachname,
$meineplz, $meinestadt);
echo "<p>$ausgabe";
$ausgabe = etikett("Julia", "Maier", 56601,
"Düsseldorf");
echo "<p>$ausgabe";
$ausgabe = etikett($meinvorname, $meinnachname,
57433,"Düsseldorf");
echo "<p>$ausgabe";
?>
</body>
</html>
Lösung zu Übung UC30
<html>
<head>
<?php
function rechne($a, $b, $su, $pr)
{
$su = $a + $b;
$pr = $a * $b;
}
?>
</head>
<body>
<?php
$x = 7;
$y = 5;
rechne($x, $y, &$summe, &$produkt);
echo "Die Summe von $x und $y ist $summe<p>";
echo "Das Produkt von $x und $y ist $produkt";
?>
</body>
</html>
N.3 Bearbeitung von Formularen  
Lösung zu Übung UD02, Formular
<html>
<body>
Bitte tragen Sie Ihre Adresse ein, und senden Sie das Formular ab:
<form action = "ud02.php" method = "post">
<input name = "nachname"> Nachname <p>
<input name = "vorname"> Vorname <p>
<input name = "strasse"> Straße <p>
<input name = "plz"> PLZ <p>
<input name = "ort"> Ort <p>
<input type = "submit">
<input type = "reset">
</form>
</body>
</html>
Lösung zu Übung UD02, Programm
<html>
<body>
<?php
echo "Vielen Dank, $vorname $nachname <br>";
echo "Wir haben Ihre Adresse<br>";
echo "$strasse <br>";
echo "$plz $ort <br>";
echo "gespeichert";
?>
</body>
</html>
Lösung zu Übung UD04, Formular
<html>
<body>
Bitte tragen Sie drei unterschiedlich große Zahlen ein,
und senden Sie das Formular ab:
<form action = "ud04.php" method = "post">
<input name = "w1"> Wert 1<p>
<input name = "w2"> Wert 2<p>
<input name = "w3"> Wert 3<p>
<input type = "submit">
<input type = "reset">
</form>
</body>
</html>
Lösung zu Übung UD04, Programm
<html>
<body>
<?php
if ($w1 > $w2)
{
if ($w1 > $w3)
echo "$w1 ist die größte Zahl";
else
echo "$w3 ist die größte Zahl";
}
else
{
if ($w2 > $w3)
echo "$w2 ist die größte Zahl";
else
echo "$w3 ist die größte Zahl";
}
?>
</body>
</html>
Lösung zu Übung UD08, Formular
<html>
<body>
Bitte geben Sie Ihren Namen und Ihre Adresse ein, treffen Sie Ihre
Auswahl und senden Sie das Formular ab:
<form action = "ud08.php" method = "post">
<input name="besteller"> Name<p>
<input name="adresse"> Adresse<p>
<input type="radio" name="anrede" value="Herr"
checked> Herr <p>
<input type="radio" name="anrede" value="Frau">
Frau <p>
<p>
<select name="pizzatyp">
<option value="Napoli" selected>
Napoli (DM 11,50)
<option value="Italia">
Italia (DM 12,50)
<option value="Con Tutto">
Con Tutto (DM 14,00)
<option value="4 Stagioni">
4 Stagioni (DM 13,00)
<option value="Mozzarella">
Mozzarella (DM 14,50)
</select><p>
<input type="checkbox" name="ct"
value="Thunfisch"> Thunfisch<p>
<input type="checkbox" name="cek"
value="Extra Käse"> Extra Käse<p>
<input type = "submit">
<input type = "reset">
</form>
</body>
</html>
Lösung zu Übung UD08, Programm
<html>
<body>
<?php
/* Auswahl der Pizza */
if ($pizzatyp == "Napoli")
$preis = 11.5;
else if ($pizzatyp == "Italia")
$preis = 12.5;
else if ($pizzatyp == "Con Tutto")
$preis = 14;
else if ($pizzatyp == "4 Stagioni")
$preis = 13;
else
$preis = 14.5;
/* Zusätze */
if ($ct)
$preis = $preis + 1;
if ($cek)
$preis = $preis + 2;
/* Anrede */
if ($anrede == "Herr")
echo "Sehr geehrter Herr $besteller<p>";
else
echo "Sehr geehrte Frau $besteller<p>";
/* Ausgabe */
echo "vielen Dank für Ihre Bestellung<p>";
echo "Wir liefern Ihre Pizza $pizzatyp";
if ($ct)
echo " mit $ct";
if ($cek)
echo " mit $cek";
echo " in 20 Minuten an die folgende Adresse:<p>";
echo "$adresse<p>";
echo "Der Preis beträgt DM $preis<p>";
echo "Ihr Pizza-Team";
?>
</body>
</html>
Lösung zu Übung UD11, Formular
<html>
<body>
Bitte geben Sie zwei Werte ein, wählen Sie die Rechenoperation aus
und senden Sie das Formular ab:
<form action = "ud11.php" method = "post">
<input name="w1"> Wert 1<p>
<input name="w2"> Wert 2<p>
<input type="radio" name="oper"
value="+" checked> Addition<p>
<input type="radio" name="oper"
value="-"> Subtraktion<p>
<input type="radio" name="oper"
value="*"> Multiplikation<p>
<input type="radio" name="oper"
value="/"> Division<p>
<input type = "submit">
<input type = "reset">
</form>
</body>
</html>
Lösung zu Übung UD11, Programm
<html>
<head>
<?php
function add($x, $y)
{
$s = $x + $y;
return $s;
}
function sub($x, $y)
{
$s = $x – $y;
return $s;
}
function mult($x, $y)
{
$s = $x * $y;
return $s;
}
function divi($x, $y)
{
$s = $x / $y;
return $s;
}
?>
</head>
<body>
<?php
if ($oper == "+")
$erg = add($w1,$w2);
else if ($oper == "-")
$erg = sub($w1,$w2);
else if ($oper == "*")
$erg = mult($w1,$w2);
else
$erg = divi($w1,$w2);
echo "$w1 $oper $w2 = $erg";
?>
</body>
</html>
Lösung zu Übung UD13
<html>
<head>
<?php
[Funktionen wie in UD11]
?>
</head>
<body>
<?php
if ($gesendet)
{
[Verzweigung und Ausgabe wie in UD11]
}
?>
Bitte geben Sie zwei Werte ein, wählen Sie die Rechenoperation aus
und senden Sie das Formular ab:
<form action = "<?php $PHP_SELF ?>" method = "post">
<input name = "w1"> Wert 1<p>
<input name = "w2"> Wert 2<p>
[Radio-Buttons wie in UD11]
<input type = "submit" name = "gesendet">
<input type = "reset">
</form>
</body>
</html>
Lösung zu Übung UD14, Formular
<html>
<body>
Bitte geben Sie eine Jahreszahl ein, und senden Sie das Formular ab:
<form action = "ud14.php" method = "post">
<input name = "J"> Jahreszahl<p>
<input type = "submit">
<input type = "reset">
</form>
</body>
</html>
Lösung zu Übung UD14, Programm
<html>
<head>
<?php
function Ostersonntag($J, &$t, &$mstr)
{
// Berechnung von klein d
$d = ((15 + floor($J/100) – floor($J/400)
– floor((8 * floor($J/100) + 13) / 25)) % 30
+ 19 * ($J % 19)) % 30;
// Berechnung von groß d
if ($d==29)
$D = 28;
else if ($d == 28 && $J%17 >= 11)
$D = 27;
else $D = $d;
// Berechnung von klein e
$e = (2 * ($J%4) + 4 * ($J%7) + 6 * $D
+ (6 + floor($J/100) – floor($J/400) – 2) % 7) % 7;
// Berechnung von Tag und Monat
// Rückgabe der Werte per Referenz
$mstr = "März";
$t = 21 + $e + $D + 1;
if ($t > 31)
{
$mstr = "April";
$t = $t – 31;
}
}
?>
</head>
<body>
<?php
$os = Ostersonntag($J, $tag, $monat);
echo "$J $tag.$monat";
?>
</body>
</html>
Lösung zu Übung UD15, Formular
<html>
<body>
Bitte geben Sie zwei Jahreszahlen ein, und senden Sie das Formular
ab:
<form action = "ud15.php" method = "post">
<input name = "anfang"> Erste Jahreszahl<p>
<input name = "ende"> Zweite Jahreszahl<p>
<input type = "submit">
<input type = "reset">
</form>
</body>
</html>
Lösung zu Übung UD15, Programm
<html>
... Funktion Ostersonntag, siehe vorherige Übung ...
<body>
<?php
// Größere Jahreszahl zuerst? Tauschen !
if ($anfang > $ende)
{
$temp = $anfang;
$anfang = $ende;
$ende = $temp;
}
echo "<TABLE BORDER>";
echo "<TR> <TD>Jahr</TD> <TD>Datum</TD> </TR>";
// Schleife über alle Jahreszahlen
for ($J = $anfang; $J <= $ende; $J = $J + 1)
{
$os = Ostersonntag($J, $tag, $monat);
echo "<TR> <TD>$J</TD> <TD>$tag.$monat</TD></TR>";
}
echo "</TABLE>";
?>
</body>
</html>
N.4 Datenbanken mit MySQL  
Lösung zu Übung UE01
Die nachfolgende Lösung ist vollständig mit allen Angaben, die in der Windows-Installation notwendig sind. In späteren Lösungen innerhalb dieses Abschnittes werden nur noch der Aufruf des MySQL-Monitors bzw. die SQL-Anweisungen innerhalb des MySQL-Monitors angegeben. Diese Lösungen sind unabhängig von der Umgebung (Windows oder Linux).
Wechsel zum DOS-Eingabemodus: Startmenü / Programme / MS-DOS-Eingabeaufforderung Wechsel in das Verzeichnis des Datenbank-Servers:
cd c:\mysql\bin
Start des Datenbank-Servers:
mysqld-shareware
Aufruf des MySQL-Monitors:
mysql
Datenbank erzeugen:
create database hardware;
Zur Datenbank wechseln:
use hardware;
Tabellenstruktur erzeugen:
create table fp
(
hersteller char (20),
typ char(20),
mb int,
preis double(10,2),
artikelnummer char(20),
prod date-time
);
Ersten Datensatz eingeben:
insert fp values
(
'Quantum',
'Fireball CX',
6400,
215,
'HDA-208',
'97-10-1'
);
Kontrolle von Struktur und erstem Datensatz:
select * from fp;
Gegebenenfalls Änderung eines Feldnamens:
alter table fp
change artikelnummer artnummer char(20);
Wiederholte Kontrolle:
select * from fp;
weitere Datensätze eingeben:
insert fp values
(
'Quantum',
'Fireball Plus',
9100,
269,
'HDA-163',
'98-3-15'
);
insert fp values
(
'Fujitsu',
'MPE 3136',
13600,
275,
'HDA-171',
'98-9-1'
);
insert fp values
(
'Seagate',
'310232A',
10200,
245,
'HDA-144',
'97-11-15'
);
insert fp values
(
'IBM',
'DJNA 372200',
22000,
455,
'HDA-140',
'98-6-15'
);
End-Kontrolle:
select * from fp;
Verlassen des MySQL-Monitors:
quit
Herunterfahren des Datenbank-Servers:
mysqladmin -u root shutdown
Verlassen des DOS-Eingabemodus:
exit
Lösung zu Übung UE02
Aufruf des MySQL-Monitors und der Datenbank:
mysql hardware
Alle Festplatten von Quantum:
select * from fp
where hersteller = 'Quantum';
Alle Festplatten mit mehr als 10000 MB, ausgewählte Felder:
select hersteller, typ, mb from fp
where mb > 10000;
Alle Festplatten unter 300 DM, ausgewählte Felder, sortiert nach Preis:
select hersteller, preis, artnummer from fp
where preis < 300 order by preis;
Alle Festplatten mit mehr als 10000 MB, unter 300 DM, fallend sortiert nach MB:
select * from fp
where mb > 10000 and preis < 300
order by mb desc;
Alle Festplatten, deren Typbezeichnung mit »Fire« beginnt:
select * from fp
where typ like 'Fire%'
Alle Festplatten, in deren Typbezeichnung »CX« vorkommt:
select * from fp
where typ like '%CX%'
Alle Festplatten, die nach dem 1.1.1998 erstmalig produziert wurden:
select * from fp
where prod >= '98-1-1-';
Alle Festplatten, die im ersten Halbjahr 1998 erstmalig produziert wurden:
select * from fp
where prod >= '98-1-1-' and prod <= '98-6-30';
Lösung zu Übung UE03
Aufruf des MySQL-Monitors und der Datenbank:
mysql hardware
Alle Festplatten von Seagate um DM 25 teurer:
update fp set preis = preis + 25
where hersteller = 'Seagate';
Änderung bei einer Festplatte von Fujitsu:
update fp
set typ = 'MPE 3139', mb = 13900
where artnummer = 'HDA-171';
Alle Festplatten von Quantum um 8% teurer:
update fp
set preis = preis * 1.08
where hersteller = 'Quantum';
Alle Festplatten von IBM entfernen:
delete from fp
where hersteller = 'IBM';
Alle versehentlich eingefügten Datensätze entfernen:
delete from fp
where artnummer is null;
Lösung zu Übung UE04
Datenbank wechseln:
use firma;
Tabelleninhalte kontrollieren:
select * from personen;
Gegebenenfalls Tabelleninhalte ändern:
update personen
set personalnummer = ...
where ...
Eigenschaften des Feldes ändern:
alter table personen
change personalnummer personalnummer int not null;
Eindeutigen Index hinzufügen:
alter table personen
add unique (personalnummer);
Eigenschaften der Felder kontrollieren:
show columns from personen;
Lösung zu Übung UE05
Datenbank wechseln:
use hardware;
Tabelleninhalte kontrollieren:
select * from fp;
Gegebenenfalls Tabelleninhalte ändern:
update fp
set artnummer = ...
where ...
Eigenschaften des Feldes ändern:
alter table fp
change artnummer artnummer char(20) not null;
Eindeutigen Index hinzufügen:
alter table fp
add unique (artnummer);
Eigenschaften der Felder kontrollieren:
show columns from fp;
N.5 Programmierung von MySQL-Datenbanken mit PHP  
Lösung zu Übung UF04
<html>
<body>
<?php
$db = mysql_connect();
$res = mysql_db_query("hardware",
"select * from fp");
$num = mysql_num_rows($res);
echo "$num Datensätze gefunden<br>";
for ($i=0; $i<$num; $i++)
{
$her = mysql_result($res, $i, "hersteller");
$typ = mysql_result($res, $i, "typ");
$mb = mysql_result($res, $i, "mb");
$pre = mysql_result($res, $i, "preis");
$art = mysql_result($res, $i, "artnummer");
$pro = mysql_result($res, $i, "prod");
echo "$her, $typ, $mb, $pre, $art, $pro <br>";
}
mysql_close($db);
?>
</body>
</html>
Lösung zu Übung UF04
<html>
<body>
<?php
$db = mysql_connect();
$abfr = "select * from fp where mb > 10000 and";
$abfr .= " preis < 300 order by mb desc";
$res = mysql_db_query("hardware", $abfr);
$num = mysql_num_rows($res);
echo "$num Datensätze gefunden<br>";
for ($i=0; $i<$num; $i++)
{
$her = mysql_result($res, $i, "hersteller");
$typ = mysql_result($res, $i, "typ");
$mb = mysql_result($res, $i, "mb");
$pre = mysql_result($res, $i, "preis");
$art = mysql_result($res, $i, "artnummer");
$pro = mysql_result($res, $i, "prod");
echo "$her, $typ, $mb, $pre, $art, $pro <br>";
}
mysql_close($db);
?>
</body>
</html>
Lösung zu Übung UF06
<html>
<body>
<?php
$db = mysql_connect();
$abfr = "select * from fp ";
$abfr .= " where prod >= '1998-1-1' ";
$abfr .= "and prod <= '1998-6-30' ";
$res = mysql_db_query("hardware", $abfr);
$num = mysql_num_rows($res);
echo "$num Datensätze gefunden<br>";
for ($i=0; $i<$num; $i++)
{
$her = mysql_result($res, $i, "hersteller");
$typ = mysql_result($res, $i, "typ");
$mb = mysql_result($res, $i, "mb");
$pre = mysql_result($res, $i, "preis");
$art = mysql_result($res, $i, "artnummer");
$pro = mysql_result($res, $i, "prod");
echo "$her, $typ, $mb, $pre, $art, $pro <br>";
}
mysql_close($db);
?>
</body>
</html>
Lösung zu Übung UF11, Formular
<html>
<body>
Anzeige der Festplatten aus der ausgewählten Preisgruppe:
<form action = "uf11.php" method = "post">
<input type="radio" name="pr"
value="1" checked> bis DM 200 einschl. <p>
<input type="radio" name="pr"
value="2"> ab DM 200 bis DM 270 einschl. <p>
<input type="radio" name="pr"
value="3"> ab DM 270 <p>
<input type="checkbox" name="namesort">
Ausgabe nach Hersteller-Name sortiert <p>
<input type="submit">
<input type="reset">
</form>
</body>
</html>
Lösung zu Übung UF11, Programm
<html>
<body>
<?php
$db = mysql_connect();
$sqlab = "select hersteller, typ, preis ";
$sqlab .= " from fp where ";
if ($pr==1)
$sqlab .= "preis <= 200";
else if ($pr==2)
$sqlab .= "preis > 200 and preis <= 270";
else
$sqlab .= "preis > 270";
if ($namesort)
$sqlab .= " order by hersteller";
$res = mysql_db_query("hardware", $sqlab);
$num = mysql_num_rows($res);
if ($num==0)
echo "keine passenden Datensätze gefunden";
for ($i=0; $i<$num; $i++)
{
$her = mysql_result($res, $i, "hersteller");
$typ = mysql_result($res, $i, "typ");
$pre = mysql_result($res, $i, "preis");
echo "$her, $typ, $pre <br>";
}
mysql_close($db);
?>
</body>
</html>
Lösung zu Übung UF12, Formular
<html>
<body>
Anzeige der Festplatten des ausgewählten Herstellers:
<form action = "uf12.php" method = "post">
<select name="herst">
<option value="Fujitsu" selected>
Fujitsu </option>
<option value="Quantum">
Quantum </option>
<option value="Seagate">
Seagate </option>
</select><p>
<input type="submit">
<input type="reset">
</form>
</body>
</html>
Lösung zu Übung UF12, Programm
<html>
<body>
<?php
$db = mysql_connect();
$sqlab = "select * from fp ";
$sqlab .= " where hersteller = '$herst' ";
$res = mysql_db_query("hardware", $sqlab);
$num = mysql_num_rows($res);
if ($num==0) echo "keine passenden Datensätze gefunden";
// Tabellenbeginn
echo "<table border>";
// Überschrift
echo "<tr> <td>Hersteller</td> <td>Typ</td>";
echo "<td>MB</td> <td>Preis</td>";
echo "<td>Artikelnummer</td>";
echo "<td>Datum der ersten Produktion</td> </tr>";
for ($i=0; $i<$num; $i++)
{
$her = mysql_result($res, $i, "hersteller");
$typ = mysql_result($res, $i, "typ");
$mb = mysql_result($res, $i, "mb");
$pre = mysql_result($res, $i, "preis");
$art = mysql_result($res, $i, "artnummer");
$pro = mysql_result($res, $i, "prod");
// Tabellenzeile mit -zellen
echo "<tr> <td>$her</td> <td>$typ</td>";
echo "<td>$mb</td> <td>$pre</td>";
echo "<td>$art</td> <td>$pro</td> </tr>";
}
// Tabellenende
echo "</table>";
mysql_close($db);
?>
</body>
</html>
Lösung zu Übung UF14
<html>
<head>
<?php
if ($gesendet)
{
$db = mysql_connect();
$sqlab = "insert fp";
$sqlab .= "(hersteller, typ, mb, preis,";
$sqlab .= " artnummer, prod) values ";
$sqlab .=
"('$her', '$typ', $mb, $pre, '$artn', '$prod')";
mysql_db_query("hardware", $sqlab);
$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);
}
?>
</head>
<body>
Geben Sie einen vollständigen Datensatz ein, und senden Sie das
Formular ab:
<form action = "uf14.php" method = "post">
<input name="her"> Hersteller<p>
<input name="typ"> Typ<p>
<input name="mb"> MB<p>
<input name="pre"> Preis (Nachkommastellen mit Punkt)<p>
<input name="artn"> Artikelnummer<p>
<input name="prod"> Datum der ersten Produktion
(in der Form JJJJ-MM-TT)<p>
<input type="submit" name="gesendet">
<input type="reset">
</form>
Alle Datensätze <a href="uf04.php">anzeigen</a>
</body>
</html>
Lösung zu Übung UF18, Teil A
<html>
<body>
Wählen Sie aus, welcher Datensatz geändert werden soll:<p>
<form action = "uf18b.php" method = "post">
<?php
$db = mysql_connect();
$res = mysql_db_query("hardware",
"select * from fp");
$num = mysql_num_rows($res);
// Tabellenbeginn
echo "<table border>";
// Überschrift
echo "<tr> <td>Auswahl</td> <td>Hersteller</td>";
echo "<td>Typ</td> <td>MB</td> <td>Preis</td>";
echo "<td>Artikelnummer</td>";
echo "<td>erstes Produktionsdatum</td> </tr>";
for ($i=0; $i<$num; $i++)
{
$her = mysql_result($res, $i, "hersteller");
$typ = mysql_result($res, $i, "typ");
$mb = mysql_result($res, $i, "mb");
$pre = mysql_result($res, $i, "preis");
$art = mysql_result($res, $i, "artnummer");
$pro = mysql_result($res, $i, "prod");
// Tabellenzeile mit -zellen
echo "<tr> <td><input type='radio' ";
echo " name='auswahl' value='$art'>";
echo "</td> <td>$her</td> <td>$typ</td>";
echo "<td>$mb</td> <td>$pre</td>";
echo "<td>$art</td> <td>$pro</td> </tr>";
}
// Tabellenende
echo "</table>";
mysql_close($db);
?>
<p>
<input type="submit" value="Datensatz anzeigen">
</form>
</body>
</html>
Lösung zu Übung UF18, Teil B
<html>
<body>
<?php
if ($auswahl)
{
$db = mysql_connect();
$sqlab = "select * from fp where";
$sqlab .= " artnummer = '$auswahl'";
$res = mysql_db_query("hardware", $sqlab);
$alther = mysql_result($res, 0, "hersteller");
$alttyp = mysql_result($res, 0, "typ");
$altmb = mysql_result($res, 0, "mb");
$altpre = mysql_result($res, 0, "preis");
$altpro = mysql_result($res, 0, "prod");
echo "Führen Sie die Änderungen durch,<p>";
echo "betätigen Sie anschließend den Button<p>";
echo "<form action = 'uf18c.php' ";
echo " method = 'post'>";
echo "<input name='neuher' value='$alther'>";
echo " Hersteller<p>";
echo "<input name='neutyp' value='$alttyp'>";
echo " Typ<p>";
echo "<input name='neumb' value='$altmb'>";
echo " MB<p>";
echo "<input name='neupre' value='$altpre'>";
echo " Preis<p>";
echo "<input name='neuart' value='$auswahl'>";
echo " Artikelnummer<p>";
echo "<input name='neupro' value='$altpro'>";
echo " Erstes Produktionsdatum<p>";
echo "<input type='hidden' name='oriart' ";
echo " value='$auswahl'>";
echo "<input type='submit' ";
echo " value='Änderungen in Datenbank speichern'>";
echo "<p><input type='reset'>";
echo "</form>";
mysql_close($db);
}
else
echo "Es wurde kein Datensatz ausgewählt.<p>";
?>
</body>
</html>
Lösung zu Übung UF18, Teil C
<html>
<body>
<?php
$db = mysql_connect();
$sqlab = "update fp set hersteller = '$neuher',";
$sqlab .= "typ = '$neutyp', mb = $neumb,";
$sqlab .= "preis = $neupre,";
$sqlab .= "artnummer = '$neuart'";
$sqlab .= "where artnummer = '$oriart'";
mysql_db_query("hardware", $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);
?>
Zurück zur <a href="uf18a.php">Auswahl</a>
</body>
</html>
Lösung zu Übung UF19, Teil A
<html>
<body>
Wählen Sie aus, welcher Datensatz gelöscht werden soll:<p>
<form action = "uf19b.php" method = "post">
<?php
$db = mysql_connect();
$res = mysql_db_query("hardware",
"select * from fp");
$num = mysql_num_rows($res);
// Tabellenbeginn
echo "<table border>";
// Überschrift
echo "<tr> <td>Auswahl</td> <td>Hersteller</td>";
echo "<td>Typ</td> <td>MB</td> <td>Preis</td>";
echo "<td>Artikelnummer</td>";
echo "<td>erstes Produktionsdatum</td> </tr>";
for ($i=0; $i<$num; $i++)
{
$her = mysql_result($res, $i, "hersteller");
$typ = mysql_result($res, $i, "typ");
$mb = mysql_result($res, $i, "mb");
$pre = mysql_result($res, $i, "preis");
$art = mysql_result($res, $i, "artnummer");
$pro = mysql_result($res, $i, "prod");
// Tabellenzeile mit -zellen
echo "<tr> <td><input type='radio' name='auswahl'";
echo " value='$art'></td> <td>$her</td> ";
echo "<td>$typ</td> <td>$mb</td> <td>$pre</td> ";
echo "<td>$art</td> <td>$pro</td> </tr>";
}
// Tabellenende
echo "</table>";
mysql_close($db);
?>
<p>
<input type="submit" value="Datensatz löschen">
</form>
</body>
</html>
Lösung zu Übung UF19, Teil B
<html>
<body>
<?php
if ($auswahl)
{
$db = mysql_connect();
$sqlab = "delete from fp where";
$sqlab .= " artnummer = '$auswahl'";
mysql_db_query("hardware", $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);
}
else
echo "Es wurde kein Datensatz ausgewählt<p>";
?>
Zurück zur <a href="uf19a.php">Auswahl</a>
</body>
</html>
N.6 Text-Dateien  
Lösung zu Übung UG03
<html>
<body>
<?php
$fp = fopen("ug03data.txt","r");
if ($fp)
{
echo "<table border>";
echo "<tr> <td>Nummer</td> <td>Nachname</td>";
echo "<td>Vorname</td> </tr>";
$nr = 0;
while (!feof($fp))
{
$vn = fgets($fp, 100);
$nn = fgets($fp, 100);
$nr = $nr + 1;
echo "<tr> <td>$nr</td> <td>$nn</td>";
echo "<td>$vn</td> </tr>";
}
echo "</table>";
fclose($fp);
}
else
echo "Datei wurde nicht gefunden!";
?>
</body>
</html>
Lösung zu Übung UG06
<html>
<body>
<?php
// alle Dateien öffnen
$fpdata = fopen("ug06data.txt","r");
$fpa = fopen("ug06a.txt","w");
$fpb = fopen("ug06b.txt","a");
// alle Dateien geöffnet ?
if ($fpdata && $fpa && $fpb)
{
// Zähler initialisieren
$gz = 0;
$az = 0;
$bz = 0;
// Ausgabedateien sperren
flock($fpa,2);
flock($fpb,2);
while (!feof($fpdata))
{
$gz = $gz + 1;
$nr = fgets($fpdata, 100);
$nn = fgets($fpdata, 100);
$vn = fgets($fpdata, 100);
// in erste Ausgabedatei
if ($nr<1000)
{
$az = $az + 1;
fputs ($fpa, "$nr$nn$vn");
}
// in zweite Ausgabedatei
else
{
$bz = $bz + 1;
fputs ($fpb, "$nr$nn$vn");
}
}
// Sperren aufheben
flock($fpa,3);
flock($fpb,3);
// alle Dateien schließen
fclose($fpdata);
fclose($fpa);
fclose($fpb);
// Kontrolle
echo "Es wurden $gz Datensätze gefunden,<p>";
echo "davon wurden $az Datensätze in die ";
echo "Datei ug06a.txt geschrieben<p>";
echo "und $bz Datensätze an die Datei ";
echo "ug06b.txt angehängt.";
}
else
{
echo "Eine der Dateien konnte nicht ";
echo "geöffnet werden.<p>";
}
?>
</body>
</html>

N.7 Arrays  
Lösung zu Übung UH02
<html>
<body>
<?php
$vorname = array("Peter", "Markus", "Jens",
"Julia", "Monika", "Gerd");
$alter = array(35,42,16,17,42,55);
for($i=0; $i<=5; $i = $i+1)
{
echo "$vorname[$i], $alter[$i] Jahre<p>";
}
?>
</body>
</html>
Lösung zu Übung UH04
<html>
<body>
<?php
$vorname = array("Peter", "Markus", "Jens",
"Julia", "Monika", "Gerd");
$alter = array(35,42,16,17,42,55);
$min = $alter[0];
$posmin = 0;
for($i=1; $i<=5; $i=$i+1)
{
if ($alter[$i] < $min)
{
$min = $alter[$i];
$posmin = $i;
}
}
echo "$vorname[$posmin], $min Jahre, ";
echo "ist der jüngste von allen.";
?>
</body>
</html>
Lösung zu Übung UH06
<html>
<body>
<?php
$vorname = array("Peter", "Markus", "Jens",
"Julia", "Monika", "Gerd");
$alter = array(35,42,16,17,42,55);
sort($vorname);
for($i=0; $i<=5; $i=$i+1)
echo "$vorname[$i], ";
echo "<p>";
rsort($alter);
for($i=0; $i<=5; $i=$i+1)
echo "$alter[$i], ";
?>
</body>
</html>
Lösung zu Übung UH08
<html>
<body>
<?php
$fp = fopen("uh08data.txt","r");
if ($fp)
{
// Alle Werte in ein Feld lesen
$i = 0;
while (!feof($fp))
{
$zeile = fgets($fp, 100);
$zeile = fgets($fp, 100);
$mit[$i] = doubleval($zeile);
$i = $i + 1;
}
fclose($fp);
// Anzahl feststellen
$anzahl = sizeof($mit);
// Werte zählen
$cjung = 0;
$calt = 0;
for($i=0; $i<$anzahl; $i=$i+1)
{
if ($mit[$i] < 25) $cjung = $cjung + 1;
if ($mit[$i] > 50) $calt = $calt + 1;
}
// Ausgabe
if ($anzahl > 0)
{
$anteiljung = $cjung / $anzahl * 100;
$anteilalt = $calt / $anzahl * 100;
$ausgabe = number_format($anteiljung,1);
echo "$ausgabe Prozent der Mitarbeiter ";
echo "sind jünger als 25 Jahre<p>";
$ausgabe = number_format($anteilalt,1);
echo "$ausgabe Prozent der Mitarbeiter ";
echo "sind älter als 50 Jahre";
}
else
echo "Die Datei beinhaltete keine Werte.";
}
else
echo "Datei wurde nicht gefunden.";
?>
</body>
</html>
Lösung zu Übung UH10
<html>
<body>
<?php
$age = array("Peter"=>35, "Markus"=>42,
"Jens"=>16, "Julia"=>17,
"Monika"=>42, "Gerd"=>55);
// Alle Elemente aus dem Array
while(list($vname,$lebensalter) = each($age))
echo "$vname, $lebensalter Jahre<p>";
?>
</body>
</html>
Lösung zu Übung UH13
<html>
<body>
<?php
// Die Informationen werden aus der Datenbank geholt
$db = mysql_connect();
$res = mysql_db_query("hardware", "select * from fp");
mysql_close($db);
// Die Datensätze werden einzeln verarbeitet
echo "<TABLE BORDER>";
echo "<TR> <TD><B>Artikelnummer</B></TD>
<TD><B>MByte</B></TD> <TD><B>Preis</B></TD>
<TD><B>MByte/DM</B></TD> </TR>";
while($zeile = mysql_fetch_array($res))
{
$erg = $zeile["mb"] / $zeile["preis"];
echo "<TR><TD>" . $zeile["artnummer"] .
"</TD><TD>" . $zeile["mb"] . "</TD><TD>" .
$zeile["preis"] . "</TD><TD>$erg</TD></TR>";
}
echo "</TABLE>";
?>
</body>
</html>
Lösung zu Übung UH15
<html>
<body>
<?php
$fp = array(array("Quantum", "Fireball CX",
6400, 215, "HDA-208"),
array("Quantum", "Fireball Plus",
9100, 269, "HDA-163"),
array("Fujitsu", "MPE 3136",
13600, 275, "HDA-171"),
array("Seagate", "310232A",
10200, 245, "HDA-144"));
for($i=0; $i<4; $i = $i+1)
{
for($k=0; $k<5; $k = $k+1)
{
echo $fp[$i][$k] . " ";
}
echo "<p>";
}
?>
</body>
</html>
Lösung zu Übung UH17
<html>
<body>
<?php
$fp = array(array("Hersteller"=>"Quantum",
"Typ"=>"Fireball CX",
"MB"=>6400, "Preis"=>215,
"Artikelnummer"=>"HDA-208"),
array("Hersteller"=>"Quantum",
"Typ"=>"Fireball Plus",
"MB"=>9100, "Preis"=>269,
"Artikelnummer"=>"HDA-163"),
array("Hersteller"=>"Fujitsu",
"Typ"=>"MPE 3136",
"MB"=>13600, "Preis"=>275,
"Artikelnummer"=>"HDA-171"),
array("Hersteller"=>"Seagate",
"Typ"=>"310232A",
"MB"=>10200, "Preis"=>245,
"Artikelnummer"=>"HDA-144"));
for($i=0; $i<4; $i=$i+1)
{
while(list($name, $wert) = each($fp[$i]))
{
echo "$wert ";
}
echo "<p>";
}
?>
</body>
</html>
Lösung zu Übung UH19
<html>
<body>
<?php
// Die Informationen werden aus der Datenbank geholt
$db = mysql_connect();
$res = mysql_db_query("hardware", "select * from fp");
mysql_close($db);
// Die Datensätze werden einzeln gelesen
while($temp = mysql_fetch_array($res))
{
// Der Key für den zweidim. Array wird ermittelt
$ax = $temp["artnummer"];
// Die Informationen aus dem Datensatz werden über
den Key in dem zweidim. Feld gespeichert
$tab[$ax]["hersteller"] = $temp["hersteller"];
$tab[$ax]["typ"] = $temp["typ"];
$tab[$ax]["mb"] = $temp["mb"];
$tab[$ax]["preis"] = $temp["preis"];
$tab[$ax]["prod"] = $temp["prod"];
}
echo "<TABLE BORDER>";
echo "<TR> <TD><B>Artikelnummer</B></TD>
<TD><B>MByte</B></TD> <TD><B>Preis</B></TD>
<TD><B>MByte/DM</B></TD> </TR>";
while(list($dsname,$dswert) = each($tab))
{
$tab[$dsname]["plv"] =
$tab[$dsname]["mb"] / $tab[$dsname]["preis"];
echo "<TR><TD>" . $dsname . "</TD><TD>" .
$tab[$dsname]["mb"] . "</TD><TD>" .
$tab[$dsname]["preis"] . "</TD><TD>" .
$tab[$dsname]["plv"] . "</TD></TR>";
}
echo "</TABLE>";
?>
</body>
</html>

N.8 Mathematische Funktionen  
Lösung zu Übung UI08
<html>
<body>
<TABLE BORDER>
<TR>
<TD>Wert</TD>
<TD>Bogenmaß</TD>
<TD>Sin</TD>
<TD>Cos</TD>
<TD>Tan</TD>
<TD>Wurzel</TD>
<TD>Quadrat</TD>
<TD>Nat. Log.</TD>
<TD>10er-Log.</TD>
<TD>e hoch</TD>
<TD>Binär</TD>
<TD>Hexadez.</TD>
</TR>
<?php
for ($w=5; $w<=85; $w=$w+5)
{
$wb = $w / 180 * M_PI;
$wbaus = number_format($wb,3,",",".");
$sinus = number_format(sin($wb),3,",",".");
$cosin = number_format(cos($wb),3,",",".");
$tang = number_format(tan($wb),3,",",".");
$wurz = number_format(sqrt($w),3,",",".");
$quad = pow($w,2);
$logn = number_format(log($w),3,",",".");
$log10 = number_format(log10($w),3,",",".");
$ehoch = number_format(exp($w/10),3,",",".");
$bin = decbin($w);
$hexa = dechex($w);
echo "<TR><TD>$w</TD><TD>$wbaus</TD>";
echo "<TD>$sinus</TD><TD>$cosin</TD>";
echo "<TD>$tang</TD><TD>$wurz</TD>";
echo "<TD>$quad</TD><TD>$logn</TD>";
echo "<TD>$log10</TD><TD>$ehoch</TD>";
echo "<TD>$bin</TD><TD>$hexa</TD></TR>";
}
?>
</TABLE>
</body>
</html>
Lösung zu Übung UI09, Formular
<html>
<body>
Tragen Sie Betrag, Laufzeit und Zinssatz Ihrer Anlage
ein, und senden Sie das Formular ab.
<form action = "ui09.php" method = "post">
<input name="betrag" size="15"> Betrag in DM<p>
<input name="laufzeit" size="15"> Laufzeit in Jahren<p>
<input name="zinssatz" size="15"> Zinssatz in Prozent<p>
<input type="submit" value="Absenden"><p>
</form>
</body>
</html>
Lösung zu Übung UI09, Programm
<html>
<body>
<?php
$erg = $betrag * pow(1 + $zinssatz/100, $laufzeit);
$erg = number_format($erg,2,",",".");
echo "Bei einem angelegten Betrag von $betrag DM,";
echo " einer Laufzeit von $laufzeit Jahr(en) und";
echo " einem Zinssatz von $zinssatz % ergibt sich";
echo " ein End-Betrag von $erg DM.";
?>
</body>
</html>
N.9 Zeichenketten-Funktionen  
Lösung zu Übung UJ08
<html>
<body>
<?php
$fp = fopen("uj07data.txt","r");
if ($fp)
{
// Erste Zeile lesen
$zeile = fgets($fp, 100);
// Länge feststellen
$lg = strlen($zeile);
// Jedes Zeichen einzeln umwandeln
for($i=0; $i<$lg; $i++)
{
$char = substr($zeile,$i,1);
$code = ord($char);
$newcode = $code – 1;
$newchar = chr($newcode);
echo $newchar;
}
fclose($fp);
}
else
echo "Datei wurde nicht gefunden.";
?>
</body>
</html>
|