- · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een...

54
<? Basiscursus PHP ?> Samenstelling: Eddy Krishnadath

Transcript of - · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een...

Page 1: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

<? Basiscursus PHP

?>

Samenstelling: Eddy Krishnadath

Page 2: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

ejk2002

� Ekrishnadath Amsterdam 2002

Page 3: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

ejk2002

Inhoud 1. Introductie 1

Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP

2. Integratie met HTML 3 3. Instructiescheiding 4 4. Commentaarregels 5 5. Gegevenstypen 6

Integers Floating point Strings Objecten

6. Variabelen 10 7. Operatoren 11

Rekenkundige operatoren Toewijzing Vergelijking Incrementele/decrementele operatoren Logische operatoren Voorrangsregels

8. Functies 14 9. Classes 15 10. Controlestructuren 16

IF ELSE ELSEIF WHILE DO … WHILE FOR SWITCH

11. Datum en Tijd 22 Time Date Mktime

Page 4: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

ejk2002

12. Bestandsmanipulatie 24 File_exists Readfile Fopen Fclose Fgets Fputs

13. Array Functies 27 Count In_array Array_slice Array_merge Array_rand Array_push

14. Formulierverwerking 30 15. Database Connectiviteit 33 15.1 ODBC 33

odbc_connect odbcd_close en odbc_close_all odbc_exec odbc_result_all odbc_num_rows odbc_fetch_rows odbc_num_fields odbc_result odbc_field_name

15.2 MySQL 33 mysql_connect mysql_select_db mysql_db_query Tabellen weergeven

16. Diverse Functies 40

Include en require Cookies Sessions Rand Header Empty en isset Extra string functies

17. Regular Expressions 45

Page 5: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 1

ejk2002

1. Introductie

Wat is PHP PHP ( "PHP: Hypertext Preprocessor") is een serverside HTML-embedded scripting taal. Dat was een simpel antwoord, maar wat wordt er mee bedoeld? PHP is een scripting taal waarmee HTML-pagina’s kunnen worden bewerkt en ver-werkt. In tegenstelling tot scripting talen als javascript en VB-script, wordt PHP niet afgehandeld door de browser van de client, maar door de webserver zelf. De moge-lijkheden van PHP zijn dan ook eerder te vergelijken met CGI-scripts en andere ser-verside applicaties, maar dan wel met het voordeel dat ze net zo eenvoudig kunnen worden aangemaakt als een clientside script. Een zeer eenvoudig PHP-script kan er als volgt uitzien. <html> <head> <title>Voorbeeld</title> </head> <body> <?php echo "Hallo, ik ben een PHP script!"; ?> </body> </html> voorbeeld 1 Zie je hoe verschillend dit is van een CGI script geschreven in andere talen zoals Perl of C -- in plaats van een programma te schrijven met veel commando's om HTML te laten zien, kun je een HTML script schrijven met ingebouwde code die iets doen (in dit geval een stuk tekst laten zien). De PHP code is omgeven door speciale start en stop tags die het mogelijk maken tussen normale mode en PHP mode over te stappen. Wat PHP onderscheid van client-side talen zoals Javascript is dat de code op de server wordt uitgevoerd. Als een gelijksoortig script zoals het hierboven staande voorbeeld wordt gebruikt, zal de browser de uitkomst van het script ontvangen en zal op geen enkele manier kunnen achterhalen wat de onderliggende code is. Het is zelfs mogelijk om alle HTML bestanden op jouw website te laten parsen door PHP, en op geen enkele manier zullen gebruikers merken dat er ook maar iets gaande is.

Welke mogelijkheden heeft PHP Als basis kan PHP alles doen wat elk ander CGI script kan doen, zoals het ophalen van formuliergegevens, het genereren van dynamische pagina's of het sturen en ont-vangen van cookies.

Page 6: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 2 Basiscursus PHP

ejk2002

Waarschijnlijk is de sterkste kant van PHP dat het ondersteuning biedt voor een groot scala aan databases. Het schrijven van een database gekoppelde web pa-ge is ongelooflijk simpel. De volgende databases worden ondersteund:

Adabas D Ingres Oracle (OCI7 and OCI8) dBase InterBase Ovrimos Empress FrontBase PostgreSQL FilePro (read-only) mSQL Solid Hyperwave Direct MS-SQL Sybase IBM DB2 MySQL Velocis Informix ODBC Unix dbm

PHP bied ook ondersteuning voor het communiceren met andere services als IMAP, SNMP, NNTP, POP3, HTTP en talloze andere. Het is ook mogelijk om netwerk soc-kets te gebruiken en te communiceren met andere protocollen.

Een korte geschiedenis van PHP PHP is bedacht ongeveer in de herst van 1994 door Rasmus Lerdorf. Vroegere niet uitgebrachte versies werden alleen op zijn homepage gebruikt om te zien wie zijn C.V. bekeek. De eerste versie die gebruikt werd door anderen kwam vroeg in 1995 uit en was bekend als de Personal Home Page Tools. Het bestond uit een erg simpe-le parser die alleen een aantal erg simpele macro’s kende en een aantal utilities die normaal waren voor home pages in die tijd: Een gastenboek, een tellertje en wat an-dere dingen. De parser is herschreven in midden-1995 en werd genoemd PHP/FI Versie 2. Dit "FI" kwam van een ander pakket dat Rasmus had geschreven welke HTML form gegevens kon verwerken. Hij combineerde de Personal Home Page tools scripts met de Form Interpreter en voegde mSQL support toe. PHP/FI was geboren. PHP/FI groeide ongelooflijk snel en een groot aantal personen stuurde eigen verbe-teringen in. Het is erg moeilijk om harde statistieken te geven, maar er is geschat dat eind 1996 PHP/FI in gebruik was op minimaal 15000 web sites over de hele wereld. In midden-1997 was dit aantal gegroeid tot meer dan 50000. Rond deze tijd was er ook een omslag in de ontwikkeling van PHP. Het veranderde van Rasmus' hobby project tot een project waaraan verscheidene personen hadden bijgedragen. Het werd een meer georganiseerd team. De parser werd herschreven door Zeev Suraski and Andi Gutmans en deze nieuwe parser vormde de basis voor PHP Versie 3. De meeste functionaliteit van PHP/FI werd overgenomen naar PHP 3, maar een groot gedeelte werd totaal herschreven. Tegenwoordig (eind 2000) worden zowel PHP 3 en PHP 4 gedistribueerd bij een groot aantal commerciële producten zoals C2's StrongHold web server en RedHat Linux. Een pessimistisch aantal, gebaseerd op een extrapolatie van het aantal gepu-bliceerd door Netcraft (zie ook Netcraft Web Server Survey) geeft aan dat PHP in gebruik is bij meer dan 3.300.000 sites over de hele wereld. In vergelijking, dit is op meer plaatsen dan sites die Netscape's vlaggenschip Enterprise Server gebruiken op het Internet, en komt aardig dicht bij het aantal IIS servers op het Internet (3.8 mil-joen). Sinds enige tijd is er een nieuwe generatie van PHP. Deze gebruikt de krachtige Zend scripting engine om hoge performance te bieden, en ondersteund ook veel meer webservers dan alleen Apache.

Page 7: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 3

ejk2002

2. Integratie met HTML

Er zijn vier manieren om HTML en PHP met elkaar te integreren. Van elk van deze methoden zie je hieronder van elk een voorbeeld waarmee je HTM verlaat en over-gaat op PHP-code. De te gebruiken extensie voor bestanden met PHP-code zal doorgaans .php zijn, maar dit is uiteindelijk afhankelijk van de webserver configuratie. 1. <? echo ("Dit is het eenvoudigst, een SGML verwerkingsinstructie\n"); ?> 2. <?php echo("Als je met XML documenten werkt, doe het dan zo\n"); ?> 3. <script language="php"> echo ("sommige editors (zoals FrontPage) gaan niet zo best om met verwerkingsinstructie s"); </script> 4. <% echo ("Het staat je vrij om ASP-style tags te gebruiken"); %> <%= $variabele; # is de korte ASP variant voor "<%echo .." %> voorbeeld 2 Opmerking. De eerste methode is alleen bruikbaar als in de PHP.ini is aangegeven dat de zoge-naamde short tags mogen worden gebruikt. Dit is standaard wel het geval, maar mocht dit niet zo zijn, dan plaats je in het configuratie bestand de regel: short_open_tag = On Werk je met XML, verander de short_open_tag dan wel in Off. De vierde methode is ook alleen beschikbaar indien dit in het ini-bestand aangege-ven is. Dit is standaard niet het geval. ASP gebruikers kunnen dit wijzigen door in het configuratiebestand de regel : asp_tags = Off te wijzigen in asp_tags = On.

Page 8: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 4 Basiscursus PHP

ejk2002

3. Instructie scheiding

In PHP begint elk blok met code met één van de in het voorbeeld genoemde ope-ningstags gevolgd door opdrachten. Na de laatste opdracht volgt de bij de opening horende sluitingstag. Deze opdrachten zullen we verder aanduiden met de engelse term “statement”. Statements worden van elkaar gescheiden door, net zoals dat het geval is bij C of Perl, elke statement te beëindigen met een puntkomma. De tag waarmee de code wordt afgesloten (?>) geeft ook het einde van een regel aan. De onderstaande twee voorbeelden zijn daarom beide correct. <?php echo "Dit is een test"; ?> <?php echo "Dit is een test" ?> voorbeeld 3 Bij het achterwege laten van de puntkomma als scheidingsteken, zal het resultaat een parse error op een bepaalde regel zijn. De fout zal echter meestal terug te vin-den zijn in een regel boven de aangegeven regel. Geeft de server bijvoorbeeld aan: Parse error in line 156, dan zal, indien het gaat om een vergeten puntkomma, de fout doorgaans een regel eerder gemaakt zijn. Overigens betreft uiteraard niet elke parse error een vergeten puntkomma.

Page 9: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 5

ejk2002

4. Commentaarregels

PHP ondersteunt 'C', 'C++' en Unix shell commentaar. Bijvoorbeeld: <?php echo "Dit is een test"; // Dit is een éénregelige c++ opmerking /* Dit is a meerregelige opmerking met nog een commentaarregel */ echo "Dit is nog test"; echo "Een laatste Test"; # Dit is shell opmerking ?> voorbeeld 4 Nog een voorbeeld: <h1>Dit is een <?# echo "eenvoudig";?> voorbeeld.</h1> <p>De tekst hierboven zal weergeven 'Dit is een voorbeeld'. Voorbeeld 5 Genest commentaar kan je liever vermijden. <?php /* echo "Dit is een test"; /* Deze opmerking zal een probleem veroorzaken */ */ ?> voorbeeld 6 Wil je een zelfgeschreven script verspreiden en voorzien van een inleidend verhaal of uitgebreide opmerkingen, dan kun je het unix hekje gebruiken om een rondom jetekst een kader te maken. ############################################################# # # # Dit script mag vrijelijk worden gebruikt en aangepast, mits # # deze tekst gehandhaafd blijft. Verkoop is niet toegestaan. # # # ############################################################# Dergelijke teksten staan altijd goed boven je scripts, een goede inleiding verhoogt de gebruiksvriendelijkheid en het goed gebruik van je scripts.

Page 10: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 6 Basiscursus PHP

ejk2002

5. Gegevenstypen

PHP ondersteunt de volgende gegevenstypen:

- Integer - Floating-point - String - Array - Object - Boolean

Integers Integers kunnen op de volgende manier worden gebruikt: $a = 1234; # decimaal getal $a = -123; # negatief getal $a = 0123; # octaal getal (gelijk aan 83 decimaal) $a = 0x12; # hexadecimaal getal (gelijk aan 18 decimaal) voorbeeld 7 De grootte van een integer is platformafhankelijk, hoewel een maximum van onge-veer 2 miljard gebruikelijk is. Komt neer op 32 bit.

Floating point Floating point getallen ("doubles") kunnen worden aangegeven met de volgende syn-taxen: $a = 1.234; $a = 1.2e3; voorbeeld 8 De grootte van een floating point is platformafhankelijk, hoewel een maximum van ongeveer 1. 8e308 gebruikelijk is. Komt neer op 64 bit.

Strings Strings kun je aangeven door gebruik te maken van ("). Variabelen in een string met dubbele aanhalingstekens zullen door PHP doorgaans probleemloos worden her-kend. <? $str = “Kees”; echo (“Mijn hond heet $str”); ?> voorbeeld 9 Evenals in C en Perl, kan de backslash ("\") worden gebruikt voor het invoegen van speciale tekens de zogenaamde escape characters. Hieronder een overzicht.

Page 11: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 7

ejk2002

Teken betekenis \n linefeed (LF or 0x0A in ASCII) ga naar de volgende regel \r carriage return (CR or 0x0D in ASCII) \t horizontale tab (HT or 0x09 in ASCII) \\ backslash \$ dollar teken \" aanhalingsteken \[0-7]{1,3} Het gaat hier om een octale notatie \x[0-9A-Fa-f]{1,2} Het gaat hier om een hexadecimale notatie Strings kunnen ook geplaatst worden tussen enkele aanhalingstekens, maar dan tre-den er enkele beperkingen op. In de eerste plaats zullen variabelen niet meer wor-den herkend en verder zullen nog alleen de \\ en \’ als escape karakters worden her-kend. Wil je een string definiëren die uit meerdere regels bestaat, dan bestaat er nog een derde methode namelijk de doc syntax (<<<) De string open en sluit je daarbij met de letters EOD om de tekst te identificeren. Hieronder een voorbeeld. $str = <<<EOD voorbeeld van een string met meer regels waarbij de doc syntax wordt gebruikt. EOD; voorbeeld 10 Een string kan worden uitgebreid met behulp van de (.) dot operator. <? /* een string toewijzen. */ $str = "dit is een string"; /* toevoegen aan de string. */ $str = $str . " met wat meer tekst"; /* Een andere manier om toe te voegen. */ $str .= " en maar meteen naar de volgende regel.<BR>"; /* tekst op de volgende regel */ $str .= “dit is de volgende regel”; ?> voorbeeld 11

Arrays Arrays zijn niet meer dan één- of meer dimensionale tabellen. Een één dimensionale tabel komt neer op een reeks met bepaalde waarden. Arrays kun je aanmaken met list() of array()

Page 12: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 8 Basiscursus PHP

ejk2002

Hieronder enkele simpele voorbeelden van arrays. $a[0] = "abc"; $a[1] = "def"; $b["nr"] = 13; voorbeeld 12 Een ééndimensionale array # voorbeeld 1: $a["kleur"] = "rood"; $a["smaak"] = "zoet"; $a["vorm"] = "rond"; $a["vrucht"] = "appel"; $a[3] = 4; voorbeeld 13 # voorbeeld 2: $a = array( "kleur" => "rood", "smaak" => "zoet", "vorm" => "rond", "vrucht" => "appel", 3 => 4 ); voorbeeld 14 Een tweedimensionale array <? $a = array( "appel" => array( "kleur" => "rood", "smaak" => "zoet", "vorm" => "rond" ), "oranje" => array( "kleur" => "oranje", "smaak" => "zoetzuur", "vorm" => "rond" ), "banaan" => array( "kleur" => "geel", "smaak" => "lekker", "vorm" => "banaan-vormig" ) ); echo $a["appel"]["smaak"]; # zal opleveren: "zoet" ?> voorbeeld 15

Page 13: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 9

ejk2002

Objecten Om gebruik te kunnen maken van een object dient het object eerst te worden aan-gemaakt als een class. Vervolgens kan het worden aangeroepen met new. <? class voorbeeld { function test() { echo "dit is een test."; } } $uitkomst = new voorbeeld; $uitkomst->test(); ?> voorbeeld 16

Boolean Het type boolean heeft betrekking op variabelen die waar of onwaar kunnen zijn. PHP kent ook twee speciale constanten van dit type namelijk TRUE en FALSE. Booleans worden veelal gebruikt in combinatie met logische operatoren.

Page 14: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 10 Basiscursus PHP

ejk2002

6. Variabelen In PHP worden variabelen aangeven met een dollarteken gevolgd door een aan de variabele toegewezen naam. Hierbij moet er tussen het dollarteken en de naam geen spatie komen te staan. Namen van variabelen zijn hoofdletter gevoelig. Geldige namen beginnen met een letter of een onderstreep. Na het eerste teken mag een willekeurige combinatie van letters, cijfers volgen. Alle ASCII-tekens van 127 tot en met 255 (0x7f-0xff) zijn eveneens geldig. Het interval voor geldige tekens is dus: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' . Enkele eenvoudige voorbeelden: $var = "Wendy"; $Var = "Patricia"; echo "$var en $Var"; // geeft "Wendy en Patricia" voorbeeld 17 $4e = 'nog niet'; // niet valide; begint met een nummer $_4e = 'nog niet'; // valide; begint met een onderstreep $täyte = 'mansikka'; // valide; 'ä' is ASCII 228. voorbeeld 18 In tegenstelling tot veel andere talen hoef je in PHP variabelen niet vooraf te declare-ren. Je hoeft dus niet vooraf aan te geven dat je een bepaalde variabele wil gebrui-ken. De variabele wordt automatisch gedeclareerd door het toekennen van een waarde eraan. De variabelen in de bovenstaande voorbeelden kunnen dus zowel nieuwe als oude variabelen zijn. Dit is overigens niet van belang. Wat geldt is de laatst toegekende waarde. Aangezien variabelen niet vooraf worden gedeclareerd en aan een vast type worden gekoppeld, wordt het gebruik van variabelen erg flexibel. De waarde van de variabelen kan van elk bekend type zijn, maar kunnen bij het toe-kennen van een nieuwe waarde probleemloos van type veranderen. Zo kan een va-riabele eerst een integer zijn, maar vervolgens probleemloos een string worden. Een PHP-variabele blijft geldig zolang de uitvoering van het script doorloopt. Uitzon-deringen hierop zijn variabelen die gebruikt worden binnen een functie. Met behulp van cookies en sessies, kunnen variabelen zelfs worden gebruikt na be-eindiging van het script waarin ze zijn toegekend.

Page 15: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 11

ejk2002

7. Operatoren PHP kent een veelheid aan operatoren. Hieronder worden een aantal veel gebruikte operatoren vermeld.

Rekenkundige operatoren

$a + $b Optellen Som van $a en $b. $a - $b Aftrekken Verschil van $a en $b. $a * $b Vermenigvuldigen Product van $a en $b. $a / $b delen Quotient van $a en $b. $a % $b Modulus Restant van $a gedeeld door $b.

Toewijzing De toewijzingsoperator is "=". Dit niet hetzelfde als "gelijk aan". De eigenlijke beteke-nis is dat de variabele links van het gelijkteken de waarde krijgt van de expressie rechts van het teken. De variabele wordt gesteld op een bepaalde waarde.

Vergelijking Om variabelen met elkaar te vergelijken zijn er de volgende operatoren: $a == $b Gelijk aan Waar als $a is gelijk aan $b. $a === $b Identiek Waar als $a is gelijk aan $b, en ze bovendien van het

zelfde type zijn. (alleen in PHP4) $a != $b Niet gelijk aan Waar als $a is niet gelijk aan $b.

$a !== $b Niet identiek Waar als $a is niet gelijk aan $b, of als ze niet van het-zelfde type zijn. (alleen PHP4)

$a < $b Kleiner dan Waar als $a is kleiner dan $b. $a > $b Groter dan Waar als $a is groter dan $b.

$a <= $b Kleiner of gelijk aan Waar als $a is kleiner of gelijk aan $b.

$a >= $b Groter of gelijk aan Waar als $a is groter of gelijk aan $b.

Incrementele/decrementele operatoren Waarden kunnen we automatisch laten toe of afnemen met het getal 1. Dit kan voor of na het gebruik van de variabele waar het op van toepassing is. Hieronder een overzicht. ++$a Pre-increment $a neemt toe met één, geeft $a. $a++ Post-increment Geeft de $a, en neemt dan toe met één. --$a Pre-decrement Vermindert $a met één, en geeft $a. $a-- Post-decrement Geeft $a, en vermindert $a met één.

Page 16: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 12 Basiscursus PHP

ejk2002

Hier enkele voorbeelden: <?php echo "<h3>Postincrement</h3>"; $a = 5; echo "Moet zijn 5: " . $a++ . "<br>\n"; echo "Moet zijn 6: " . $a . "<br>\n"; echo "<h3>Preincrement</h3>"; $a = 5; echo "Moet zijn 6: " . ++$a . "<br>\n"; echo "Moet zijn 6: " . $a . "<br>\n"; echo "<h3>Postdecrement</h3>"; $a = 5; echo "Moet zijn 5: " . $a-- . "<br>\n"; echo "Moet zijn 4: " . $a . "<br>\n"; echo "<h3>Predecrement</h3>"; $a = 5; echo "Moet zijn 4: " . --$a . "<br>\n"; echo "Moet zijn 4: " . $a . "<br>\n"; ?> voorbeeld 19

Logische operatoren Logische vergelijkingen kunnen worden gemaakt met de volgende syntax: $a and $b AND Waar als zowel $a en $b waar zijn.

$a or $b OR Waar als of $a of $b waar is.

$a xor $b XOR Waar als of $a of $b waar is, maar niet beide.

! $a NOT Waar als $a niet waar is. $a && $b AND Waar als zowel $a en $b waar zijn. $a || $b OR Waar als of $a of $b waar is. Combinaties van NOT met AND of OR met andere woorden NAND en NOR kunnen uiteraard ook gemaakt worden bijvoorbeeld: !($a and $b) //als zowel $a en $b niet waar zijn een NAND dus. Voorbeeld 20

Voorrangsregels. Bij het gebruik van operatoren gelden bepaalde voorrangsregels waardoor ongeacht de genoteerde volgorde bewerkingen in een vaste volgorde zullen worden uitge-voerd. Voor de rekenkundige bewerkingen geld Meneer Van Dalen Wacht Op Antwoord.

Page 17: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 13

ejk2002

Als er bijvoorbeeld een expressie zou worden aangemaakt 1 + 5 * 3, dan zou het antwoord 16 en niet 18 zijn aangezien vermenigvuldigen (*) voor optellen (+) komt. Hieronder zie je een compleet overzicht van de voorrangsregels waarbij er voor de voorrang sprake is van een oplopende volgorde. Operator , or xor and print = += -= *= /= .= %= &= |= ^= ~= <<= >>= ? : || && | ^ & == != === !== < <= > >= << >> + - . * / % ! ~ ++ -- (int) (double) (string) (array) (object) @ [ new In deze cursus zullen niet alle operatoren worden besproken.

Page 18: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 14 Basiscursus PHP

ejk2002

8. Functies

Met een functie kan een bij elkaar behorend stuk code worfden gegroepeerd tot een geheel. Hiermee breng je structuur aan in je script en voorkom je eventuele herhaal-de stukken. Heb je de code nodig, dan roep het gewoon aan. Functies kunnen worden aangemaakt met de volgende syntax: function voorbeeld ($arg_1, $arg_2, ..., $arg_n) { echo "Voorbeeldfunctie.\n"; return $fresult; } voorbeeld 21 na het kernwoord “function” volgt de naam van de functie met tussen haakjes even-tuele argumenten. Zijn er geen specifieke argumenten, dan wordt de naam gevolgd door enkel de haakjes. Na het sluitingshaakje volgen tussen accolades de expres-sies. Expressies binnen een functie kunnen uit elke geldige PHP-code bestaan. Het gebruik van het kernwoord ‘return’ is optioneel. Met behulp van de argumenten kan informatie worden doorgegeven aan de functie. Dit kunnen zowel variabelen als constanten zijn. function Koffie ($soort = "cappucino") { return "Ik drink het liefst $soort.\n"; } echo Koffie (); //geeft ‘Ik drink het liefst cappucino’. echo Koffie ("espresso"); //geeft ‘Ik drink het liefst espresso’. Nog een voorbeeld function kwadraat ($num) { return $num * $num; } echo kwadraat (4); // geeft '16'. voorbeeld 22

Page 19: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 15

ejk2002

9. Classes

Een CLASS is een verzameling van variabelen en functies. Hoe een CLASS wordt gedefinieerd wordt duidelijk gemaakt met het volgende voorbeeld. Het voorbeeld laats zien dat aan het object winkelwagen artikelen kunnen worden toegevoegd of verwijderd. <? class winkelwagen { var $items; // Items in het wagentje // voeg $num artikelen van $artnr toe. function toevoegen ($artnr, $num) { $this->items[$artnr] += $num; } voorbeeld 23-1 // Neem $num artikelen van $artnr uit de winkelwagen function remove_item ($artnr, $num) { if ($this->items[$artnr] > $num) { $this->items[$artnr] -= $num; return true; } else { return false; } } } ?> voorbeeld 23-2

Page 20: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 16 Basiscursus PHP

ejk2002

10. Controlestructuren

Elk PHP script is opgebouwd uit een aantal statements. Een statement kan een toe-wijzing zijn, de aanroep van een functie, een voorwaardelijke expressie enzovoort. De regels eindigen doorgaans met een puntkomma . aanvullend daarop kunnen de regels worden gegroepeerd in groepen door deze te plaatsen tussen accolades. Een groep is daarmee expressie op zichzelf. Om de gegroepeerde statements op een geordende wijze af te handelen zijn er verschillende types om een controlestructuur aan te brengen. In het hierna volgende zullen enkele daarvan worden besproken.

IF De IF constructie is één van de belangrijkste en meest gebruikte binnen scripts. Met IF kan een voorwaardelijke statement worden gerealiseerd. De syntax voor IF ziet er als volgt uit: if (voorwaarde) statement voorbeeld 24 de voorwaarde in de IF constructie wordt geëvalueerd en als de uitkomst WAAR is, zal de statement worden uitgevoerd. Bijvoorbeeld: if ($a > $b) print "a is groter dan b"; voorbeeld 25 als de waarde van $a inderdaad groter is dan die van $b, zal de regel “a is groter dan b” naar het document worden geschreven en anders niet. Het woord “print” heeft hier overigens dezelfde betekenis als het eerder gebruikte “echo”. Vaak genoeg zul je na de voorwaarde meerder zaken willen laten gebeuren. In dat geval plaats je serie van statements tussen accolades. Zie hiervoor het onderstaan-de voorbeeld. if ($a > $b) { print "a is groter dan b"; $b = $a;} voorbeeld 26 In het voorbeeld hierboven, zal niet slecht een tekstregeltje naar het document wor-den geschreven, maar zal vervolgens de waarde van $b worden gewijzigd. Ten slotte kan over de IF nog worden opgemerkt dat deze constructie oneindig door kan worden genest.

ELSE In veel gevallen zal je het niet wenselijk vinden om bij een NIET WAAR uitkomst van de IF constructie het te laten zoals het is, maar zal je willen dat er iets anders gaat gebeuren. In dat geval voeg je aan de IF constructie de ELSE toe. Met andere woorden wat moet er gebeuren als er niet aan de voorwaarde wordt vol-daan? De syntax hiervoor is:

Page 21: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 17

ejk2002

If (voorwaarde) { Statement; } else { statement; } voorbeeld 27 stel dat het voorbeeld met de IF constructie moet worden uit gebreid met een regels die zegt “a is kleiner dan of gelijk aan b” als dit inderdaad het geval is, dan wordt de code daarvoor: if ($a > $b) { print "a is groter dan b"; } else { print "a is kleiner dan of gelijk aan b"; } voorbeeld 28

ELSEIF de voorgaande voorbeelden met IF en ELSE gingen uit van twee mogelijkheden, namelijk $a is groter dan $b of niet. Door ELSE en IF met elkaar te combineren, kun-nen wij het aantal mogelijkheden echter oneindig uitbreiden. ELSEIF bouwt een nieuwe voorwaarde binnen de reeds bestaande voorwaarde in die in die volgorde wordt geëvalueerd. Stel dat we het laatste voorbeeld willen uitbreiden door de mogelijkheid dat $a gelijk is aan $b apart te laten vermelden, dan krijgen we het volgende: if ($a > $b) { print "a is groter dan b"; } elseif ($a == $b) { print "a is gelijk aan b"; } else { print "a is kleiner dan b"; } voorbeeld 29 Merk op dat de code voor een dergelijke constructie altijd begint met IF en eindigt met ELSE. Daartussen kan een willekeurig aantal keer ELSEIF worden geplaatst. Als alternatief kun je in plaats van de verschillende statements tussen accolades te plaatsen, de IF, ELSE en de ELSEIF constructie ook beëindigen met “ENDIF”. De eerste accolade wordt hierbij vervangen door een dubbele punt. Het laatste voor-beeld zou er volgens deze methode dan zo uitzien: if ($a > $b): print "a is groter dan b"; elseif ($a == $b): print "a is gelijk aan b"; else: print "a is kleiner b"; endif voorbeeld 30

Page 22: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 18 Basiscursus PHP

ejk2002

Overigens moet nog worden opgemerkt dat het is toegestaan om ELSEIF niet vast maar los van elkaar (ELSE IF) te gebruiken.

WHILE De WHILE-lus is ongetwijfeld de meest simpele in vele programmeertalen. De WHILE geeft aan dat zolang er aan de voorwaarde wordt voldaan, PHP de sta-tement moet blijven uitvoeren. De waarde van de voorwaardelijke expressie wordt telkenmale aan het begin van de lus gecontroleerd op WAAR of NIET WAAR. Wan-neer de waarde niet langer WAAR is zal de uitvoering worden gestopt. In geval de waarde al bij de eerste keer NIET WAAR is, zal de statement niet één keer worden uitgevoerd. De syntax van de WHILE is haast voorspelbaar. while (voorwaarde) statement voorbeeld 31 Evenals bij de IF-constructie, kunnen er meerdere statements worden opgenomen in een WHILE. Ook een alternatieve syntax met “ENDWHILE” is mogelijk In het voorbeeld hieronder moet een de getallen 1 tot en met 10 worden weergege-ven. // voorbeeld 1 $i = 1; while ($i <= 10) { print $i++; /* waarom kan hier geen ++$i worden gebruikt? */ } // voorbeeld 2 Hetzelfde maar nu met de alternatieve syntax $i = 1; while ($i <= 10): print $i; $i++; endwhile; voorbeeld 32

DO … WHILE DO…WHILE lussen lijken op WHILE lussen met dien verstande dat de validiteit van de expressie pas na uitvoering van de statement wordt gecontroleerd. Indien een voorwaarde al meteen NIET WAAR oplevert, zal de statement toch nog worden uit-gevoerd. Bij een WHILE-lus was dat niet het geval. Hieronder een voorbeeld van de DO…WHILE waarbij er niet aan de voorwaarde vol-daan. Het voorbeeld is standaard voor de DO…WHILE syntax. Alternatieven zijn er niet. $i = 0; do { print $i; } while ($i>0); //wat zal er worden weergegeven? voorbeeld 33

Page 23: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 19

ejk2002

FOR FOR-lussen zijn wat complexer dan de vorige controlestructuren. De syntax ziet er als volgt uit: for (expr1; expr2; expr3) statement voorbeeld 34 De eerste expressie (expr1) wordt onvoorwaardelijk uitgevoerd aan het begin van de lus. Aan het begin van elke iteratie wordt de tweede expressie gecontroleerd. Het zal hier gaan om een voorwaarde met als uitkomst WAAR of NIET WAAR. Als de expressie waar is, zullen de statements in de lus worden uitgevoerd en anders niet. De lus zal bij NIET WAAR meteen worden beëindigd. Aan het eind van elke iteratie wordt de laatste expressie (expr3) uitgevoerd. Hieronder een eenvoudig voorbeeld om de werking van een FOR-lus aan te tonen. Ook in dit voorbeeld gaat het om het weergeven van de getallen 1 tot en met 10. for ($i = 1; $i <= 10; $i++) { print $i; } voorbeeld 35 Elk van de drie expressies kan indien gewenst weg gelaten worden. De puntkomma moet in dat geval echter wel blijven staan. Hier een variant op het voorgaande voor-beeld waarbij de tweede expressie is weggelaten. Om de lus toch te laten beëindigen als het getal 10 is bereikt, is er een IF-statement in de lus opgenomen als mede de opdracht “break” om het proces af te breken. for ($i = 1;;$i++) { if ($i > 10) { break; } print $i; } voorbeeld 36 Om aan te tonen dat zelfs alle drie expressies kunnen worden weggelaten volgt hier nog een ietwat overdreven voorbeeld. $i = 1; for (;;) { if ($i > 10) { break; } print $i; $i++; } voorbeeld 37 De variabele $i is voorafgaand aan de lus reeds op 1 gesteld, terwijl de tweede en de derde expressie als statements in de lus zijn geplaatst. Behalve het weglaten van expressies, is het ook mogelijk om een expressie uit meerdere statements te laten bestaan. In het voorbeeld voor het weergeven van de

Page 24: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 20 Basiscursus PHP

ejk2002

getallen 1 tot en met 10, zou je uitgaande van het eerste voorbeeld reeds in de derde expressie de weergave opdracht kunnen opnemen. De code zou er dan als volgt uit zien. for ($i = 1; $i <= 10; print $i, $i++) ; voorbeeld 38 Let hierbij op dat de twee statements zijn gescheiden door een komma in plaats van de gebruikelijke puntkomma. PHP ondersteunt voor de FOR-lus ook de alternatieve syntax met ENDFOR. Ons eerste voorbeeld zou dan worden: for ($i = 1; $i <= 10; $i++) : print $i; endfor voorbeeld 39

SWITCH De SWITCH statement komt overeen met een serie op hetzelfde betrekking hebben-de IF statements. In gevallen waarbij dezelfde variabele moet worden vergeleken met verschillende waarden, is het handiger om gebruik te maken van de SWITCH statement in plaats van een serie IF’s. de volgende voorbeelden geven aan hoe je met SWITCH hetzelfde kan bereiken als met IF. // de variabele $i wordt met drie waarden vergeleken met behulp van een IF statement. if ($i == 0) { print "i is gelijk aan 0"; } if ($i == 1) { print "i is gelijk aan 1"; } if ($i == 2) { print "i is gelijk aan 2"; } voorbeeld 40 // dezelfde controle maar nu met SWITCH. switch ($i) { case 0: print "i is gelijk aan 0"; break; case 1: print "i is gelijk aan 1"; break; case 2: print "i is gelijk aan 2"; break; } voorbeeld 41 het gebruik van “break”is in dit voorbeeld beslist niet overbodig. SWITCH begint met de uitvoering van een instructie op het moment dat een CASE WAAR is. Hierna

Page 25: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 21

ejk2002

wordt echter niet gestopt maar worden alle volgende opdrachten uit gevoerd. Zou in het voorbeeld $i inderdaad gelijk zijn aan 0, dan zou niet alleen “i is gelijk aan 0” worden weergegeven, maar ook “i is gelijk aan 1” en “i is gelijk aan 2”. Als $i gelijk zijn aan 2, zou er wel slechts één regel verschijnen en wel omdat er geen volgende mogelijkheden zijn. De SWITCH heeft als voordeel dat hij slechts één keer wordt uitgevoerd, waardoor het een snellere methode is dan ELSEIF. Vergelijk de volgende voorbeelden met el-kaar en het voordeel mag duidelijk zijn. // met een IF constructie nagaan of de variabele $i de waarde van 0, 1 of 2 heeft. if ($i < 3 || $i >= 0) { print "i is kleiner dan 3 maar niet negatief"; } elseif ($i == 3) { print "i is gelijk aan 3 "; } else { print "i is niet gelijk aan 0, 1 of 3"; } voorbeeld 42 // hetzelfde met een SWITCH constructie switch ($i) { case 0: case 1: case 2: print "i is kleiner dan 3 maar niet negatief"; break; case 3: print "i is gelijk aan 3"; default: print "i is niet gelijk aan 0, 1 of 3"; } voorbeeld 43 voor het aangeven van een standaardwaarde is in het voorbeeld gebruik gemaakt van “default” dat wil zeggen alle waarden die niet specifiek zijn aangegeven. Overigens is SWITCH ook te gebruiken in combinatie met ENDSWITCH. Het is maar waar je eigen voorkeur naar uitgaat.

Page 26: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 22 Basiscursus PHP

ejk2002

11. Datum en Tijd

time De statement TIME geeft exact aan het aantal seconden tussen 1 januari 1970 00:00:00 GMT en het moment dat het script wordt aangeroepen (de UNIX time-stamp). Onnodig om hierbij te vermelden dat de servertijd. Voor het werken met de tijd van de client is het te verkiezen om gebruik te maken van javascript of vbscript. De syntax voor TIME is: time(); voorbeeld 44

Date Met behulp van DATE kan de datum en tijd worden opgemaakt en weergegeven. De syntax voor het gebruik van DATE is: date (“format string” , timestamp) voorbeeld 45 Om het formaat op te maken en de gewenste string weer te kan ondermeer gebruik gemaakt worden van de volgende tekens: a - "am" of "pm" A - "AM" of "PM" d - dag van de maand, 2 cijfers met voorloop nullen "01" tot en met "31" D - dag van de week, tekstueel, 3 letters; b.v. "Fri" F - maand, tekstueel, lang; b.v. "January" g - uur, 12-uur formaat zonder voorloop nullen "1" tot en met "12" G - uur, 24-uur formaat zonder voorloop nullen "0" tot en met "23" h - uur, 12-uur formaat; b.v. "01" tot en met "12" H - uur, 24-uur formaat; b.v. "00" tot en met en met "23" i - minuten; b.v. "00" tot en met "59" j - dag van de maand zonder voorloop nullen "1" tot en met "31" l (kleinletters 'L') - dag van de week, tekstueel, lang; b.v. "Friday" m - maand; b.v. "01" tot en met "12" M - maand, tekstueel, 3 letters; b.v. "Jan" n - maand zonder voorloop nullen "1" tot en met "12" s - seconden; b.v. "00" tot en met "59" t - aantal dagen in de gegeven maand; b.v. "28" tot en met "31" w - dag van de week, numeriek, b.v. "0" (Zondag) tot en met "6" (Zaterdag) Y - jaar, 4 cijfers; b.v. "1999" y - jaar, 2 cijfers; b.v. "99" z - dag in het jaar; b.v. "0" tot en met "365" Het onderstaande voorbeeld zou de datum op de server weergeven op het moment dat het script wordt aangeroepen. Het zou er bijvoorbeeld uitzien als 11 – 3 – 2002, waarmee wordt bedoeld 11 maart 2002.

Page 27: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 23

ejk2002

<? $datum = date(“j - n – Y”, time()); echo “het is vandaag $datum”; ?> voorbeeld 46 Let hierbij op dat de date statement niet direct in de echo is geplaatst. Dit om pro-blemen met geneste aanhalingstekens te verkomen.

mktime Om de juiste timestamp voor een bepaalde datum of tijdstip te achterhalen, wordt de statement mktime gebruikt. De syntax voor mktime luidt: mktime ( uur, minuut, seconde, maand, dag, jaar) voorbeeld 47 Hieronder een voorbeeld waarmee het aantal dagen verlopen sinds 1 maart 2002 wordt weergegeven. <? $aantal_dagen = floor((time() - mktime(0,0,0,3,1,2002))/86400); echo "er zijn $aantal_dagen dagen verlopen sinds 1 maart 2002"; ?> voorbeeld 49 opmerking 86400 is het aantal seconden in één dag. Met floor(getal) worden kommagetallen naar beneden afgerond. Naar boven afron-den wordt gedaan met ceil(getal).

Page 28: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 24 Basiscursus PHP

ejk2002

12. Bestandsmanipulatie

PHP biedt verschillende mogelijkheden om directories en bestanden naar eigen in-zicht aan te passen. Zowel tekst- als binaire bestanden op de server kunnen zon-dermeer worden aangemaakt, gelezen op worden beschreven. Hieronder zullen enkele mogelijkheden voor het werken met tekstbestanden worden bekeken.

file_exists Alvorens met een bestaand bestand te werken is het altijd goed om te controleren of het bestand daadwerkelijk bestaat. Dit kan met file_exists. De syntax hiervoor is: file_exists(bestandsnaam) voorbeeld 50 Moet er bijvoorbeeld worden nagegaan of het bestand “mijn_tekst.txt” beschikbaar is op de server, dan zou het volgende // geef weer of een bestand bestaat. if (file_exists(“mijn_tekst.txt”)){ echo “mijn_tekst.txt is een bestaand bestand”; } voorbeeld 51 of //geef weer of een bestand niet of wel bestaat. $bestand = “mijn_tekst.txt”; if (!file_exists($bestand)){ echo “bestand mijn_tekst.txt bestaat niet”; } else { echo “bestand mijn_tekst.txt bestaat”; } voorbeeld 52 In het eerste voorbeeld is de bestandsnaam direct als string geplaatst in de fi-le_exists statement en moet er dan ook gebruik gemaakt worden van aanhalingste-kens. In het tweede voorbeeld is de bestandsnaam toegewezen aan een variabele en wordt er in de file_exists geen gebruik gemaakt van aanhalingstekens. In het tweede voorbeeld is tevens uitgegaan van een “niet” situatie hetgeen de reden is geweest om een uitroepteken te plaatsen voor file_exisits.

readfile Met readfile kan de inhoud van een bestand worden gelezen. De uitvoer zal zicht baar zijn in de browser. De te gebruiken syntax is: readfile(bestandsnaam) voorbeeld 53 Hier enkele voorbeelden voor het lezen en weergeven van bestanden:

Page 29: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 25

ejk2002

readfile("/home/mus/file.txt"); readfile("file.txt"); readfile("http://www.php.net/index.php"); readfile("ftp://user:[email protected]/index.html"); voorbeeld 54

fopen Om daadwerkelijk met een bestand aan de slag te kunnen gaan, moet een fopen sta-tement worden gegeven. Het bestand kan worden geopend in een lees-, schrijf- of lees/schrijfmodus. De syntax voor een fopen statement luidt: fopen(bestandsnaam, “modus”) voorbeeld 55

Als modus kunnen de volgende opties worden meegegeven.

- “r” - Open het bestand als alleen lezen. Plaats de cursor aan het begin van het be-stand.

- “r+” - Open het bestand in een lees/schrijfmodus; Plaats de cursor aan het begin van het bestand.

- “w” - Open het bestand in de schrijfmodus: Plaats de cursor aan het begin van het bestand. Breng de lengte van het bestand terug tot nul; als het bestand nog niet be-staat wordt getracht het aan te maken.

- “w+” - Open het bestand in de lees/schrijfmodus; Plaats de cursor aan het begin van het bestand. Breng de lengte van het bestand terug tot nul; als het bestand nog niet bestaat wordt getracht het aan te maken.

- “a” - Open het bestand in de schrijfmodus; Plaats de cursor aan het eind van het bestand. als het bestand nog niet bestaat wordt getracht het aan te maken.

- “a+” - Open het bestand in de lees/schrijfmodus; Plaats de cursor aan het begin van het bestand. als het bestand nog niet bestaat wordt getracht het aan te maken. Om een bestand te openen zal de opdracht moeten worden gekoppeld aan een vari-abele die naar het geopend bestand wijst. Deze variabele wordt de filepointer ge-noemd. Hieronder enkele voorbeelden voor het openen van een bestand: $fp = fopen ("/home/mus/file.txt", "r"); $fp = fopen ("file.txt", "a+"); $fp = fopen ("http://www.php.net/", "r"); $fp = fopen ("ftp://user:[email protected]/", "w"); voorbeeld 56 Aan de modus kan nog de letter “b” worden toegevoegd om duidelijk te maken dat het om een binair bestand gaat. Dit is echter alleen zinvol indien het gaat om bestu-ringssystemen die daar een onderscheid in maken.

fclose Een geopend bestand moet uiteraard ook weer worden afgesloten. Dit wordt gedaan met de statement fclose. Het sluiten gebeurt door in fclose niet de bestandsnaam maar de filepointer op te nemen. De syntax is ondubbelzinnig: fclose(filepointer) voorbeeld 57

Page 30: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 26 Basiscursus PHP

ejk2002

fgets fgets leest de inhoud van een geopend bestand regel voor regel. Het lezen zal gaan tot de aangeven lengte of tot het einde van het bestand. Dat hangt af van dat wat eerst komt. In de syntax moet verplicht een lengte worden aangegeven in bytes. fgets(filepointer, lengte) voorbeeld 58 Het onderstaande voorbeeld geeft aan hoe fgets kan worden gebruikt om alle regels van een bestand te lezen. De gelezen gegevens worden vervolgens met “echo” naar de browser geschreven. In feite komt het totale voorbeeld neer op hetzelfde als de statement “readfile”. $fp = fopen ("/tmp/mijn_tekst.txt", "r"); while (!feof ($fp)) { //feof gaat na of het einde van de filepointer is bereikt. $mijn_tekst = fgets($fp, 4096); echo $mijn_tekst; } fclose ($fp); voorbeeld 59 In plaats van fgets kan ook gebruik worden gemaakt van “fread” dit zal voor het lezen van binaire bestanden zelfs te verkiezen zijn.

fputs Met de statement fputs kan worden geschreven naar een bestand. De plaats waar het geschreven zal worden toegevoegd is afhankelijk van de gekozen modus voor de filepointer. De syntax voor fputs is als volgt: fputs(filepointer,string [,lengte]) voorbeeld 60 Het gebruik van een lengte is optioneel maar kan best wel eens handig zijn. In het onderstaande voorbeeld worden steeds een nieuwe regel met de datum, de tijd en een IP-adres toegevoegd aan een tekstbestand. $datum = date(“j/n/Y”,time()); $tijd = date(“H:I:s”,time()); $ip = $REMOTE_ADDR; // REMOTE_ADDR geeft het IP-adres van de client. $fp = fopen(“registratie.txt”,”a”); fputs($fp,“\n$datum;$tijd;$ip”); voorbeeld 61 Merk hierbij op dat \n in het kladblok niet zal worden weergegeven als een nieuwe regel maar als een zwart blokje. Om bestanden met escape characters goed te kun-nen lezen is het kladblok niet aan te bevelen. Gebruik dan liever Wordpad. Synoniem voor fputs is “fwrite” hiermee kan tevens worden geschreven naar binaire bestanden.

Page 31: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 27

ejk2002

13. Array Functies

Arrays zijn bijzonder handig om gegevens op een geordende wijze bij te houden. In plaats van variabelen apart te benaderen, kunnen variabelen aan een array worden toegewezen waar door de afhandeling van een bewerking efficiënter verloopt. Hier-onder zullen slechts enkele van de vele array functies worden besproken. Om met een array te kunnen werken moet deze als eerste worden aangemaakt. De syntax voor het maken van een array is: array(waarde1, waarde2, waarde3 …..waardeN); voorbeeld 62 De lijst met waarden die in een array moeten komen te staan, kunnen zondermeer worden genoemd in de array. Er zal dan automatisch sprake zijn van een indexering waarbij de eerste waarde als index een nul krijgt. Een andere mogelijkheid is het ge-bruik van de => operator. Hiermee wordt het mogelijk om de verschillende waarden te benoemen. Hieronder enkele voorbeelden om het creëren van arrays duidelijk te maken. $cijfers = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); $fruit = array(a => ”appels”, b => “peren”, c =>”bananen”); $lekker_fruit = array( “fruit” = array(“appel”, “peer”,”banaan”), “cijfer” = array(7, 8, 5) ); voorbeeld 63 Overigens is het in een array volkomen toegestaan om verschillende typen te gebrui-ken. Een array met daarin zowel strings als integers zal geen enkel probleem opleve-ren. Het opvragen van gegevens uit een array gaat met behulp van de index ofwel de key. De key wordt tussen rechte haken achter de arrayvariabele geplaats. In het vol-gende voorbeeld worden de dagen van de week in een array geplaatst en worden met behulp van de datum en tijdfuncties enkele gegevens opgevraagd. <? $week = array(zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag); $vandaag = date(w, time()); $morgen =$vandaag + 1; echo "Het is vandaag $week[$vandaag] en morgen is het $week[$morgen]<br>"; echo “de dagen van de week zijn:”; for($i=0;$i<7;$i++){ echo "<br>$week[$i],"; } ?> voorbeeld 64

Page 32: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 28 Basiscursus PHP

ejk2002

count Als het nodig is om te achterhalen hoeveel waarden er in een array zijn (de lengte van de array) wordt de statement count gebruikt. De syntax is: count (array); voorbeeld 65 Het volgende voorbeeld zal voor de eerste array 3 opleveren en voor de tweede 7. $fruit = array(a => ”appels”, b => “peren”, c =>”bananen”); count($fruit); $cijfers = array(4, 5, 6, 7, 8, 9, 10); count ($cijfers); voorbeeld 66

in_array Nagaan of een bepaalde waarde wel of niet voorkomt in een array kan worden ge-daan met de statement in_array. De syntax hiervoor is: in_array(waarde, array); voorbeeld 67 Hieronder een voorbeeld met een string en een integer. if (in_array(1, $cijfers) { echo “dit waarschijnlijk de array cijfers”;} elseif (in_array(“appel”, $fruit){ echo “dit waarschijnlijk de array fruit”;} else {echo “deze array komt mij niet bekend voor”;} voorbeeld 68

array_slice Met array_slice kunnen delen uit een array worden gehaald en als een nieuwe array worden gezien. De syntax is als volgt: array_slice(array, begin [,lengte]) voorbeeld 69 Het begin en de lengte geven respectievelijk aan bij welke index er moet worden be-gonnen en hoeveel waarden er moeten worden meegenomen. Zowel het begin als de lengte kunnen positief of negatief zijn. In geval van een positief begin zal bij die index worden begonnen en zullen net zo-veel waarden worden meegenomen als de lengte aangeeft. Als er geen lengte is aangegeven zal tot de laatste waarde worden door gegaan. In geval van een negatieve beginwaarde zal er vanaf het einde van de array terug-worden geteld, om vervolgens vanaf dat punt weer met de lengte naar het einde te gaan. In geval van een negatieve lengte zal vanaf het beginpunt worden geteld tot de laats-te waarde minus de lengte. Hieronder enkele voorbeelden om het geheel wat duidelijker te maken.

Page 33: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 29

ejk2002

$invoer = array ("a", "b", "c", "d", "e"); $uitvoer = array_slice ($invoer, 2); // geeft "c", "d", en "e" $uitvoer = array_slice ($invoer, 2, -1); // geeft "c", "d" $uitvoer = array_slice ($invoer, -2, 1); // geeft "d" $uitvoer = array_slice ($invoer, 0, 3); // geeft "a", "b", en "c" voorbeeld 70

array_merge Het samenvoegen van twee of meer arrays wordt gedaan met array_merge. Het volgende voorbeeld zal meteen duidelijk maken hoe dit werkt. $halfjaar1 = array(“januari”, “februari”, “maart”, “april”, “mei”, “juni”); $halfjaar2 = array(“juli”, “augustus”, “september”, “oktober”, “november”, “december”); $voljaar = array_merge($halfjaar1, $halfjaar2); voorbeeld 71

array_rand Een willekeurige keuze maken uit elementen in een array kan met behulp van de ar-ray_rand statement. Array_rand retourneert een array met één of meerdere indexen. De bijbehorende waarden kunnen vervolgens aan de oorspronkelijk array worden ontrokken. De syntax hiervoor is: array_rand(array, aantal) voorbeeld 72 Voorwaarde voor het gebruik van array_rand is dat de “random number genera-tor”die noodzakelijk is voor het creëren van willekeurige getallen, wordt geactiveerd. In het onderstaande voorbeeld wordt hiervoor de standaard activering weergegeven. $namen = array(“Eric”, “Dennis”, “Mike”, “Patricia”, “Wendi”, “Mario”, “Fahraad”, “Dormuz”, “Linda”); srand ((double) microtime() * 10000000); //de activering van willekeurige getallen. $corfee = array_rand($namen, 2); echo “$namen[$corfee[0]] en $namen[$corfee[1]] hebben vandaag corfee.”; voorbeeld 73

array_push Moet een array worden uitgebreid, dan kan met behulp van array_push één of meer-dere nieuwe waarden worden toegevoegd. Stel dat de array “namen” uit het vorige voorbeeld moet worden uitgebreid met dan zal het script de volgende code bevatten: array_push($namen, “Enrico”, “George”); voorbeeld 74

Page 34: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 30 Basiscursus PHP

ejk2002

14. Formulierverwerking

Eén van de handigste mogelijkheden met PHP is het automatisch overnemen van formulierveldnamen. De aan de in een formulier toegekende veldnamen worden door PHP overgenomen als variabelen met een gelijke naam. Stel dat er in de HTML-code van een formulier de volgende code voorkomt: <INPUT TYPE=TEXT NAME=”voornaam”> Bij het verwerken van het formulier met PHP zal er dan automatisch een variabele $voornaam ontstaan. Het verwerken van formulieren wordt hierdoor kinderspel. Als er eenmaal variabelen zijn, dan PHP daarmee aan de slag om bijvoorbeeld een op de invoer afgestemd antwoord te genereren, de invoer te testen, waarden toevoegen aan een database of combinaties van dit alles. Doordat PHP en HTML volledig integreerbaar zijn, kan het formulier of door zichzelf worden afgehandeld of door een afzonderlijk script worden verwerkt. In het eerste geval zal het bestand met het formulier een PHP-bestand moeten zijn, waarbij in de FORM-tag de ACTION of TARGET naar zichzelf verwijst. Het naar zichzelf verwijzen gebeurt altijd met de code <?echo $PHPSELF?>. In het tweede geval mag het formulier een volledig HTML-bestand zijn, waarbij de ACTION verwijst naar een PHP-script. Van beide methoden volgt hier een voorbeeld. <HTML> <TITLE> Een zelfverwerkend formulier </TITLE> <BODY> <FORM ACTION=”<?echo $PHPSELF?>” METHOD=”POST”> Vul hieronder je voornaam in<BR> <INPUT TYPE=”TEXT” NAME="voornaam"><BR> <INPUT TYPE=”SUBMIT” VALUE=" OK "> </FORM> </BODY> </HTML> <? if ($voornaam !=""){ echo "dag $voornaam, PHP doet je de groeten"; } else {echo “Waarom heb je geen naam ingevuld”} ?> voorbeeld 75 Het voorbeeld hierboven is de meest simpele methode van een formulierverwerking. Er is slechts één bestand (een PHP-bestand) nodig en het script is onder het HTML gedeelte toegevoegd. Het resultaat van dit script zal echter zijn dat niet alleen de groet, maar ook het formulier zelf zal worden weergegeven. In de browser zal na verwerking het lege formulier met daaronder de groet te zien zijn. In geval van een minimaal formulier als dit zal dat geen echt probleem zijn, maar het kan ook anders. Eén methode om de weergave van het formulier te onderukken, zou zijn formulier en antwoord in afzonderlijke functies in het script te plaatsen. Eenvou-diger is echter het formulier en het script in twee bestanden op te nemen. Bijvoor-beeld een bestand genaamd “jouw_naam.htlm” en een bestand “gegroet.php”.

Page 35: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 31

ejk2002

Eerst de HTML-code. De ACTION verwijst nu niet naar zichzelf maar naar het script. <HTML> <TITLE> Een door een PHP-script te verwerk formulier </TITLE> <BODY> <FORM ACTION=”gegroet.php” METHOD=”POST”> Vul hieronder je voornaam in<BR> <INPUT TYPE=”TEXT” NAME="voornaam"><BR> <INPUT TYPE=”SUBMIT” VALUE=" OK "> </FORM> </BODY> </HTML> voorbeeld 76-1 Het bestand gegroet.php zal de volgende code bevatten. <? if ($voornaam !=""){ echo "dag $voornaam, PHP doet je de groeten"; } else {echo “Waarom heb je geen naam ingevuld?”;} ?> voorbeeld 76-2 In het voorbeeld hier boven wordt er vanuit gegaan dat de beide bestanden in de-zelfde directory staan. Is dat niet het geval, dan zal in de ACTION het juiste pad voor de bestandsnaam moeten worden geplaatst. PHP is in staat om elk inputtype van een formulier over te nemen als variabele. Bij het gebruik van checkboxes moet er evenwel rekening mee worden gehouden dat checkboxes het best kunnen worden gezien als een array. Er zijn in tegenstelling tot de radiobuttons immers meerdere checks mogelijk. Bereid PHP hier op voor door reeds in het formulier de arraynotatie te gebruiken. Met de arraynotatie gebruik je voor bij elkaar horende checkboxes dezelfde naam gevolgd door rechte haken (open en sluit). Hieronder een voorbeeld van een arraynotatie in een formulier. <HTML> <TITLE> checkboxes in een array </TITLE> <BODY> <FORM ACTION=”slapen.php”> Naam: <INPUT TYPE=”TEXT” NAME=”naam”><BR> <P>Wanneer slaap jij het liefst?<P> <INPUT TYPE=”CHECKBOX” NAME=”slaaptijd[]” VALUE=”mo”>’s morgens<BR> <INPUT TYPE=”CHECKBOX” NAME=” slaaptijd []”VALUE=”mi”>’s middags<BR> <INPUT TYPE=”CHECKBOX” NAME=” slaaptijd []”VALUE=”av”>’s avonds<BR> <INPUT TYPE=”CHECKBOX” NAME=” slaaptijd []”VALUE=”na”>’s nachts<BR> <INPUT TYPE=”SUBMIT” VALUE=” OK “> </FORM> </BODY> </HTML> voorbeeld 77-1

Page 36: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 32 Basiscursus PHP

ejk2002

Het PHP-script slapen.php waarmee dit formulier verwerk zou moeten worden zou er bijvoorbeeld als volgt uit kunnen zien. <? if (count($slaaptijd)>2){ echo “Nou $naam, wat ben jij een luiwammes”: } else { echo “Slaap lekker $naam”;} ?> voorbeeld 77-2 De checkboxes in het voorbeeld zijn overgenomen als de array $slaaptijd, waarna met de arrayfunctie “count” het aantal waarden in de array kan worden nagegaan.

Eddy
Er moet hier nog wel even worden opgemerkt dat het automatisch overnemen van veldnamen niet altijd het geval is. Het direct overnemen van de veldnamen als variabelen is afhankelijk van de configuratie. Is in de configuratie aangegeven GLOBALS=off, dan zal het niet werken. Verander je de waarde in GLOBALS=on, dan zal er niets aan de hand zijn. Wil je uit security overwegingen dit niet doen, of heb je geen toegang tot het configuratie bestand php.ini, dan kun je de veldnamen aanroepen met $_POST of $_GET afhankelijk van de in het formulier aan gegeven method. Bij het verwerken van het formulier met daarin een vlednaam "voornaam", zal er bij GLOBALS=on automatisch een variabele $voornaam ontstaan. In geval van GLOBALS=off, kun je de variable als $_POST['voornaam'] aanroepen. De method in het formulier is dan natuurlijk ook POST.
Page 37: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 33

ejk2002

15. Database Connectiviteit

PHP ondersteunt een veelheid aan databases. In dit document zal de samenwerking met MSAccess databases worden bekeken. Om een Access database te kunnen benaderen moeten PHP en de webserver draaien op een computer met een win-dows besturingssysteem. Wie met een ander besturingssysteem aan de slag wil zou in de combinatie PHP-MySQL een goed alternatief vinden. De benadering van een Access database verloopt middels ODBC (Open Database-Connectivity). Hiervoor zal vooraf een Systeem-DSN (Data System Name) moeten worden aangemaakt. Om de DSN aan te maken moeten de volgende handelingen worden verricht: 1. Open het configuratiescherm en dubbelklik op het ODBC-pictogram

.

2. Kies in het nieuwe in de geopende utility op het tabblad Systeem-DSN en kies

hier voor Toevoegen.

Page 38: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 34 Basiscursus PHP

ejk2002

3. Kies de bij Access behorende driver namelijk de Microsoft Access driver en klik

op voltooien om de keuze te bevestigen.

4. Vul in het nieuwe venster een naam in voor de DSN en eventueel een omschrij-ving. Klik op selecteren om een bij de DSN behorende database te kiezen. Vul wel het volledig pad in of blader naar de gewenste database. Eventueel kan met

Page 39: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 35

ejk2002

de optie “Geavanceerd” nog een gebruikersnaam en wachtwoord worden aan-gemaakt. Als alles naar behoren is ingevuld, kan het aanmaken van de DSN wor-den afgerond door OK te geven.

opmerking Het is ook mogelijk om DSN-loze verbindingen te maken met behulp van ADODB. Hiervoor moet in het PHP-script een afzonderlijke class (ADOdb) worden aangeroe-pen. De class is te downloaden van http://php.weblogs.com. Verbindingen met de ADOdb-class verlopen wat trager maar zijn een prima oplos-sing indien er geen rechten zijn toegekend om DSN’s aan te maken.

odbc_connect De functie odbc_connect is vereist om een verbinding te maken met de database. Deze functie zal in elke of de variant odbc_pconnect - voor het eventueel openhou-den van een verbinding – zal in elke Accessscript voorkomen. De syntax voor het maken van een verbinding is: odbc_connect(DSNnaam,gebruiker,wachtwoord,cursortype); voorbeeld 78 De naam van de DSN is verplicht. Indien er geen gebruiker en wachtwoord zijn op-gegeven, worden deze vervangen door leg strings (“”). Het cursortype is slechts van toepassing indien een database op een specifieke manier moet worden benaderd. De ODBC-drivers voor Access sluiten dit haast geheel uit. Deze optie kan dan ook gewoon leeg worden gelaten. In plaats van het cursortype zal er een lege string ko-men te staan. Hieronder twee voorbeelden voor het maken van een verbinding. De verbinding wordt gekoppeld aan een variabele om zonodig er op een korte manier naar te kun-nen verwijzen. $conn = odbc_connect(“noord”,”iedereen”,”alles”,””); //met gebruiker en wachtwoord $conn = odbc_connect(“noord”,””,””,””);//zonder gebruiker en wachtwoord voorbeeld 79

Page 40: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 36 Basiscursus PHP

ejk2002

odbc_close en odbc_close_all Om een open verbinding te sluiten wordt odbc_close gebruikt. Staan er meerdere verbindingen open, dan kunnen die gelijktijdig worden gesloten met odbc_close_all. Bij odbc_close moet worden verwezen naar de juiste verbinding bij odbc_close_all uiteraard niet. De syntax heeft de volgende opmaak: odbc_close(verbinding); odbc_close_all(); voorbeeld 80 Hieronder een voorbeeld van het openen en sluiten van meerdere databases. <? $conn1 = odbc_connect(“noord”,””,””,””); $conn2 = odbc_connect(“zuid”,”iedereen”,””,””); $conn3 = odbc_connect(“oost”,”eenieder”,”niets”,””); $conn4 = odbc_connect(“west”,””,””,””); //er staan nu vier verbindingen open. odbc_close($conn4); //verbinding 4 is nu gesloten. odbc_close_all(); //en nu zijn de andere drie ook gesloten ?> voorbeeld 81

odbc_exec In het vorige voorbeeld zijn er databases geopend en gesloten zonder dat er ook maar iets is gedaan met de database. Anders dan voor het testen van de verbinding zal dat niet erg nuttig zijn. Doorgaans moet er wel iets worden gedaan. Voor het selecteren, toevoegen, wijzigen of verwijderen van gegevens moet een SQLquery worden gedefinieerd. De query moet vervolgens worden uitgevoerd met de functie odbc_exec. De syntax hiervoor is: odbc_exec(verbinding, SQLquery); voorbeeld 82 Het volgende voorbeeld geeft aan hoe je met een SQLopdracht gegevens uit een databasetabel ophaalt. Met de gegevens wordt overigens niets gedaan, ook niet weergegeven. <? $query = “SELECT * FROM tabel1”; $conn = odbc_connect(“noord”,””,””,””); if($conn != 0){ //Ga alleen verder als er een verbinding is. $exec = odbc_exec($conn, $query); odbc_close($conn); } ?> voorbeeld 83

Page 41: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 37

ejk2002

odbc_result_all Voor het weergeven van de resultaten van een selectiequery in de vorm van een HTML tabel, kan de functie odbc_result_all worden gebruikt. De gehele tabel zal in de browser worden weergegeven. Dit zal met name handig zijn als het om een be-trekkelijk klein aantal rijen gaat. Met odbc_result_all kan desgewenst ook de opmaak van de HTML tabel worden bepaald. De algemene syntax voorziet daar reeds in. odbc_result_all(query opdracht, [,tabelopmaak]) voorbeeld 84 Als de resultaten uit het vorige voorbeeld volledig zouden moet zouden moeten wor-den weergegeven in een tabel met een randwaarde van 1, zou de code er als volgt uit kunnen zien. <? $query = “SELECT * FROM tabel1”; $conn = odbc_connect(“noord”,””,””,””); if($conn != 0){ //Ga alleen verder als er een verbinding is. $exec = odbc_exec($conn, $query); odbc_result_all($exec, “border=1”); //maakt een tabel met een randwaarde van 1 odbc_close($conn); } ?> voorbeeld 85

odbc_num_rows Het aantal records dat voldoet aan de query kan worden opgehaald met de functie odbc_num_rows. Het gebruik van deze functie wordt duidelijk gemaakt door het vorig voorbeeld uit te breiden met een regel die het aantal gevonden records aangeeft. <? $query = “SELECT * FROM tabel1”; $conn = odbc_connect(“noord”,””,””,””); if($conn != 0){ //Ga alleen verder als er een verbinding is. $exec = odbc_exec($conn, $query); print (“odbc_num_rows($exec) records gevonden”); odbc_result_all($exec, “border=1”); odbc_close($conn); } ?> voorbeeld 86 opmerking Bij een SELECT statement levert odbc_num_rows bij sommige drivers –1 op. In dit geval moet de functie odbc_fetch_row worden gebruikt om het aantal record in het queryresultaat te bepalen.

odbc_fetch_row Zeker bij een query die veel rijen zal opleveren is het niet de bedoeling zijn dat de gehele tabel in één keer wordt weergegeven. In dit geval zal het beter zijn om de re-

Page 42: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 38 Basiscursus PHP

ejk2002

sultaten op te vragen met odbc_fetch_row. Deze functie haalt een rij op die het ge-volg is van een odbc_exec. De rij wordt gecached voor latere weergave. odbc_fetch_row(query opdracht [,rijnummer]) voorbeeld 87 Als er geen rijnummer is opgegeven zal de eerstvolgende rij worden genomen. In het volgende voorbeeld wordt aangegeven hoe het aantal rijen in een queryresul-taat wordt bepaald. <? $query = “SELECT * FROM tabel1”; $conn = odbc_connect(“noord”,””,””,””); if($conn != 0){ //Ga alleen verder als er een verbinding is. $exec = odbc_exec($conn, $query); while(odbc_fetch_row($exec)){ $i++;} print (“$i records gevonden”); odbc_result_all($exec, “border=1”); odbc_close($conn); } ?> voorbeeld 88

odbc_num_fields De functie odbc_num_fields wordt gebruikt om het aantal velden in een query resul-taat te behalen. Een zinnige functie als er in de in de query gebruik is gemaakt van het jokerteken, of als men geen zin heeft om het aantal velden te tellen. Als het voor-gaande voorbeeld moet worden uitgebreid met de een regel waarin het aantal velden wordt vermeld, dan zal het er als volgt uitzien. <? $query = “SELECT * FROM tabel1”; $conn = odbc_connect(“noord”,””,””,””); if($conn != 0){ //Ga alleen verder als er een verbinding is. $exec = odbc_exec($conn, $query); while(odbc_fetch_row($exec)){ $i++;} print (“$i records en odbc_num_fields($exec) velden gevonden”); odbc_result_all($exec, “border=1”); odbc_close($conn); } ?> voorbeeld 88

Page 43: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 39

ejk2002

odbc_result De functie odbc_result cached the inhoud van een bepaald veld in een queryresul-taat. De syntax voor deze functie geeft dan ook aan dat niet enkel de queryopdracht maar ook het veldnummer of –naam moet worden opgenomen. odbc_result(query opdracht, veld-id); voorbeeld 89 Door odbc_result te combineren met odbc_fetch_row en eventueel odbc_num_fields, wordt het goed mogelijk om aangepaste aantallen rijen met data naar een HTML ta-bel te schrijven. In het volgende voorbeeld worden de eerste 15 rijen naar de brow-ser geschreven. <? $query = “SELECT * FROM tabel1”; $conn = odbc_connect(“noord”,””,””,””); if($conn != 0){ //Ga alleen verder als er een verbinding is. $exec = odbc_exec($conn, $query); $f = odbc_num_fields($exec); print "<table border=1>"; // de tabel wordt begonnen for ($i=1;$i<=15;$i++){ // telling tot 15 odbc_fetch_row($exec,$i); //haal steeds een nieuwe rij print "<tr>"; // elke nieuwe rij begint met <tr> for ($j=1;$j<=$f;$j++){ // tellen van het aantal velden printf("<td>%s</td>", odbc_result( $exec, $j )); // zie opmerking. } print "</tr>"; //de tabelrij wordt afgesloten } odbc_close($conn); } ?> voorbeeld 90 opmerking In plaats van “print” is hier de functie “printf” gebruikt. Met printf kan de opmaak van de weergave worden beïnvloed. De notatie %s geeft aan dat het om een string gaat met een tekstopmaak, die vervangen wordt door de waarde na de komma. Dus of odbc_result nu een tekst of een getal retourneert, de weergave zal een tekstuele, links uitgelijnde zijn.

odbc_field_name Als de veldnamen van de databasetabel moeten worden weergegeven in de HTML-tabel, kunnen deze namen worden opgehaald met odbc_field_name. Ook bij deze functie moeten de queryopdracht en het veldnummer worden aangegeven. Zouden we het voorgaande voorbeeld willen uitbreiden met de veldnamen in headercellen, dan zou onder de tabelopening het volgenden moeten worden toegevoegd. for ($n=1;$n<=$f;$n++){ printf("<th>%s</th>", odbc_field_name( $exec, $n )); } voorbeeld 91

Page 44: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 40 Basiscursus PHP

ejk2002

15.2 MySQL

De combinatie PHP/MySQL is de laatste jaren enorm aan populariteit toegenomen onder webontwikkelaars. Dit niet in de laatste plaats vanwege de kosteloze beschik-baarheid, maar ook vanwege de stabiliteit van MySQL en de eenvoud van PHP. Te-vens is er een ruime beschikbaarheid van documentatie en websites met goede ad-viezen. Deze cursus besteedt geen aandacht aan de installatie en configuratie van de MySQL databaseserver, maar gaat ervan uit dat er al een host met een database beschikbaar is. Voor de software en installatie instructies van MySQL wordt verwe-zen naar de MYSQL website. Om contact te maken met een MySQL database zijn drie gegevens van belang, namelijk: Een hostname Een gebruikersnaam Een wachtwoord.

mysql_connect De functie om de verbinding met de server te maken is: mysql_connect. Deze functie heeft de volgende syntax: mysql_connect("hostnaam","gebruiker","wachtwoord");

mysql_select_db Als er eenmaal een verbinding tot stand is gebracht, moet de database worden gese-lecteerd. Hiervoor wordt de functie mysql_select_db gebruikt. Deze functie heeft de volgende syntax: mysql_select_db("databasenaam",verbinding);

Stel nu dat je als "root" met het wachtwoord "123zxc" een verbinding wil maken met de database "mydata" en dat de de server de localhost is, dan zou dat als volgt kun-nen:

$MyConnect = mysql_connect("localhost","root","123zxc") or die("Sorry, de server is niet beschikbaar."); $MyDb = mysql_select_db("mydata",$MyConnect) or die("Sorry, de database is niet beschikbaar"); mysql_close($MyConnect);

De toevoeging "or die enz" zorgt voor een terugmelding indien er zich een probleem heeft voorgedaan met de verbinding of de database.

De laatste regel in het script sluit de verbinding. Het voorbeeld script doet in feite niets anders dan een verbinding maken, een database selecteren en het geheel weer sluiten. Een dergelijk script zou je kunnen gebruiken om je de databaseserver en databases te testen.

Page 45: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 41

ejk2002

mysql_db_query/mysql_query

Voor de echte database bewerkingen wordt gebruik maakt van standaard SQL. De SQL opdrachten worden als query uitgevoerd met de functies mysql_db_query of in-dien er met één database wordt gewerkt en deze reeds geactiveerd is mer de functie mysql_query. De syntax van de functies is:

mysql_db_query("databasenaam","SQLopdracht"); of mysql_query("SQLopdracht");

In de volgende voorbeelden zal steeds worden gewerkt met mysql_db_query. Mysql_query zou echter evengoed werken aangezien het steeds om bewerking met één database gaat.

Stel nu dat er in de database "mydata" een tabel "adressen" aanwezig is en je wil alle gegevens uit deze tabel opvragen, dan zou als query opdracht kunnen worden gege-ven:

$MyQuery = mysql_db_query("mydata","SELECT * FROM adressen");

LET OP!!! SQL opdrachten dienen doorgaans te worden afgesloten met een puntkomma, maar bij PHP is dat niet het geval. Het zou immers verwarrend kunnen werken voor de uitvoer van het script. Tevens betekent het geven van een SQL opdracht met mysql_db_query NIET dat er meteen een uitvoer naar het scherm is. Dit moet afzonderlijk worden aangegeven.

Behalve de gangbare SQL opdrachten om gegevens toe te voegen te verwijderen of te wijzigen, is het ook mogelijk om nieuwe tabellen aan te maken of te wijzigen.

Hieronder een voorbeeld waarin alle hierboven genoemde mogelijkheden aan de or-de komen. In het voorbeeld wordt eerst een tabel aangemaakt, vervolgens worden een record toe gevoegd, gewijzigd en verwijderd. Als laatste handeling wordt de hele tabel weer verwijderd. Dit alles zonder dat de gegevens op het scherm worden getoond.

<? // Voor de overzichtelijkheid worden de SQL statements als variabelen gedeclareerd. $MaakTabel = " CREATE TABLE artikelen ( artcode varchar(10), artomsch varchar(30), artprijs decimal(10,2))"; $RecordBij = "INSERT INTO artikelen (artcode, artomsch, artprijs) VALUES ('AV7098','Sonie Discman',45.98)"; $WijzigRecord = "UPDATE artikelen SET artprijs=41 WHERE artcode='AV7098'"; $WisRecord = "DELETE FROM artikelen WHERE artcode='AV7098'"; $WisTabel = "DROP TABLE artikelen"; $MyConnect = mysql_connect("localhost","root","123zxc") or die("Sorry, de server is niet beschikbaar.");

Page 46: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 42 Basiscursus PHP

ejk2002

$MyDb = mysql_select_db("mydata",$MyConnect) or die("Sorry, de database is niet beschikbaar"); $MyQuery1 = mysql_db_query("mydata",$MaakTabel); echo "De tabel artikelen is aangemaakt<br>"; $MyQuery2 = mysql_db_query("mydata",$RecordBij); echo "............Er is een record toegevoegd<br>"; $MyQuery3 = mysql_db_query("mydata",$WijzigRecord); echo ".............Record gewijzigd<br>"; $MyQuery4 = mysql_db_query("mydata",$WisRecord); echo "...............Record verwijderd<br>"; $MyQuery5 = mysql_db_query("mydata",$WisTabel); echo ".........Tabel verwijderd............Geloof het maar"; mysql_close($MyConnect); ?>

Tabellen Weergeven

Voor het weergeven van data in de vorm van een HTML tabel bestaat er geen af-zonderlijke functie. De tabel moet worden opgebouwd met behulp van een script dat de rijen uit de query haalt om ze vervolgens in een tabel te plaatsen. Voor het weer-geven van data in tabel vorm bestaan legio constructies. In het volgende voorbeeld wordt met behulp van enkele haast voor zichzelf sprekende functies een tabel opge-bouwd. Het voorbeeld gaat uit van een database "mydata" en een tabel "artikelen". De host, gebruiker en wachtwoord zijn dezelfde als in het vorig voorbeeld.

<? $MyConnect = mysql_connect("localhost", "root", "1234zxc") or die("Sorry, de server is niet beschikbaar"); $MyDb = mysql_select_db("mydata",$MyConnect) or die("Sorry, de database is niet beschikbaar"); $sql = "SELECT * FROM artikelen"; $MyQuery = mysql_db_query("mydata",$sql); $velden = mysql_num_fields($MyQuery); // eerst wordt het aantal velden uit de query afge-lezen. print "<table border=1>"; // de HTML tag voor tabel wordt alvast weggeschreven. for ($n=0;$n<$velden;$n++){ printf("<th>%s</th>", mysql_field_name( $MyQuery, $n )); /*altijd handig om de veldnamen in de tabel op te nemen.*/ } while ($rij = mysql_fetch_array($MyQuery, MYSQL_ASSOC)) { /* De records worden op-gehaal, MYSQL_ASSOC is een voorgedefinieerde constante. */ print "<tr>"; foreach ($rij as $veldwaarde) { /* haal de veldwaarden uit de rijen */

Page 47: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 43

ejk2002

print "\t\t<td>$veldwaarde</td>\n"; /* plaats de veldwaarden in de cellen */ } print "</tr>"; // sluit elke rij af } print "</table>"; // einde tabel mysql_free_result($MyQuery); // het queryresultaat is niet meer nodig. mysql_close($MyConnect); // de verbinding is niet meer nodig. ?>

Het voorbeeld hierboven is slechts één van de vele mogelijkheden om een tabel op te bouwen. Gebruikmaking van geavanceerdere functies kan het script aardig in kor-ten. Bekijk de PHP manual voor meerdere mogelijkheden.

Overigens zal het niet altijd nodig zijn om resultaten op deze manier weer te geven. Het opvragen van een totaal of een gemiddelde bijvoorbeeld zullen slecht een enkele waarde en dus slecht één cel opleveren die simpel kan worden weergegeven met de functie mysql_result.

Page 48: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 44 Basiscursus PHP

ejk2002

16. Diverse Functies

include en require Bepaalde stukken code en zeker classes worden vaak in meerdere scripts gebruikt. In plaats van telkenmale diezelfde code in het script over te nemen, is het handig om deze in aparte bestanden op te nemen. Deze bestanden kunnen vervolgend met een enkele statement worden aangeroepen in het script dat daar gebruik van moet ma-ken. Je krijgt daarmee een overzichtelijke en logische opbouw van je scripts. Ook wijzigingen aanbrengen zal minder problemen opleveren aangezien dit slecht een-maal hoeft te worden gedaan en er niet al te veel zoekwerk binnen een script nodig is. Het aanroepen van een bestand kan met de functies “include” en “require”. Het ver-schil tussen de twee commando's zit hem erin dat bij “include” het bestand slechts zal worden gelezen indien dit daadwerkelijk nodig is, terwijl bij “require” dit altijd het geval zal zijn. Het “required” bestand zal in principe gewoon deel uitmaken van het totale script. Zeker indien er sprake is van functions is het te verkiezen om “include” te grbuiken. Om een bestand aan te roepen wordt de volgende syntax gebruikt. include ("/pad/bestand.php"); require ("/pad/bestand.php"); voorbeeld 92 opmerking Je kan in de php.ini een standaard plek aangeven voor bestanden die je wilt aanroe-pen zodat je alleen de bestandsnaam en niet het pad hoeft aan te geven. Hier nog een voorbeeld om het verschil tussen “include” en “require” duidelijk te ma-ken. If ($antwoord == “ja”){ include (“reactie.inc.php”); //als $antwoord != “ja” wordt dit bestand niet gelezen. require (“meer_reacties.php”); // wat $antwoord ook mag zijn, dit bestand wordt gelezen } else {echo “nou dan niet”;} voorbeeld 93

cookies Cookies zijn een veel gebruikte methode om gegevens naar de client te versturen en later weer op te vragen. Dit maakt het onder meer mogelijk om bezoekers te volgen of om aangepaste informatie te presenteren. Cookies worden verzonden als strings. Geplaatste cookiegegevens worden meteen door PHP herkend als variabelen waar-door er meteen mee kan worden gewerkt. Ze hoeven dus niet eerst apart te worden opgevraagd. Het versturen van een cookie gebeurt met de functie setcookie. De syn-tax hiervan is de volgende. Setcookie (“cookie_naam”,”waarde”[,tijdsduur]); voorbeeld 94 De cookie kan nog worden uitgebreid met een pad, een domein en of er eventueel sprake is van een veilige (https) verbinding. Deze opties zullen hier buiten beschou-wing worden gelaten.

Page 49: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 45

ejk2002

Hier enkele voorbeelden voor het versturen van een cookie met een korte toelichting. setcookie (“mijn_koekje”,”speculaas”); setcookie (“mijn_koekje”,”speculaas”,time()+3600); voorbeeld 95 In de eerste regel is slechts een naam en een waarde meegegeven. In dit geval be-tekent het dat de cookie net zolang geldig zal zijn als de sessie van de gebruiker. Bij het sluiten van de browser vervalt de cookie. In de tweede regel is er een geldigheid van één uur (3600 seconden) meegegeven. Het uur gaat in op het moment dat de regel wordt uitgevoerd dit wordt namelijk inge-geven door de functie time(). Opmerking Met cookies verzonden gegevens worden pas opvraagbaar bij het laden van de vol-gende pagina die ze nodig heeft. De pagina die ze plaats zal de variabelen nog niet kunnen gebruiken, tenzij ze daar reeds eerder geplaatst waren. Het verwijderen van cookies wordt met dezelfde functie gedaan. Hierbij moet echter rekening worden gehouden met het feit dat een cookie enkel wordt verwijderd indien alle bij het plaatsen gebruikte parameters (niet de waarden!!) ook bij het verwijderen worden genoemd. Als de in het vorige voorbeeld genoemde cookies moeten worden verwijderd zou dat op de volgende manier moeten gebeuren. setcookie (“mijn_koekje”); setcookie (“mijn_koekje”,””,time()); voorbeeld 96 moet de waarde van een cookie worden gewijzigd, dan gebeurt dit door een cookie te versturen met de zelfde naam, maar met een nieuwe waarde. Als de waarde “spe-culaas”van “mijn_koekje” moet worden vervangen door “kletskoek”, met een tijdsduur van twee uur, dan verzenden we het volgende: setcookie (“mijn_koekje”,”kletskoek”,time()+7200); voorbeeld 97

sessions Met cookies kunnen data worden overgedragen van pagina naar pagina. Indien de gebruiker de browser echter heeft ingesteld op “geen cookies ontvangen”, dan zullen de pagina’s die deze data nodig hebben echter niet goed functioneren. Is het van groot belang dat dit wel het geval is, kunnen we het onthouden van gebruikersgege-vens overlaten aan de server door te werken met sessions. De sessievariabelen zul-len dan voor de duur van de sessie worden weggeschreven naar een in de “php.ini” aangegeven directory. Standaard is dit de directory /tmp een voor unix en linux ge-bruikers geen onbekende directory. Standaard bestaat deze map niet in Windows. Wordt er gebruik gemaakt van Windows95+, dan kan de directory voor tijdelijke be-standen worden gewijzigd met door de volgende regel in de “php.ini” toe te voegen. session.save_path = c:\windows\temp Om met sessievariabelen te kunnen werken moet een sessie worden gestart en moeten de sessievariabelen worden geregistreerd. De opdrachten hiervoor zijn:

Page 50: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 46 Basiscursus PHP

ejk2002

session_start(); session_register(sessievariabele); voorbeeld 98 opmerking Wordt er veelvuldig gewerkt met sessies, dan kan dit kan worden gestandaardiseerd, in de “php.ini” met de volgende regel: session.auto_start = 1 De opdracht session_start() kan dan achterwege worden gelaten en zal de sessie impliciet worden gestart met session_register. Hieronder een voorbeeld van het werken met sessions. <? // dit is het script voor de eerste sessiepagina. session_start(); // de sessie wordt begonnen. Session_register(“tel”); // de sessievariabele wordt geregistreerd, zonder het $-teken $tel ++; // van $log wordt een teller gemaakt. echo “Je hebt nu $log keer naar deze eerste pagina gekeken<br>Klik op vernieuwen”; ?> voorbeeld 99 De geregistreerde variabele kan zolang de sessie intact is in elke willekeurige php-pagina worden opgevraagd. Zo kan de laatste waarde van de teller uit het vorige voorbeeld op een andere pagina worden opgevraagd met het volgende script. <? // op deze pagina wordt de teller weer opgevraagd. session_start(); session_register(“tel”); echo “je hebt maar liefst $tel keer naar de eerste pagina gekeken”; ?> voorbeeld 100 Sessies worden automatisch beëindigd bij het sluiten van de browser. De geregi-streerde gegevens komen hier ook mee te vervallen. Als gegevens eerder moeten komen te vervallen dan kan de functie session_unregister(variabele) worden ge-bruikt. Moet de sessie eerder worden beëindigd, dan kan de functie sessi-on_destroy() worden toegepast.

rand met de functie “rand” kan een willekeurige waarde tussen een eventueel aangegeven minimum en maximum worden gekozen. Om deze functie kunnen gebruiken moet echter eerst de random number generator (zie ook “array_rand”) worden gestart. De volgende voorbeelden geven de mogelijkheden van “rand” aan. De functie “srand” is reeds eerder geweest, terwijl de functie “getrandmax()” niet anders doet dan de maximale willekeurige waarde retourneren. <?

Page 51: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 47

ejk2002

srand ((double) microtime() * 10000000); //de activering van willekeurige getallen. $A = rand(5,20); // een willekeurige waarde tussen 5 en 20 (inclusief) $B = rand (); // een getal tussen 0 en het maximale getal $C = getrandmax (); // het maximale willekeurige getal echo "A = $A; B = $B; C = $C"; ?> voorbeeld 101

header Met de functie “header”is het mogelijk om HTTP informatie te versturen naar de client browser. Van de mogelijkheden die deze functie heeft zal er hier twee worden aan-gehaald. De eerste mogelijkheid is het redigeren van de browser naar een andere locatie. Is het bijvoorbeeld de bedoeling dat na een bepaalde bewerking de browser naar een bepaalde website gaat, dan moet de volgende opdracht worden gegeven. if ($uitleg == “ja”){ header (location: http://www.php.net); } voorbeeld 102 Een tweede mogelijkheid die de header functie biedt is het voorkomen dat door PHP gegenereerde HTML wordt gecached door de client browser of een tussenliggende proxy-server. De meest eenvoudige methode om dit te voorkomen is door het mee-sturen van een reeds verstreken datum en tijd. Dit gaat als volgt: header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); voorbeeld 103 Omdat header informatie het eerste is dat de browser leest, moet deze functie in het script worden geplaatst zonder dat er reeds sprake is geweest van een HTML uit-voer. Als dit toch noodzakelijk mocht zijn, plaats de instructie dan in een bestand dat met “include” wordt aangeroepen.

empty en isset Met de functies “empty” en “isset” kan worden nagegaan of variabelen al of niet be-staan. Uit het volgende voorbeeld mag blijken dat deze twee functies niet geheel el-kanders spiegelbeeld zijn. if (empty($var)) { print 'de variabele is of 0, of bestaat in het geheel niet'; } if (!isset($var)) { print ‘de variabele bestaat helmaal niet’; } voorbeeld 104

extra string functies Het is vaak wenselijk om strings van een gelijke opmaak te voorzien. Moeten er bij-voorbeeld gegevens worden toegevoegd aan een database, dan zou ervoor kunnen

Page 52: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 48 Basiscursus PHP

ejk2002

worden gezorgd dat ongeacht de wijze waarop de gebruiker het invult, de gegevens worden omgezet naar kleinletters, hoofdletters, alleen de eerste letter van een woord als hoofdletter of alleen de eerste letter van alle woorden in de string als hoofdletter. Voor het omzetten van strings kan van de volgende functies gebruik worden ge-maakt: - strtolower – omzetting naar kleinletters - strtoupper – omzetting naar hoofdletters - ucfirst – de eerste letter wordt een hoofdletter - ucwords – de eerste letter van elk woord wordt een hoofdletter <? $org_string = "dIt is de OrigiNele teksT"; print strtolower($org_string); // er wordt nu weergegeven “dit is de originele tekst” print strtoupper($org_string); // er wordt nu weergegeven “DIT IS DE ORIGINELE TEKST” print ucfirst(strtolower($org_string)); // er wordt nu weergegeven “Dit is de originele tekst” print ucwords(strtolower($org_string)); // er wordt nu weergegeven “Dit Is De Originele Tekst” ?> voorbeeld 105 Indien er een controle moet worden uitgevoerd op het aantal tekens dat een string bevat, kan de functie “strlen” worden gebruikt. Een simpel voorbeeld toont het ge-bruik van deze functie aan. if (strlen($woord) > 5){ echo “dit woord telt meer dan 5 letters” } voorbeeld 106

Page 53: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Basiscursus PHP pagina 49

ejk2002

17. Regular Expressions

Met Regular Expressions geeft PHP de mogelijkheid om complexe vergelijkingen te maken op data. PHP heeft daar een aantal standaard functies voor maar er komt een tijd dat je zoveel vergelijkingen moet maken om het resultaat te vinden dat regular expressions een uitkomst kunnen zijn. Om strings te vergelijken op leestekens maak je gebruik van de character classes. Er zijn verschillende character classes die je standaard kan gebruiken: [[:alpha:]] - Vergelijking op alle karakters [[:digit:]] - Vergelijking op alle cijfers [[:alnum:]] - Vergelijking op letters en cijfers [[:space:]] - Vergelijking op spaties [[:upper:]] - Vergelijking op hoofdletter strings [[:lower:]] - Vergelijking op kleinletter strings [[:xdigit:]] - Vergelijking op Hexadecimale waarden voorbeeld 107 Een combinatie van de mogelijkheden is ook mogelijk. De vergelijkingen kan je laten beginnen of eindigen met voorwaarden. Zo gebruik je het ^ teken om aan te geven dat een voorwaarde alleen voor de eerste positie van de vergelijking moet werken. Voor de laatste positie gebruik je een $. Een aantal voorbeelden: <? $string = "Hier gaan we eens een aantal vergelijkingen op loslaten."; // Kijk of het eerste karakter een Tussen de A en de M zit of tussen de N en de Z. if (ereg( "^[A-M]", $string )) {

print "Eerste teken is een hoofdletter tussen de A en de M"; } elseif (ereg( "^[N-Z]", $string )) {

print "Eerste teken is een hoofdletter tussen de N en de Z"; } // Dezelfde vergelijking maar dan voor kleinletters. if (ereg( "^[a-mA-M]", $string )) {

print "Eerste teken is een klein/hoofdletter tussen de A en de M"; } else if (ereg( "^[n-zN-Z]", $string )) {

print "Eerste teken is een klein/hoofdletter tussen de N en de Z"; } // Nagaan of het laatste teken een kleinletter is. if (ereg( "[a-m]$", $string )) {

print "Laatste teken is een kleinletter tussen de a en de m"; } else if (ereg( "[n-z]$", $string )) {

print "Laatste teken is een kleinletter tussen de n en de z"; }

Page 54: -  · PDF fileejk2002 Inhoud 1. Introductie 1 Wat is PHP Welke mogelijkheden heeft PHP Een korte geschiedenis van PHP 2. Integratie met HTML 3 3

Pagina 50 Basiscursus PHP

ejk2002

// Nagaan of het eerste teken een H is, en of het laatste teken een n is. if (ereg( "^[H]|[n]$", $string )) {

print "Eerste teken is een H, het laatste teken is een n"; }

// Nagaan of het eerste teken een H is en het laatste teken een n. if (ereg( "^[H&n]$", $string )) {

print "Eerste karakter is een H, het laatste karakter is een n"; }

?> voorbeeld 108 De bovenstaande voorbeelden maken allen gebruik van de functie “ereg”. Dit is niet alleen vergelijkt, maar tevens hoodlettergevoelig is. Is dit niet van belang, dan kan ook de functie “eregi” worden gebruikt. Als een string een kleine aanpassing behoeft, is het mogelijk veranderingen aan te brengen in de string door gebruik te maken van de functie “ereg_replace”. Hier volgt een voorbeeld van de manier waarop dit werkt. <? session_start(); session_register(“tel”); $tel++; $geweest = “U bent hier niet eerder geweest”; if ($tel > 1){ ereg_replace (“niet”, “al”, $geweest); } print $geweest; ?> voorbeeld 109 In het voorbeeld hierboven had de niet hoofdlettergevoelige functie “eregi_replace” overigens even goed gewerkt.