PHP en MySQL deel 3 - Gegevens ophalen

In het vorige deel is er uitgelegd hoe je gegevens moet aanmaken en bewerken. Wat echter nog veel belangrijker is, is het weergeven van de gegevens!

Gegevens weergeven in tabel

Als je de gegevens ophaalt, komt het in een soort kluts aan op je computer. Die moet je dmv PHP ontcijferen. We beginnen met een andere schone tabel, producten genoemd. Hierin staan producten en hun prijs en andere kenmerken

Productnaam Omschrijving Kleur Prijs per stuk Voorraad
Wortelen Groente Oranje €1 500
Aardbijen Fruit Rood €0,10 400
Computers De snelste ooit Zwart €1000 10
Laptops Erg handig Wit €500 20

Nu staat dit zo in een database. Nu willen we die gewoon als een tabel te zien krijgen, hier komt dus HTML bij aan te pas.

Eerst willen we gewoon de hele tabel ophalen, dus elk product en elk gegeven.

$tabel = mysql_query("SELECT * FROM `producten`");

Uitleg

SELECT = selecteer

  • = alles

FROM = van

`producten` = de tabel met de gegevens

Dus letterlijk vertaald: selecteer alles van de tabel producten. Nu heb je via PHP een mooie value $tabel, maar als je die zomaar echo'd, krijg je een grote warboel. Die warboel gaan we nu in Array's zetten. Dit gaat via een while. Maar, die array is één rij. Als hij de volgende rij afgaat wordt de array overschreven. Je moet dus IN de while iets gaan doen met de gegevens, in een tabel zetten. De opdrachten in de while worden continu (voor elke rij) herhaald. Dus je kan niet daar starten, dan start hij continu nieuwe tabellen. Dat moet er dus VOOR.

echo '<tabel><tr><td>Naam</td><td>Omschrijving</td><td>Kleur</td><td>Prijs</td><td>Voorraad</td></tr>';
<p>// Header van tabel aangemaakt
while($rij = mysql_fetch_object($tabel)) {
</p>
   echo '<tr><td>'.$rij['Productnaam'].'</td>';
<p>   // Rij aangemaakt en eerste cel
</p>
   echo '<td>'.$rij['Omschrijving'].'</td><td>'.$rij['Kleur'].'</td><td>'.$rij['Prijs'].'</td><td>'.$rij['Voorraad'].'</td></tr>';
<p>   // Rest van de rij af en afgesloten
}
</p>
echo '</table>';
// Tabel afgesloten

Nu komt er keurig een tabel uitrollen.

Het weergeven van gegevens van één product, of zelfs enkel de prijs!

Dat is eigenlijk niet zo heel moeilijk. Je had de basis SQL code

SELECT * FROM `producten`

Hiermee haal je alles op. Nu kan je met SELECT een kolom kiezen. Dus je wilt enkel de kolom Voorraad ophalen doe je dat zo:

SELECT 'Voorraad' FROM `producten`

Let op: Wat je moet selecteren is met single quotes ('), met databases enzo doe je de `

Hier selecteer je de kolom voorraad van de database producten. Zo kan je ook prijs en naam en omschrijving enzovoorts invullen. Maar je kan nog meer specificeren, je kan ook zeggen: selecteer de gegevens uit de kolom voorraad uit database producten als de naam xyz is. Dus je kan dan één of meerdere sepcifieke rijen kiezen waaruit de gegevens worden gehaald. Die kan je ook combineren met de SELECT *, waarmee je dus alles van rij xyz op kan halen. Dus als we de prijs een computer willen weten doen we dat zo:

SELECT 'prijs' FROM `producten` WHERE `Productnaam` = 'Computers'

Letterlijk vertaald: selecteer prijs van de tabel producten waar de productnaam computers is. Hieruit komt natuurlijk, hoe kan het ook anders, €1000

Het ophalen van gefilterde prijzen

Je kan ook twee prijzen ophalen. Hiervoor moet je het WHERE-attribuut uitbreiden. Dit kan op twee manieren. Met AND en OR. Het spreekt voor zich, en en of. Je kan dan zeggen: als de naam dit en de naam dat is, dan haalt hij ze beide op. Maar stel nou je hebt twee producten genaamd computers. Dan moet je kijken naar de prijs of de kleur. Dan kan je zeggen: als de naam dit is en de prijs dat is. Wat voorbeelden:

SELECT 'Voorraad' FROM `producten` WHERE `Prijs` = '€1000' AND `Productnaam` = 'Computers'

Met de OR kan je dus of doen:

SELECT 'Voorraad' FROM `producten` WHERE `Prijs` = '€1000` OR `Productnaam` = 'Computers'

Hier kies neem je dus de voorraad van de producten met de prijs €1000 OF naam Computers.

Je kan de AND en OR eindeloos combineren.

Het ophalen uit meerdere kolommen

Dit is ook erg makkelijk. Je zet bij SELECT gewoon wat komma's erbij:

SELECT 'Prijs','Voorraad','Naam' FROM `producten`

Ook hierachter kan je weer een WHERE ed plaatsen. Gewoon creatief zijn en eindeloos combineren, dan kom je er wel!