Hoort bij: MySQL — Tags:, , , , — admin @ 6 augustus 2008 16:05

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.

Stem of voeg toe aanUitleg over het gebruik van deze icons :  Plaatsen/stemmen op NUjij Plaatsen/stemmen op eKudos Plaatsen/stemmen op MSN Reporter Plaatsen/stemmen op Digg Stumble it! Voeg dit artikel toe aan Del.icio.us Voeg toe aan je Google bladwijzers Abonneer je op de RSS-feed van deze site Verstuur deze pagina per e-mail via Feedburner

Reacties

1 reactie »

  1. […] public links >> schrijven MySQL functies schrijven Saved by SniperWj on Fri […]

    Pingback door Recent Links Tagged With "schrijven" - JabberTags — 23 augustus 2008 19:23 @ 19:23

Berichten RSS voor reacties op dit bericht. TrackBack URL

Geef een reactie



Categorieën

Wie is online

Partners