Inleiding | Introductie weergeven | Praktijkvoorbeeld |
|
|
Inleiding |
|
---|---|
In het vorige hoofdstuk heb je een geleerd een verbinding te maken met de database management service. Deze heb je nodig om de volgende stap - het weergeven van een gegevens - te kunnen uitvoeren. Het maken van een verbinding is bij ieder opvraag van een document opnieuw nodig. Ook in dit hoofdstuk tref je een praktijkvoorbeeld aan. Aan het einde van dit hoofdstuk weet je :
|
|
|
|
Voorbeeld code | Voor de webwinkel ontwikkelen we een klanten site en een admin site. Je kunt starten met de code aanwezig in het bestand voorbeeldWebwinkel.zip. Daarin is het weergeven van producten al aanwezig evenals het maken van de connectie met de database. Het weergeven wordt hieronder uitgelegd. |
Wat heb je nodig om iets weer te geven |
|
Zoals hierboven is besproken heb je een verbinding nodig om iets weer te kunnen geven. Is de verbinding tot stand gebracht dan kan een sql-opdracht worden uitgevoerd en wordt het resultaat in variabele geplaatst. Met dit resultaat kan dan weer verder worden gewerkt. Een voorbeeld: We willen een scherm met een lijst van de gegevens van alle artikelen in de database met de mogelijkheid om een artikel te verwijderen of te veranderen. Eerder heb je gezien dat het sql commando SELECT * from product; alle gegevens van alle artikelen ophaald. Voor overzichtelijke code maken we een variabele genaamd $query aan: $query = "SELECT * from product"; Het is om beveiligingsredenen aan te raden om je sql-opdracht niet meer gegevens te laten ophalen dan nodig is voor de verwerking. Dus als je bijvoorbeeld alleen artikelnummer en artikelomschrijving nodig hebt, zet dit dan neer in plaats van het sterretje. Als je alle velden nodig hebt kun je natuurlijk wel het sterretje gebruiken. Het resultaat van deze query en de verbinding met de database moet je vervolgens weer terug geven. Verwissel query en db niet en vergeet niet het dollarteken. Met de code $resultaat = $db->query($query); vragen we aan de database management service de gegevens. De teruggestuurde gegevens worden in de variabele $resultaat opgeslagen. Vervolgens moeten we met php commando's de gegevens in het $resultaat om zetten tot html code zichtbaar voor de gebruiker. Je haalt één record uit de lijst op met het commando: $row = $resultaat->fetch_row();$row is een array met de waarde van de attributen. Het is handig om deze in een lijst met namen om te zetten die overeen komen met de namen van de attributen in de database list($id,$naam,$prijs,$voorraad, $omschrijving) = $resultaat->fetch_row())Je wilt de gegevens vaak per rij weergeven. Daartoe gebruiken we een lus structuur b.v. while(list($id,$naam,$prijs,$voorraad, $omschrijving) = $resultaat->fetch_row()) { $melding .= "$id, $naam, $prijs, $voorraad, $omschrijving, $prijs<br/>"; } |
|
|
|
Praktijkvoorbeeld |
|
Opdrachten |
|
voorbeeld 2: index.php |
<?php
//Laad database code
require_once("database.php");
//Laad algemene code
require_once("algemeen.php");
//Laad code voor de acties met betrekking tot producten die we op de database gaan doen
require_once("product.php");
$actie="Toon Artikelen";
$uitvoer = "";
// afhandelen actie ofwel uitvoer maken
// Vertel hier wat een switch ook weer doet.
switch($actie)
{
case "Toon Artikelen": $uitvoer = toonArtikelenLijst(); break;
case "Toon VerbindingStatus": $uitvoer = toonVerbindingStatus(); break;
default: $uitvoer = "<h1>Welkom bij ons garagebedrijf</h1>"; break;
}
/* Met onderstaand echo commando kun je een stuk text tussen END en END;
naar de client computer sturen
*/
echo <<<END
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Page title</title>
<style type="text/css">
td
{
border:1px groove black;
}
</style>
</head>
<body>
<h1>Garagebedrijf</h1>
$uitvoer
</body>
</html>
END;
//einde van het PhP blok
?>
|
voorbeeld 2: product.php |
Het volgende bestand bevat functies voor de verschillende handelingen op de database
met betrekking tot producten.
In het vervolg van deze cursus zal dit bestand steeds meer functies krijgen.
<?php /* De functie toonArtikelenLijst voert de sql query voor de productenlist uit op de database en maakt met het resultaat van deze query een tabel in html. Deze html wordt geretourneerd naar de aanroepende code. */ function toonArtikelenLijst() { // maak verbinding $uitvoer=""; // initialisatie van variabele om uitvoer in te plaatsen $melding=""; // initialisatie van variabele om connectie foutmelding in te plaatsen global $db; // Haal een verwijzing naar de huidige connectie in database.php if(!$db) maakVerbinding($db,$melding); if(!$db) // test verbinding { // mislukt $uitvoer="Er is geen database connectie! ".$melding; } else { $query = "SELECT * from product"; $resultaat = $db->query($query); if($resultaat) { // resultaat tot uitvoer verwerken // maken tabel $uitvoer .= "<table summary=''>\n"; $uitvoer .= "<tr>"; $uitvoer .= "<td>id</td>"; $uitvoer .= "<td>naam</td>"; $uitvoer .= "<td>prijs</td>"; $uitvoer .= "<td>voorraad</td>"; $uitvoer .= "<td>omschrijving</td>"; $uitvoer .= "<td>wijzig</td>"; $uitvoer .= "<td>verwijder</td>"; $uitvoer .= "</tr>\n"; // lus door alle rijen aanezig in het resultaat while(list($id,$naam,$prijs,$voorraad, $omschrijving) = $resultaat->fetch_row()) { $uitvoer .= "<tr><td>$id</td><td>$naam</td><td>$prijs</td><td>$voorraad</td><td>$omschrijving</td>"; $uitvoer .= "<td><form action='{$_SERVER['PHP_SELF']}' method='post'>"; $uitvoer .= "<input type='hidden' name='productid' value='$id'>"; $uitvoer .= "<input type='submit' name='actie' value='wijzig'></form></td>"; $uitvoer .= "<td><form action='{$_SERVER['PHP_SELF']}' method='post'>"; $uitvoer .= "<input type='hidden' name='productid' value='$id'>"; $uitvoer .= "<input type='submit' name='actie' value='verwijder'></form></td></tr>"; $uitvoer .= "</tr>\n"; } $uitvoer .="</table>"; } else { $uitvoer .= "<br/>Fout in query"; } } //sluit database verbreekVerbinding(); return $uitvoer; // Stuur de waarde van $uitvoer terug } //einde van het PhP blok ?> |
|