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ä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 );