PHP en MySQL deel 4 - Gegevens sorteren en meer

In het vorige deel werd uitgelegd hoe je gegevens kom ophalen uit de database. Nu gaan we verder met het sorteren van deze gegevens. Hier komt meer PHP bij te kijken.

Het sorteren

Dit is eigenlijk gewoon nog een aanvulling op het vorige deel, maar toch onder een andere kop. Om producten te selecteren op volgorde van invoeren, had je beter een extra kolom aan kunnen maken met het id. Deze gaat automatisch +1, dat is te vinden in de opties in PHPMyAdmin. Die kan je sorteren. Je kan enkel op getallen sorteren. Dus voorraad en prijs Het gaat gewoon op het extra stukje: ORDER BY. Dan kies je de kolom waarop moet worden gesorteerd. Laten we de prijs nemen:

SELECT * FROM `producten` ORDER BY `Prijs`

Dit kan je uitbreiden met aflopend en oplopend:

SELECT * FROM `producten` ORDER BY `Prijs` DESC
SELECT * FROM `producten` ORDER BY `Prijs` ASC

Je kan ook een range (van ... tot ...) opgeven:

SELECT * FROM `producten` ORDER BY `Prijs` LIMIT 0,500

Hij begint bij 0 en eindigt bij 500. Je kan ook dan nog oplopend en aflopend sorteren, en nog selecteren naar kolommen en rijen, dus je kan echt ALLES combineren...

Rijen tellen

Je kan (dmv PHP) ook alle rijen tellen om neer te kunnen zetten: "Aantal resultaten: 10" Door bijvoorbeeld:

// eerst heb je in de variabele $query de gegevens opgehaald
$aantal = mysql_num_rows($query);

Nu staat in de variabele "aantal" het aantal rijen die zijn opgehaald.

Foutcontrole verzenden MySQL-query

Stel er gaat iets fout, wil je wel weten WAT er dan fout gaat. Hiervoor moet je het mysql_query-commando iets aanpassen:

// in $key staat de mysql opdracht die wordt uitgevoerd
$query = mysql_query($key) or die(mysql_error());

Nu komt er bij een fout exact een mededeling te staan met wat er fout ging... (en het script loopt niet verder)

Voorkomen lege waardes

Je wil natuurlijk geen lege prijzen hebben, of voorraden, dat schiet niet op. Dit kan je voorkomen door te controleren of het ingevulde vak wel inhoud heeft. Hiervoor moet er eerst een formulier zijn geweest met gegevens met wat de nieuwe voorraad is, en het product waar dat voor geldt. Die wordt verzonden via de POST-methode, en de naam in HTML voor die velden waren voorraad en product. Dan wordt de code zo:

if(isset($_POST['voorraad']) || isset($_POST['product'])) {
   $key = "UPDATE `producten` SET `Voorraad` = '".$_POST['voorraad']."' WHERE `Productnaam` = '".$_POST['product']."'";
   $query = mysql_query($key) or die (mysql_error());
}
else {
   echo 'Geen voorraad of product ingevuld!';
}

Je kijkt eerst of de velden zijn ingevuld, zo ja dan is de uit te voeren code: "update de tabel producten en zet voorraad op de ingevulde voorraad en alleen als de naam de ingevulde naam is." Anders geeft hij een error dat er niets is ingevuld.

Waardes invoeren met 'foutcontrole'

Stel je voert waardes in, maar eentje bestaat al. Dan wil je die niet overschrijven, maar updaten. Dan moet je dus een insert doen met "als hij al bestaat, dan update". Dat doe je op de volgende manier:

INSERT INTO `producten` ('Productnaam','Omschrijving','Kleur','Prijs','Voorraad') VALUES ('Computers','De snelste ooit','Zwart','€1020','20') ON DUPLICATE KEY UPDATE `Prijs` = '€1020'

Hier zeg je dus: Zet in de tabel producten in voor de kolommen (alle) de waardes (die je daar ziet), maar als het al bestaat, dan update de prijs naar de genoemde


Reacties (0)

Reageer
Geen resultaten gevonden