190 likes | 294 Views
Workshop PHP. Een productencatalogus. Case. Uitgever van software wil webpagina met productgegevens publiceren op basis van catalogus. Het gaat momenteel om slechts 5 items
E N D
Workshop PHP Een productencatalogus
Case • Uitgever van software wil webpagina met productgegevens publiceren op basis van catalogus. • Het gaat momenteel om slechts 5 items • Afbeelding, de naam, een beschrijving van het product, de prijs en het bestelnummer moeten worden getoond op één pagina. • Zowel op de afbeelding, als op de productnaam moet kunnen worden doorgeklikt, waarna een nieuw scherm wordt geopend met detailgegevens over het item: • productnaam • afbeelding • prijs • highlights van het product • systeemvereisten voor het product
Voorwaarden (1) • Het ontwerp moet flexibel en dynamisch zijn. Dus als er een nieuw product bij komt, of er gaat één uit de catalogus, dan moet dat makkelijk aan te passen zijn. • De pagina’s moeten in XHTML/PHP worden opgezet • Aangezien het geringe aantal producten in catalogus (5), wordt er NIET gewerkt met een database. In plaats daarvan, worden de productgegevens middels arrays beschikbaar gesteld. • De arrays met productgegevens moeten in een aparte include-file worden gedefinieerd (overzichtelijk en onderhoudbaar, met voldoende intern commentaar)
Voorwaarden (2) • De unieke sleutel voor de producten is de EAN code • De volgende indeling in arrays moet worden gevolgd: • Array EAN, Naam • Array EAN, Prijs • Array EAN, Omschrijving • Array EAN, systeemvereisten • Array EAN, highlights
Op te leveren • webpagina Catalogus.php, met een overzicht van alle vijf producten in lijstvorm • webpagina Catalogusdetail.php, met de detailgegevens over een geselecteerd product • include pagina Catalogus.inc.php, met de definitie en content van de diverse arrays • include pagina Header.inc voor de header op elke pagina • include pagina Footer.inc voor de footer op elke pagina
Benodigde PHP kennis (1) • Include() functie gebruiken • Require() functie gebruiken • Array_multisort() functie gebruiken • Foreach() functie gebruiken • File_exists() functie gebruiken • Isset() functie gebruiken • If() functie gebruiken • Variabelen versturen/afhandelen met $_GET
Benodigde PHP kennis (2) • Variabelen declareren en gebruiken • Arrays declareren en gebruiken: • Declareren • Vullen • Sorteren • Doorlopen in een lus • Benaderen op key
Uitleg: Code insluiten (include/require) (1) • Bestand op de server wordt ingesloten in een ander bestand • Templates voor opmaak (statisch, HTML, headers, footers) include() • Dynamische code in PHP pagina’s (bijvoorbeeld vaak te gebruiken functies, libraries) require()
Uitleg: Code insluiten (include/require) (2) • Include()/include_once() xxx.inc • Require()/require_once() xxx.inc.php • Voorbeeld: <?php // Server-side include voor de catalogus: require_once('catalogus.inc.php');
Uitleg: Arrays (geïndexeerd) • Structuur waarin meerdere variabelen worden opgeslagen • Naam en index (begint bij 0 (nul)!!) • Voorbeeld: $maand = array(“jan”, “feb”, “mrt”, … “nov”, “dec”); • Inhoud benaderen op index: $maand[4] of $maand[&teller]
Uitleg: Arrays (associatief) (1) • Sleutel wordt zelf bepaald door string te gebruiken • Voorbeeld: $producten = array( "9789045630816" => "Studio Webdesign", "9789045632063" => "Plantenencyclopedie 2004", "9789045632902" => "PC Drukkerij 3 Suite", "9789045634814" => "Creatief Fotolab", "9789045634838" => "MovieJack DVD Pro" ); • $product[9789045630816] geeft dus “Studio Webdesign”
Uitleg: Arrays doorlopen • Vaak wil je de hele array van boven tot onder doorlopen om met elk element iets te doen: Foreach($producten as $ean => $naam) { echo $naam; } • Elke iteratie geeft de sleutel ($ean) en de waarde ($naam) van het huidige element
Uitleg: Arrays sorteren • Arrays kun je sorteren met de functie array_multisort() • Bijvoorbeeld: array_multisort($producten, SORT_ASC); • Hier wordt de array $producten oplopend gesorteerd
Opdracht: maak catalogus.inc.php (1) • Aanwijzingen: • Je declareert alle te gebruiken arrays in dit script • Alle 5 arrays zijn associatieve arrays, waarvan de key bestaat uit het EAN nummer • Content van de producten vind je in document: http://www.serviceatschool.nl/cms/uploads/file/klassen/s3a/productcatalogus%20opdracht%20PHP.doc • De arrays $systeemvereisten en $highlights zijn meerdimensionaal!
Opdracht: maak catalogus.inc.php (2) • Meerdimensionale arrays declareer je als volgt: $rooster = array( “maandag" => array( “ochtend" => “lokaal 105", “middag" => “lokaal 107" ), “dinsdag" => array( “ochtend" => “lokaal 107", “middag" => “lokaal 23" ) ); • $rooster[‘dinsdag’][‘middag’] geeft bijvoorbeeld waarde “lokaal 23” • Eerst wordt de juiste rij geselecteerd, dan de bijbehorende kolom
Opdracht: maak catalogus.php (1) • Aanwijzingen: • Open met een require(), waarin je de code van catalogus.inc.php opneemt in je script • Sorteer vervolgens de array $producten oplopend • Doorloop dan de array $producten van begin tot eind mbv foreach()
Opdracht: maak catalogus.php (2) • Elke iteratie binnen deze lus moet het volgende doen: • Controleren op bestand xxxx.gif (waarbij xxxx het EAN nummer is; dit is beschikbaar in je key variabele in de foreach() functie!) • Als bestaat: afbeelding weergeven op scherm en link van maken • Productnaam op scherm weergeven (ook link van maken) • Omschrijving en prijs op scherm weergeven • Zorg voor juiste indeling en HTML opmaak; maak ook gebruik van header.inc en footer.inc