Hoofdstuk 16 en 19 PHP en MYSQL wamp, server-side/client side PHP, de basis if-opdracht, herhaling formulier-verwerking met bestanden werken MySQL LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Wamp PHP Open source Brede ondersteuning Gebruik bijvoorbeeld WAMP MySQL (databases) Open source Beperkte functionaliteiten Extreem snel bij kleine tot middelgrote databases Windows Apache Mysql Apache (webserver) Open source Snel en stabiel PHP LauwersCollege Buitenpost Informatica
Client-side scripttaal client-sided wordt verwerkt door de browser client-sided is statisch client-sided heeft beperkingen vb: HTML, CSS, JavaScript, Applets LauwersCollege Buitenpost Informatica
Javascript: client-side scripttaal computer van de gebruiker computer van de provider html-documenten web server verzoek voor een pagina browser HTML pagina internet LauwersCollege Buitenpost Informatica
Server-side scripttaal server-sided wordt verwerkt op de web server server-sided is dynamisch server-sided kan praktisch alles regelen vb: PHP, PERL, ASP, Python LauwersCollege Buitenpost Informatica
PHP: server-side scripttaal computer van de gebruiker computer van de provider php-documenten web server machine scripting verzoek voor een pagina browser database HTML pagina internet LauwersCollege Buitenpost Informatica
Het eerste php-document <html> <head> <title>mijn 1e php-bestand </title></head> <body> <?php echo "mijn 1e PHP-document\n"; echo date(); ?> </body></html> <html> <head> <title>mijn 1e php-bestand </title></head> <body> mijn 1e PHP-document 26-08-2010 </body></html> eerste_php_bestand.php hier begint de php-code hier eindigt de php-code LauwersCollege Buitenpost Informatica
Het eerste php-document (2) een PHP bestand heeft de extensie .php PHP code start je met <?php PHP code eindigt met ?> met echo druk je iets af; kan ook met print (....); \n zorgt er voor dat er in de html-code op een nieuwe regel wordt overgegaan met echo date(); wordt de datum afgedrukt Elke opdracht-regel sluit je af met een ; // commentaar kan na een dubbele slash /* meer-regelig commentaar kan op deze manier, dus tussen slash+spatie */ LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Variabelen Variabelen worden gebruikt om gegevens tijdelijk op te slaan. N.B: PHP is hoofdlettergevoelig! namen van variabelen beginnen met een $ namen mogen letters, cijfers of '_' bevatten variabelen hoef je niet te declareren in PHP Voorbeelden: <?php $naam = "van der Beek"; // een string $aantal = 60; // een integer $getal = 1.23; // een double $fout = false; // een boolean ?> LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Ontsnappingstekens De \ (Backslash) wordt gebruikt als zogenaamd ontsnappingsteken. Dat moet je voor bepaalde tekens zetten om verwarring te voorkomen. Als je in een echo-opdracht bijvoorbeeld het dollarteken $ ergens wilt gebruiken, dan moet je \$ invoeren, anders wordt er gedacht dat het om een variabele gaat. Ook als je in een echo-opdracht aanhalingstekens " of ' wilt laten afdrukken, dan moet je ze escapen (d.w.z.: backslash ervoor) En als je de backslash wilt afdrukken, dan moet je er een extra backslash voor zetten. De \ wordt ook gebruikt voor speciale tekens, bijvoorbeeld \n is het teken voor een nieuwe regel, en \t voor een tab-teken. Voorbeelden: <?php echo 'Hij heet David \'O Connor'; echo 'Dit kostte \$5,-'; ?> LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Operatoren operatoren voor optellen, aftrekken, vermenigvuldigen en delen zijn +, -, * en /, zoals je gewend bent string operatoren kun je met een . aan elkaar plakken Als $fruit = 'appel'; en $kleur = 'rode'; dan wordt er met echo $fruit . $kleur; afgedrukt: rode appel vergelijkings operatoren: if ($a == 3) ....... als $a gelijk is aan 3 dan ........ if ($a != 5) ....... als $a ongelijk is aan 5 dan ........ if ($a <= $b) ....... als $a kleiner of gelijk is aan $b dan .... Logische operatoren zijn and, &&(=en), or, ||(=of), !(=niet) if ($a == 1 && $b2 <= 5 ) ......... LauwersCollege Buitenpost Informatica
Voorwaardelijke opdracht <html><head><title>if-opdracht</title></head> <body> <?php $dagnummer = date("w"); if ($dagnummer == 2) { echo "Vandaag is het dinsdag!"; } else { echo "Vandaag is het geen dinsdag"; } ?> </body></html> De if-opdracht controleert de waarde van $dagnummer (date("w") 0=zondag, 1=maandag, … 6=zaterdag) Als het gelijk aan 2 is zal alles tussen de eerste { } worden afgedrukt. En als het niet gelijk aan 2 is zal alles tussen de tweede { } worden afgedrukt. LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica elseif wanneer er meer mogelijkheden dan twee zijn kan ook deze constructie gebruikt worden: $dagnummer = date("w"); if ($dagnummer == 2) { echo "Vandaag is het dinsdag!"; } elseif ($dagnummer == 3) { echo "Vandaag is het woensdag!"; } else { echo "Vandaag is het geen dinsdag en geen woensdag"; } LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Herhaling m.b.v. for <html><body> <?php $woord = "Hallo"; for($x=0 ; $x<8 ; $x++) { print("$woord<br>");} ?> </body><html> <html><body> Hallo<br> Hallo<br> Hallo<br> Hallo<br> Hallo<br> Hallo<br> Hallo<br> Hallo<br> </body><html> LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Herhaling m.b.v. while while (voorwaarde) { opdrachten; } of zó: do { opdrachten; } while (voorwaarde) LauwersCollege Buitenpost Informatica
Een tabel maken m.b.v. een for-lus <html><body> <?php print("<table border=1> \n"); for ($x=1 ; $x<5 ; $x++) { print("<tr> \n"); for($y=1 ; $y<4 ; $y++) print("<td>$x $y</td> \n"); } print("</tr> "); print("</table> \n"); ?> </body></html> <html><body> <table border=1> <tr> <td>1 1</td> <td>1 2</td> <td>1 3</td> </tr><tr> <td>2 1</td> <td>2 2</td> <td>2 3</td> <td>3 1</td> <td>3 2</td> <td>3 3</td> <td>4 1</td> <td>4 2</td> <td>4 3</td> </tr><tr> <td>5 1</td> <td>5 2</td> <td>5 3</td> </tr></table> </body></html> LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Een formulier We maken eerst een html-document met een formulier (dat hoeft dus geen php-document te zijn) formulier.htm <html><body> <form action="verwerkformulier.php" method="post"> voornaam: <input type="text" name="voornaam"><br> achternaam: <input type="text" name="achternaam"><br> <input type="submit" value="verzenden"> </form> </body></html> LauwersCollege Buitenpost Informatica
Nu naar het verwerkings-script LauwersCollege Buitenpost Informatica Als het formulier is ingevuld, en er wordt op de knop met "verzenden" geklikt dan wordt er een verzoek naar de server gestuurd om het script "verwerkformulier.php" te verwerken en te versturen (vanwege action="verwerkformulier.php" in de form-tag) Bovendien wordt de invoer in het formulier meegestuurd, en als in de form-tag method="post" was toegevoegd dan komen de invoergegevens beschikbaar in de variabelen $_POST['naam van het invoervenster'] LauwersCollege Buitenpost Informatica
Verwerking van het formulier LauwersCollege Buitenpost Informatica als de naam van het tekstvenster voornaam is komt de invoer beschikbaar als $_POST['voornaam'] Er moet een php-document zijn, dat het formulier kan verwerken. <html><body> Je hebt de volgende dingen ingevuld:<br><br> <?php $vn = $_POST['voornaam']; $an = $_POST['achternaam']; echo "Voornaam: $vn<br>\n"; echo "Achternaam: $an<br>\n"; ?> </body></html> als de naam van het tekstvenster achternaam is komt de invoer beschikbaar als $_POST['achternaam'] verwerkformulier.php LauwersCollege Buitenpost Informatica
De gegevens vastleggen in bestand Als je de ingevoerde gegevens uit het vorige formulier wilt vastleggen in een bestand, dan moet je een leeg bestand met bijv. de naam "nawgegevens.txt" uploaden naar de web-server, dan dan moet je de bestands-permissies van die file wijzigen in 777 (rwx voor iedereen) om er voor te zorgen dat iedereen dat bestand kan lezen en er voor kan zorgen dat er iets aan dat bestand wordt toegevoegd. Het bijbehorende php-script, dat er voor zorgt dat de gegevens worden vastgelegd in een bestand, zie je op de volgende dia LauwersCollege Buitenpost Informatica
Invoergegevens formulier vastleggen het bestand nawgegevens.txt wordt geopend, om er gegevens aan toe te kunnen voegen (a van append) Het php-document zijn, dat het formulier verwerkt, kan dan als volgt zijn: <html><body> Je hebt de volgende dingen ingevuld:<br><br> <?php $vn = $_POST['voornaam']; echo "$vn<br>"; $an = $_POST['achternaam']; echo "$an<br>"; $f = fopen("nawgegevens.txt","a"); if ($f) { fwrite($f,"$vn\n"); fwrite($f,"$an\n"); fclose($f); echo "de gegevens zijn vastgelegd<br>"; } ?> </body></html> de voornaam ($vn) wordt aan het bestand toegevoegd, en daarna de achternaam ($an) op een nieuwe regel (vanwege \n) verwerkformulier.php LauwersCollege Buitenpost Informatica
Inlezen en tonen van de gegevens het bestand nawgegevens.txt wordt geopend, om er gegevens uit te kunnen lezen (r van read) Inlezen en tonen van de gegevens Onderstaand php-document leest de gegevens in en toont ze. <html><body> <?php $f = fopen("nawgegevens.txt","r"); if ($f) { $b=file($bnaam); for ($i=0;$i<count($b);$i++) { print("$b[$i]<br>"); } fclose($f); ?> </body></html> de regels van het bestand worden ingelezen en in een array ($b) gezet) de i-de regel van het array, dus van het bestand, wordt afgedrukt verwerkformulier.php LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica SQL en MySQL Nu gaan we met behulp van een script gegevens uit een (MySQL) database halen. We gaan er vanuit dat er een database met de naam "bibliotheek" aanwezig is, en dat één van de tabellen de naam "leerlingen" heeft. Zo'n database kan m.b.v. phpMyAdmin op de server worden geïnstalleerd. We gaan er verder vanuit dat de naam van de host "localhost" is, dat de gebruikersnaam "leerling" is, en het wachtwoord "lc2010" Het php-script om met behulp van een sql-query gegevens uit de database te tonen zie je op de volgende dia LauwersCollege Buitenpost Informatica
Het php-script om een query uit te voeren <html><body> <?php $verbinding=mysql_connect("localhost","leerling","lc2010"); mysql_select_db("bibliotheek",$verbinding); $query = "SELECT * FROM leerlingen"; $result = mysql_query($query); $aantalrijen = mysql_num_rows($result); $aantalvelden = mysql_num_fields($result); print("<table border = 1> \n"); for ($x=0 ; $x<$aantalrijen ; $x++) { print("<tr> \n"); $rij = mysql_fetch_array($result); for ($y=0 ; $y<$aantalvelden ; $y++) { print("<td> $rij[$y] </td> \n"); } print("</tr> \n"); } print("</table> \n"); ?> </body></html> Er wordt een verbinding gemaakt met het database-programma Er wordt een database met de naam: "bibliotheek" geselecteerd LauwersCollege Buitenpost Informatica
Het php-script om een query uit te voeren (2) <html><body> <?php $verbinding=mysql_connect("localhost","leerling","lc2010"); mysql_select_db("bibliotheek",$verbinding); $query = "SELECT * FROM leerlingen"; $result = mysql_query($query); $aantalrijen = mysql_num_rows($result); $aantalvelden = mysql_num_fields($result); print("<table border = 1> \n"); for ($x=0 ; $x<$aantalrijen ; $x++) { print("<tr> \n"); $rij = mysql_fetch_array($result); for ($y=0 ; $y<$aantalvelden ; $y++) { print("<td> $rij[$y] </td> \n"); } print("</tr> \n"); } print("</table> \n"); ?> </body></html> De query wordt uitgevoerd en het resultaat wordt opgeslagen in de variabele $result Het aantal rijen en het aantal velden van het resultaat wordt vastgelegd in de variabelen $aantalrijen en $aantalvelden LauwersCollege Buitenpost Informatica
Het php-script om een query uit te voeren (3) <html><body> <?php $verbinding=mysql_connect("localhost","leerling","lc2010"); mysql_select_db("bibliotheek",$verbinding); $query = "SELECT * FROM leerlingen"; $result = mysql_query($query); $aantalrijen = mysql_num_rows($result); $aantalvelden = mysql_num_fields($result); print("<table border = 1> \n"); for ($x=0 ; $x<$aantalrijen ; $x++) { print("<tr> \n"); $rij = mysql_fetch_array($result); for ($y=0 ; $y<$aantalvelden ; $y++) { print("<td> $rij[$y] </td> \n"); } print("</tr> \n"); } print("</table> \n"); ?> </body></html> De records worden opgevraagd en weergegeven in een HTML-tabel LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica Toevoegen met SQL We kunnen niet alleen gegevens opvragen uit een database, we kunnen ook gegevens wijzigen, verwijderen en toevoegen. We gaan er weer vanuit dat er een database met de naam "bibliotheek" aanwezig is, en dat er een tabel "leerlingen" is. We gaan er verder vanuit dat de naam van de host "localhost" is, dat de gebruikersnaam "leerling" is, en het wachtwoord "lc2010" We moeten eerst een formulier hebben waarin de toe te voegen gegevens ingevoerd kunnen worden. En dan moet er een php-script zijn, die de gegevens uit dat formulier verwerkt. LauwersCollege Buitenpost Informatica
Een formulier om gegevens toe te voegen <html> <body> <form action="voegtoe.php" method="post"> <input type="text" name="voornaam" value=""> < input type="text" name =”achternaam" value =""> <input type=submit value="Verzend"> </form> </body> </html> LauwersCollege Buitenpost Informatica
Het php-script om gegevens toe te voegen Einde Er wordt een query gemaakt die de nieuwe gegevens invoert <html> <body> <?php $verbinding=mysql_connect("localhost","leerling","lc2010"); mysql_select_db("bibliotheek",$verbinding); $query = "INSERT INTO leden(voornaam,achternaam) VALUES('$voornaam','$achternaam')"; $result = mysql_query($query); ?> De gegevens zijn toegevoegd aan de database. </body> </html> De query wordt uitgevoerd. voegtoe.php Einde LauwersCollege Buitenpost Informatica