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
Schematisch ontwerp: catalogus.php
Schematisch ontwerp: catalogusdetail.php
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( " " => "Studio Webdesign", " " => "Plantenencyclopedie 2004", " " => "PC Drukkerij 3 Suite", " " => "Creatief Fotolab", " " => "MovieJack DVD Pro" ); $product[ ] 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: ssen/s3a/productcatalogus%20opdracht%20PHP. doc ssen/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