Les 6

In deze les leert u hoe u door middel van PHP rekenkundige bewerkingen kunt opnemen in je scripts.

Rekenen met PHP

Net zoals met iedere programmeertaal, kun je ook rekenen met PHP. Het is hier niet mijn bedoeling om jullie een cursus wiskunde te geven, we houden het hier op de eenvoudige rekenkundige bewerkingen, leerstof van het lager onderwijs. Mochten jullie niet snappen over wat ik het heb, dan zul je wel even de wiskundige basis van het lagere onderwijs moeten doornemen :-)

De rekenkundige operatoren

Heel eenvoudig, je hoeft slechts de 4 rekenkundige operatoren te gebruiken die je kent uit spreadsheets, nl : +,-,* en /

De voornaamste rekenkundige operatoren

Operator

Betekenis

Voorbeeld

+

optellen

$a=10+$b

-

aftrekken

$c=$a-1

*

vermenigvuldigen

10*3

/

delen

$a/$g

++

1 toevoegen

$a++ ( is gewoon de korte schrijfwijze van $a=$a+1 )

--

1 aftrekken

$a-- ( equivalent aan $a=$a-1 )



Verwonderd over de laatste twee elementen ?


Onder PHP, net zoals onder andere programmeertalen hebben wij hier deze bijzondere tekens ++ en --, die respectievelijk een waarde met 1 verhogen of verlagen.


 In klare taal :

$teller++
betekent hetzelfde als
$teller=$teller+1
en
$teller--
betekent hetzelfde als
$teller=$teller-1

Dit zijn operatoren die we veelvuldig gaan gebruiken. Onthoud dat dit 1 optelt of aftrekt bij de huidige waarde van de variabele.

<?php
$a=100;
$b=35;
$resultaat=$a+$b;
echo "Het resultaat van $a + $b = $resultaat";
?>

Code opslaan als optellen.php.

En aktie !

We geven hier de waarde 100 aan de variabele a en 35 aan de vraiabele b. We tellen a en b op en kennen deze waarde toe aan de variabele $resultaat, waarna we door middel van het echo commando de waarde afprinten.
We gaan het nu iets moeilijker doen. Zoals je wellicht weet wordt in België alsook in andere landen BTW geheven op produkten. We nemen nu als basis een produkt dat 100 Euro kost en we voegen daarbij 19,6 % BTW en we printen dan het totaal af wat het produkt kost.

<?php
$prijs_zbtw=100;
$btwtarief=0.196;
$resultaat=($prijs_zbtw*$btwtarief)+$prijs_zbtw;
echo " Een product  dat 100 euro kost zonder BTW en waar 19,6% BTW wordt  op geheven kost tenslotte $resultaat euro";
?>

Code opslaan als btw.php

En aktie !

De functie round()

Dit script heeft hier wel één foutje. Verander eens de $prijs_zbtw in bv 113, het resultaat wordt dan : 135,148. Nu zitten we hier met 3 cijfers na de komma, geen enkele munt ter wereld werkt met dergelijke waarden. We willen echter dat de uitkomst afgeprint wordt met 2 cijfers na de komma, wel daar hebben we de functie round() voor. Round gebruik je als volgt round($variabele,aantal_decimalen). In ons voorbeeld wordt dit dan :

<?php
$prijs_zbtw=113;
$btwtarief=0.196;
$btw=$prijs_zbtw*$btwtarief;
$resultaat=$prijs_zbtw+$btw;
echo round($resultaat,2);
?>

Code opslaan als round.php

En aktie !

Waarna de uitkomst 135.15 wordt. Dit is dan een som die we wel met onze munt kunnen betalen.
De voorgaande voorbeelden waren vrij eenvoudig, wat zou je ervan denken eens een rekenkundige bewerking te maken waarbij we alle rekenkundige operatoren gebruiken ? We blijven in de wereld van de BTW en we gaan nu eens de prijs berekenen wat een produkt kost zonder BTW, uitgaande van de prijs BTW inclusief. Is gewoon de regel van drie toepassen. De totale waarde van het produkt is gelijk aan 100%. Dit kun je ook schrijven als 1. Het verschil tussen het bedrag met BTW en zonder BTW is het BTW percentage. Dus we moeten het BTW percentage aftrekken van de totale waarde.

<?php
$prijs_mbtw=119.6;
$btw_tarief=0.196;
$resultaat=$prijs_mbtw-1*$prijs_mbtw/(1+$btw_tarief);
$produkt=$prijs_mbtw-$resultaat;
echo "De prijs van het produkt zonder BTW = $produkt euro";
?>

Code opslaan als btw2.php

En aktie !


Let hier wel even op het gebruik van de haakjes. Zonder deze zou PHP rekenen volgens de prioriteitsregels van de wiskundige bewerkingen, eerst vermenigvuldigen dan delen, optellen en aftrekken.


 Je vraagt je misschien af waarom ik dit zo moeilijk maak, als je de prijs van de BTW vermenigvuldigt met 1.196 kom je aan hetzelfde resultaat. Inderdaad, maar dan gaat het script enkel op met een BTW percentage van 19,6 %. Op de wijze die ik hier gebruik, kun je het script ook gebruiken als de waarde van het BTW percentage anders is dan 19,6%.

Waarden afprinten met of zonder de concatenation operator punt.

Laten we nu even een test doen. We gebruiken nu terug het script btw2.php, en we willen afprinten : De BTW op een produkt dat 119,6 euro kost is gelijk aan 19,6 euro.. We zouden dit dan kunnen schrijven als :



<?php
$prijs_mbtw=119.6;
$btw_tarief=0.196;
$resultaat=$prijs_mbtw-1*$prijs_mbtw/(1+$btw_tarief);
$produkt=$prijs_mbtw-$resultaat;
echo "De BTW op een produkt dat 119,6 euro kost is gelijk aan round($resultaat,2) euro.";
?>

Code opslaan als btw3.php.

En aktie !

Op deze wijze geschreven wordt het resultaat in de browser :

De BTW op een produkt dat 119,6 euro kost is gelijk aan round(19.6,2) euro.

En dat willen we niet, hij moet het BTW tarief tonen en niet de functie round. Aangezien de functie round hier tussen de aanhalingstekens staat van het echo commando, voert PHP de functie round niet uit, en print gewoon alles af wat er tussen de aanhalingstekens staat. Om dit op te lossen rest ons alleen de concatenation operator punt te gebruiken. We veranderen regel 6 door de volgende code, en slaan vervolgens alles op als btw4.php.

echo "De BTW op een produkt dat 119,6 euro kost is gelijk aan " . round($resultaat,2)  . " euro";

En nu toont onze browser correct de zin : De BTW op een produkt dat 119,6 euro kost is gelijk aan 19.6 euro. Let op de spatie die ik laat na het woordje aan en voor het woordje euro. Mocht je dit niet doen, dan zou hij alles aan elkaar plakken en zou de zin er als volgt uitzien : De BTW op een produkt dat 119,6 euro kost is gelijk aan19.6euro.

En aktie !


Dit is nu een typisch geval waar je verplicht bent de concatenation operator punt te gebruiken.


We hebben nu de functie round() gezien om onze waarden af te ronden tot 2 cijfers na de komma. Er bestaat echter nog een andere functie die dit ook kan, namelijk sprintf().

De functie sprintf()

De functie sprintf wordt gebruikt als sprintf("instructie",argument). Het argument is hier duidelijk, daar plaatsen we onze variabele $resultaat in. Ik kan hier een ganse cursus vol schrijven over de functie sprintf, maar ik zal mij hier beperken tot het omzetten van waarden in een monetair formaat, of tot 2 cijfers na de komma. De instructie die we daarvoor gebruiken is : %01.2f.
In ons voorbeeld wordt dit dan $resultaat=sprintf("%01.2f",$resultaat). Als je deze notatie gebruikt, zullen alle decimale waarden worden omgezet tot 2 cijfers na de komma. Er is hier dus een zeker verband met de functie round(), de cijfers na de komma worden afgerond. In tegenstelling tot de functie round(), worden bij de functie sprintf() de mankerende getallen na de 2 decimalen aangevuld met nullen.

<?php
$prijs_zbtw=113;
$btwtarief=0.196;
$btw=$prijs_zbtw*$btwtarief;
$resultaat=$prijs_zbtw+$btw;
$resultaat=sprintf("%01.2f",$resultaat);
echo "De prijs van het produkt inclusief BTW bedraagt $resultaat euro";
?>

Code opslaan als sprintf.php.

En aktie !

Aan jullie nu de keus welke functie je wenst te gebruiken. Persoonlijk vind ik round() gemakkelijker in het gebruik, het typt alvast beter :-)


Les 1 Les 2 Les 3 Les 4 Les 5 Les 6 Les 7 Les 8 Les 9 Les 10 Les 11 Les 12 Les 13 Home