Home » MySQL

MySQL functies schrijven

6 August 2008 1,386 views One Comment

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:

0
SELECT name, price FROM products

De PHP code:

0
1
2
3
4
$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.

0
1
2
3
4
5
6
DELIMITER $$
 
DROP FUNCTION IF EXISTS `test`.`subtotal` $$CREATE FUNCTION `test`.`subtotal` () RETURNS INTBEGIN
 
END $$
 
DELIMITER ;

Je vervolgedigd de functie als volgt:

0
1
2
3
4
5
6
7
8
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:

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

De PHP code:

0
1
2
3
4
5
$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.

Dit artikel delen:  Plaatsen/stemmen op NUjij Plaatsen/stemmen op eKudos Plaatsen/stemmen op MSN Reporter Plaatsen/stemmen op Bligg.nl Plaatsen/stemmen op MSN Reporter Plaatsen/stemmen op Bligg.be Plaatsen/stemmen op Netjes.be Plaatsen/stemmen op Digg Stumble it! Voeg dit artikel toe aan Del.icio.us Toevoegen aan Furl Voeg toe aan je favorieten op Technorati Voeg toe aan je Google bladwijzers Voeg toe aan je Facebook-profiel Abonneer je op de RSS-feed van deze site Plaats dit bericht op Twitter
Stuur artikel naar een vriend
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...


One Comment »

Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.


Fatal error: Cannot redeclare class Visitorsonline in /home/computerfaq/computerfaq.be/visitorsonline.php on line 11