Dynamische websites met PHP (basis) Karel Nijs 2010/09
Leswijze • Eerst wat theorie • Begeleid met (korte) oefeningen – Editor = UltraEdit – Geen DreamWeaver – Browser = Internet Explorer • Vereiste voorkennis: (X)HTML + JavaScript • Online hulp: http://www.php.net/manual/en/
• Korte pauze rond 20u
PHP basis – overzicht cursus • • • • • • • • • • • •
HTML intro Wat is PHP? De installatie van PHP Eerste stappen in PHP Variabelen Rekenen met PHP Arrays Formulieren If ... Else ... Switch! Lussen Mailen via PHP Teller en gastenboek
PHP basis – les 2 • • • • •
Korte herhaling les 1 Variabelen > Strings Rekenen met PHP Arrays Formulieren
Korte herhaling les 1 • PHP code tussen: • PHP code is hoofdlettergevoelig • Tussen je code mag enkel PHP syntax of commentaar staan: géén HTML of andere tekst • Variabelen dienen om tijdelijke waardes op te slaan in het geheugen • Elke instructieregel eindigt op een kommapunt “;”
Korte herhaling les 1 • • • • • •
Functies voor output: echo() en print() Commentaar: //... of /* ... */ Opletten met speciale karakters -> opl. = escaping Toekenning: $variabele = waarde; PHP is “loosly typed” PHP, HTML en whitespace
PHP basis – les 2 • • • • •
Korte herhaling les 1 Variabelen > Strings Rekenen met PHP Arrays Formulieren
Variabelen • Strings: – String = reeks van karakters (cijfers, letters, speciale karakters, …) • Bv. “dkjqfoeiu511!^mùm”
– Info over type: http://php.net/manual/en/language.types.string.php – Concatenatie met . of +
Variabelen • String functies: – Functie referentie: http://php.net/manual/en/ref.strings.php – Lengte opvragen: strlen() – Zoeken: strpos()
PHP basis – les 2 • • • • •
Korte herhaling les 1 Variabelen > Strings Rekenen met PHP Arrays Formulieren
Rekenen met PHP • Soorten operatoren – – – –
Rekenkundig: Toewijzing: Vergelijking: Logisch:
+, -, *, /, %, ++, -=, +=, -=, *=, /=, .= , %= ==, !=, <>, <, >, <=, >= &&, ||, !
– Referentie: http://www.php.net/manual/en/language.operators.php
Oefening 1 • Lees volgende pagina over de werking van operatoren: – http://www.w3schools.com/php/php_operators.asp
• Zet volgende mathematische expressies om in PHP expressies: a + b + c +d A
gemiddelde = 4
B
volume van bol = 4/3 x 3,142 x straal³
C
Fahrenheit = (Celcius x 9/5) + 32
Oefening 1 D
volume van cilinder = 3,142 x straal² x hoogte
E
omtrek van cirkel = 2 * 3,142 x straal
• Schrijf de resultaten naar het scherm als je weet dat: – – – –
a=5, b=3, c=99 en d=13 straal = 3 hoogte = 4 Celcius = 21°
• Deze waardes moeten in variabelen gestoken worden (niet gewoon in de functie invullen)
Oefening 1 • Tip: hou rekening met operator precedence! – http://www.php.net/manual/en/language.operators. precedence.php
• Tip voor het HTML formaat: – Google: HTML entities
• Operator referentie: – http://php.net/manual/en/language.operators.php
• Voor gevorderden: – Gebruik de functie pow() uit de Math library
Oefening 1 • Gewenste oplossing:
Rekenen met PHP • Speciale rekenkundige operator: – ++ • “plus plus” • Bv. • Idem aan:
$teller++; $teller = $teller + 1;
– -• “min min” • Zelfde werking als ++
– Beide véél gebruikt bij lussen (zie verder)
Rekenen met PHP • Functies: – round( getal, cijfers na komma ) • Afronden tot x cijfers na de komma • http://be2.php.net/manual/en/function.round.php – sprintf( formaat, getal ) • Geeft een geformatteerde string terug • Ook toepasbaar op tekst (strings) • http://be2.php.net/manual/en/function.sprintf.php
Oefening 2a • Bereken de prijs inclusief BTW – Prijs zonder BTW = 113 – BTW tarief = 19,6% – ! Deze waardes moeten in variabelen gestoken worden (niet gewoon in de functie invullen)
• Gewenste output: – Let op: afgerond getal!
Oefening 2b • Bereken de prijs inclusief BTW – Prijs zonder BTW = 113 – BTW tarief = 19,6% – Formaat = %0.12f
• Gewenste output:
PHP basis – les 2 • • • • •
Korte herhaling les 1 Variabelen > Strings Rekenen met PHP Arrays Formulieren
Arrays • Ook gekend als: lijsten • Gebruikt om meerdere waardes aan een variabele toe te kennen – Dus NIET: $dagen1 $dagen2 $dagen3 ... $dagen7
= “maandag”; = “dinsdag”; = “woensdag”; = “zondag”;
Arrays • 3 soorten: – Numerische – Associatieve – Multi-dimensionale
Arrays • Numerische arrays: – Lange notatie:
$dagen[0] $dagen[1] $dagen[2] ... $dagen[6] sleutel (key)
= “maandag”; = “dinsdag”; = “woensdag”; = “zondag”; waarde (value)
– Korte notatie: $dagen = array( “maandag”, “dinsdag”, ..., “zondag”);
Arrays • In PHP moet je de grootte van arrays niet vooraf bepalen – Automatische dimentionering – Bv. $dag[2] = “woensdag”;
• Arrays in PHP starten vanaf 0
Arrays • Associatieve arrays: – Element raadplegen met naam ipv. getal – Voorwaarde: declareren met naam!
$dag[0] = “maandag”;
$dag[“M”] = “maandag”;
echo $dag[0];
echo $dag[“M”];
Arrays • Associatieve arrays: – Lange notatie: $dagen[‘MA’] = “maandag”; $dagen[‘DI’] = “dinsdag”; $dagen[‘WOE’] = “woensdag”; ... $dagen[‘ZO’] = “zondag”;
– Korte notatie: $dagen = array( “MA” => “maandag”, “DI” => “dinsdag”, ..., “ZO” => “zondag”);
Arrays • Multi-dimenstionale arrays: – Arrays in arrays! $families = array ( "Griffin“ => array ( "Peter", "Lois", "Megan" ), "Quagmire“ => array ( "Glenn"
),
"Brown“ => array( "Cleveland", "Loretta", "Junior" ) );
echo "Is " . $families['Griffin'][2] . " a part of the Griffin family?"; Is Megan a part of the Griffin family?
Arrays • Multi-dimenstionale arrays: – Voorbeeld $families = array ( "Griffin“ => array ( ... ), "Quagmire“ => array ( ...
$families[“Griffin”]
),
"Brown“ => array( "Cleveland", ... ) );
$families[“Brown”][0]
Arrays • Array referentie: – http://php.net/manual/en/language.types.array.php
• Array functies: – Referentie: http://php.net/manual/en/ref.array.php – count( $arr ) geeft aantal elementen terug
Oefening 3 • Maak een associatieve array die 6 hoofdsteden bevat – Als sleutel gebruik je de landcode – Als waarde gebruik je de hoofdstad
• Druk een hoofdstad van een bepaald land af • Geef het aantal elementen • Druk de hele array af in één keer – Tip: print_r()
• Gevorderden: – Probeer zowel de lange als korte notatie – Geef het derde element weer • Tip: array_keys( )
Oefening 3 • Oplossing: – Hoofdsteden: Google: wiki hoofdsteden – Landcodes: Google: wiki landcodes
Arrays • Opgelet: – Werkt: echo "De hoofdstad van Denemarken is $hoofdstad[DK]”; echo "De hoofdstad van Denemarken is " .
$hoofdstad[DK];
echo "De hoofdstad van Denemarken is " .
$hoofdstad["DK"];
echo "De hoofdstad van Denemarken is " . $hoofdstad['DK'];
– Werkt niet: • Resultaat: Parse Error • Reden: schrijfwijze voorbehouden voor defined variables echo "De hoofdstad van Denemarken is $hoofdstad[‘DK’]”;
PHP basis – les 2 • • • • •
Korte herhaling les 1 Variabelen > Strings Rekenen met PHP Arrays Formulieren
Formulieren • Voorbeeld:
Formulieren • Bestaan sinds het begin • Doel: informatie doorzenden van bezoeker • Tutorial: http://www.w3schools.com/html/html_forms.asp
Formulieren • Code voorbeeld:
Formulier HTML Formulier met input text
Uw naam :
Formulieren • Maar zonder actie gebeurt er niets! – Het action attribuut specifieert welke (PHP) pagina het formulier zal verwerken
Formulieren • De methode moet je ook opgeven! – Het method attribuut specifieert op welke manier je de gegevens gaat verzenden: • GET • POST
Formulieren • De methode moet je ook opgeven! – Alle velden op het formulier zijn automatisch beschikbaar via ofwel GET ofwel POST
in verwerk.php:
Formulieren • Methode: GET vs. POST! – GET: • Variabelen worden doorgestuurd in de adresbalk • Bv. http://www.website.be?vnaam=Karel&fnaam=Nijs
• • • • •
Standaard methode + Links kunnen gebookmarked worden - Niet geschikt voor paswoorden of andere geheime velden - Veldlengte beperkt tot 100 karakters - URL lengte beperkt tot 256 karakters
Formulieren • Methode: GET vs. POST! – POST: • Variabelen worden gepost naar de server • Bv. http://www.website.be (geen velden in de URL)
• • • •
+ Onzichtbaar voor iedereen + Onbeperkte lengte + hoeveelheid van gegevens - Links kunnen niet gebookmarked worden - Refresh kan “repost warning” geven
Formulieren • Methode: GET vs. POST! – POST: • - Refresh kan “repost warning” geven
Formulieren • Methode: REQUEST – Bevat alle variabelen uit: • GET • POST • COOKIE
– Bv. http://www.website.be?vnaam=Karel (fnaam wordt gepost)
Oefening 4a • Maak een invulformulier les2_oefening4a1_oplossing.php
• Zorg dat het formulier verzonden wordt naar: les2_oefening4a2_oplossing.php
• Hou deze oefening bij voor volgende week!
Oefening 4b • Gevorderden: – Maak de gehele oplossing enkel in les2_oefening4b_oplossing.php
– Zorg dat ook de checkboxen en radiobuttons verstuurd en verwerkt worden
PHP basis – volgende les (3) • • • •
Korte herhaling les 2 If ... Else ... Switch! Lussen meer?
Bedankt voor jullie aandacht!