PHP-Übung - M. Wilhelm

Transcrição

PHP-Übung - M. Wilhelm
PHP-Übung
1) Einfache Arrays:
Felder dienen dazu, Daten eines Typs in einer Variablen zu speichern:
$mitarbeiter = array("Mueller", "Schulze", "Meier", "Gates");
$wochentage = array("Sonntag","Montag","Dienstag",
"Mittwoch","Donnerstag","Freitag","Samstag");
Der Zugriff erfolgt wie in Java:
echo $wochentage[1];
echo $wochentage[3];
Ausgabe der Länge, nicht OOP
echo count($mitarbeiter);
Ausgabe mit einer For-Schleife
echo "For-Schleife: <br>";
for($i=0; $i < count($mitarbeiter); $i++)
{
echo $mitarbeiter[$i]."<br>";
}
Ausgabe mit einer Foreach-Schleife
echo "Foreach-Schleife: <br>";
foreach($mitarbeiter as $name)
{
echo $name."<br>";
}
Sortieren:
//Array sortieren
asort($mitarbeiter);
bzw.
arsort($mitarbeiter);
// Aufsteigend
// Absteigend
Aufgabe:
•
•
•
Definieren ein Array mit beliebigen Zahlen
Ausgabe mittels einer foreach_Schleife
Bestimmen und Ausgabe des Mittelwerts
2) Assoziative Arrays:
Ein assoziatives Array speichert neben dem datenwert noch einen Schlüssel.
PHP übernimmt nun die Speicherung des Wertes. Das heißt, man weiß nicht, an welchem Platz PHP dieser
Wert gespeichert hat. Um dennoch auf den Wert zugreifen zu können, benutzt man den Schlüssel. Man kennt
diese Speicherung auch unter dem Begriff Hashtable.
Beispiel:
$wochentage = array(
"so" => "Sonntag",
"mo" => "Montag",
"di" => "Dienstag",
"mi" => "Mittwoch",
"do" => "Donnerstag",
"fr" => "Freitag",
"sa" => "Samstag");
Ausgabe eines Wertes:
echo $wochentage["mo"];
echo $wochentage["fr"];
echo $wochentage["don"];
Ausgabe in einer Schleife:
foreach($wochentage as $wo=>$tag){
echo "$wo heisst $tag<br/>";
}
Abfrage, ob ein Wert vorhanden ist (siehe Checkbox)
if (!array_key_exists("don",$wochentage))
echo "don ist kein Tag<br>";
Aufgabe:
•
•
Speichern Sie die Farben in ein assoziatives Array
Bestimmen Sie die Farbe einer Banane
Key
Kirschen
Melonen
Bananen
Äpfel
Wert
„Rot“
„Grün“
„Gelb“
„Grün und rot“
3) Explode
gegeben ist folgender String:
$sValue = "Herr;Meier;wohnt;in;Wernigerode";
Gesucht sind alle Elemente, wenn nach dem Semikolon gesplittet wird. In Java gibt es dafür die Funktion split.
In PHP ist es explode.
$sValue = "Herr;Meier;wohnt;in;Wernigerode";
$ABC = explode(";", $sValue );
echo "Ausgabe mittels foreach<br />";
foreach ($ABC as $abc) {
echo "$abc<br />";
}
echo "<br />";
echo "Das dritte Element: " . $ABC[3];
4) Parameterübergabe
Aus Formularen werden bei der „GET-Methode“ die Parameter im Aufruf übergeben.
Diesen String kann man aus dem Server holen:
$param = $_SERVER['QUERY_STRING'];
echo "Parameter: $param<br />";
Aufgabe:
• Schreiben Sie ein PHP-Skript, mit dem obigen Quellcode
• Testen Sie IHR Programm mit folgenden Parametern (ab ?)
http://mwilhelm.hs-harz.de/php/php_bsp4.php?abcde
http://mwilhelm.hs-harz.de/php/php_bsp4.php?value=1&w=abc
http://mwilhelm.hs-harz.de/php/php_bsp4.php?Feiertag=Vatertag&Aktion=Lernen
5) Auswerten der Parameter
Mit der Funktion „explode“ kann man nun die „matrix“ der Parameter trennen:
• Trennen nach dem Ampersand (&)
• Damit existieren n-Wertepaar
• Trennen nach dem Ampersand (=)
• Damit hat man n Schlüssel und n-Werte, die man in einem assoziativen Array speichert
Ausgangswert des Parameters: value=1&w=abc
Ermitteln mit :
$param = $_SERVER['QUERY_STRING'];
Trennen der Wertepaare:
$paramwerte = explode("&",$param); // nun array
Trennen der Keys und Werte:
$params=array(); // speichert alle Wertepaare
foreach ($paramwerte as $pw) {
$kv_array = explode("=",$pw); // trenne abc=123
$params[ $kv_array[0] ] = $kv_array[1]; // ab ins Array
}
Ausgabe:
foreach($params as $key=>$value){
echo "$key hat den Wert $value<br/>";
}
// value=1&w=abc
Vollständiger Quellcode von „php_bsp4.php“:
// value=1&w=abc
echo "<br />";
$VARS_COUNT=0;
echo "Ausgabe des Strings:<br />";
$param = $_SERVER['QUERY_STRING'];
echo "Parameter: ||$param||<br />";
if (strlen($param)>0) {
echo "<br />";
echo "Trennen der Wertepaare:<br />";
$paramwerte = explode("&",$param); // nun array
foreach ($paramwerte as $pw) {
print "pw: $pw <br />";
}
echo "<br />";
echo "Trennen der Keys und Werte<br />";
echo "Eintragen in ein Array<br />";
// nun trennen der Einzelwerte nach key und wert
$params=array(); // speichert alle Wertepaare
foreach ($paramwerte as $pw) {
$VARS_COUNT++;
$kv_array = explode("=",$pw); // trenne abc=123
$params[ $kv_array[0] ] = $kv_array[1];
// Alternativ auch list($key,$value)
echo "Key: $kv_array[0] Wert: $kv_array[1]<br />";
}
echo "<br />";
echo "Ausgabe der Wertepaare:<br />";
foreach($params as $key=>$value){
echo "$key hat den Wert $value<br/>";
}
}
if ($VARS_COUNT == 0){
echo "<p>Es wurden keine Parameter übertragen.</p>";
}
else {
echo "<p>Es wurden $VARS_COUNT Parameter übertragen.</p>";
}
?>
5) Formulare
Mit der Abfrage der Parameter kann man nun Seiten mit Formularen abprüfen:
Als erstes wird ein einfaches Formular mit einer Textzeile erstellt (bsp5xhtml):
Inhalt:
<form method="get" action="http://mwilhelm.hs-harz.de/php/php_bsp4.php" >
Bitte Nachnamen eintragen
<input type="text" name="nachname" value="Meier" size="12"/>
<p>
<input type="submit" value="senden" />
Das Script ruft nun das 4. Beispiel auf!
Als nächstes wird eine ComboBox eingebaut (bsp6xhtml:
<select name="obst" >
<option value="pf"> Pfirsich </option >
<option selected="selected" value="ap"> Apfel </option >
<option value="or"> Orange </option >
<option value="ba"> Banane, gelb </option >
</select>
Neu ist, dass in den Options-Tag nun auch noch ein Attribut „value“ eingefügt wurde. Dieses ist sinnvoll, um
kürzere Schlüsselwörter zu erhalten
Ergebnis:
Das dritte Beispiel benutzt nun eine Radiobutton (bsp7xhtml)
<input
<input
<input
<input
type="radio"
type="radio"
type="radio"
type="radio"
name="obst"
name="obst"
name="obst"
name="obst"
value="pf" checked="checked"/> Pfirsich <br />
value="ap" /> Apfel <br />
value="or" /> Orange <br />
value="ba"/> Banane grün <br />
In den Radiobuttons gibt es wieder das Attribut „value“. Dieses ist sinnvoll, um kürzere Schlüsselwörter zu
erhalten
Ergebnis:
Als letzten Punkt wird eine Checkbox eingebaut (bsp8.xhtml)
<input type="checkbox" name="obst" value="gesund" /> Obst ist gesund<br />
geetzter Wert:
Checkbox nicht gesetzt:
Man beachte, dass bei einer Checkbox nur dann ein Wert gesendet wird, wenn dieser gesetzt ist.
Deshalb benötigt man die Funktion “array_key_exists“:
if (!array_key_exists("obst",$params)) {
echo "Checkbox wurde nicht gesetzt<br>";
}
1. Aufgabe
Erstellen Sie eine HTML-Seite mit Formularen, die die Auswahl eines Mittagsessen darstellt. Mit dem Schalter
„submit“ wird auf eine PHP-Seite aufgerufen und ausgewertet.
Formulare:
•
Eingabefeld für den Bestellnamen
•
Vorspeise mit einer ComboBox
value
salat:
toast
tomate
bier
•
Hauptgericht ausw&#228;hlen mit Radiobuttons
name="hauptspeise
value
eintopf
curry
nudeln
gans
•
Anzeigetext
Salat, frisch aus Norddeutschland
Hawaii-Toast
Tomatensuppen mit OHEC
Vatertagsbier
Anzeigetext
Gemüse-Eintopf
Currywurst mit Pommes-Frites
Nudeln
Gänsebraten
Nachspeise eintragen, freiwählbar mit einer Editorzeile
name="nachspeise" value="Eis"
Parameter: ?bestname=Schmidt&vorspeise=bier&hauptspeise=nudeln&nachspeise=Milch
2. Aufgabe
Erstellen Sie eine HTML-Seite mit Formularen, die einen hochwertigen Taschenrechner simuliert. Mit dem
Schalter „submit“ wird auf eine PHP-Seite aufgerufen und ausgewertet.
Formulare:
•
Eingabefeld für die erste Zahl
•
Eingabefeld für die zweite Zahl
•
Submit ruft eine PHP-Seite auf, die die Summe ausrechnet und ausgibt
•
Alle Eingabewerte sollen aber auf numerische Gültigkeit geprüft werden
•
Beide Werte müssen größer 2 sein
Funktionen:
Abfrage, ob ein String numerisch ist:
if (is_numeric ( $szahl1 ) {
}
Umwandlung eines Strings in ein int:
$zahl1 = intval ( $szahl1 );

Documentos relacionados