You may want to put some text here

MySQL functies schrijven

In deze tutorial laat ik zien hoe je zelf MySQL functies kan schrijven. Je kan het vergelijken met functies in PHP en andere talen. Het is dus de bedoeling voor bepaalde berekeningen en opdrachten die je vaak doet een functie te schrijven in MySQL.

  • PHP code wordt korter doordat je bepaalde functies rechtstreeks in je MySQL query gaat oproepen.
  • Overzichtelijkere code
  • Beter onderhoudbaar
  • Functies kunnen opnieuw gebruikt worden in andere websites en applicaties

Om het nut van functies duidelijker te maken even een voorbeeld, je hebt volgende tabel met de naam products:

id name price
1 Laptop 1000
2 Speakers 23
3 CD-ROM player 15
4 Monitor 55
5 USB-Stick 12

Wat je wilt gaan doen is een lijst van producten tonen met hun prijs inclusief BTW. De prijs die je in de tabel ziet staan is exclusief BTW.

Zonder MySQL functies

Zonder funties zal je een select doen van al de producten. Met PHP loop je dan door je resultaten en bereken je met PHP telkens het subtotaal(prijs + btw) en toon je het op je scherm.

De query die je gaat gebruiken:

SELECT name, price FROM products

De PHP code:

$query  = "SELECT name, price FROM products";$result = mysql_query($query);

while($row = mysql_fetch_array($result)){
echo $row['name'] . ': €' . $row['price'] + (($row['price']/100)*21) . '<br />';
}

Resultaat:
Laptop: €1210
Speakers: €27,83
CD-Rom player: €18,15
Monitor: €66,55
USB-Stick: €14,52

Met MySQL functies

Je maakt een subtotaal functie aan. Je doet een select van de producten en haalt price door de subtotaal functie. Als laatste tonen je de data met PHP.

De functie aanmaken:
Om een functie aan te maken kan je best MySQL Query Broser(MQB) gebruiken of een andere MySQL GUI. Start MQB en druk op Script > Create Stored Procedure / Function. Vul als naam voor je functie subtotal in en druk op Create FUNCTION. Nu zal er een nieuw venster openen met de basis structuur voor de functie.

DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`subtotal` $$CREATE FUNCTION `test`.`subtotal` () RETURNS INTBEGIN

END $$

DELIMITER ;

Je vervolgedigd de functie als volgt:

DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`subtotal`
$$CREATE FUNCTION `test`.`subtotal` (price DOUBLE) RETURNS DOUBLE
BEGIN
RETURN price + ((price/100) * 21);
END $$

DELIMITER ;

Het eerste wat je gaat doen is een input variable maken zodat er een prijs aan de functie kan meegegeven worden.
Dat is de price DOUBLE tussen de haakjes achter de functienaam. Tussen BEGIN en END zie je de berekening voor het subtotaal.
De query die je gaat gebruiken:

SELECT name, subtotal(price) AS price FROM products p

De PHP code:

$query  = "SELECT name, subtotal(price) AS price FROM products p;";
$result = mysql_query($query);

while($row = mysql_fetch_array($result)){
echo $row['name'] . ': €' . $row['price'] . '<br />';
}

Resultaat:
Laptop: €1210
Speakers: €27,83
CD-Rom player: €18,15
Monitor: €66,55
USB-Stick: €14,52

Tot slot

Na het bekijken van het voorbeeld zal je de voordelen van functies wel meteen begrijpen. Probeer zoveel mogelijk PHP bewerkingen om te zetten naar MySQL functies. Hierdoor zal je code vele overzichtelijker/korter worden.

The Author of this post is Wim Mostmans

Wim Mostmans heeft een eigen webontwikkeling bedrijf Sitebase waar hij voltijds voor werkt. Hij beheert ook nog enkele websites waaronder deze en een Computerforum. Blijf op de hoogte van waar Wim mee bezig is door hem te volgen op Twitter.

1 Responses »

Trackbacks

  1. Recent Links Tagged With "schrijven" - JabberTags

Leave a Comment