opdracht van phptuts
alleen werkt het niet zoals het zou moeten volgens phptuts.
Ik zit hier al een uur naar te kijken en heb het al een keer opnieuw geschreven.
Maar nog steeds zie ik niet waar ik de fout heb zitten.
Wie ziet de fout en nog belangrijker hoe vind je die.
Groet René
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function totaalincl($bedragen, $btw = true)
{
$ftotaal = array_sum($bedragen);
if($btw)
{
$ftotaal *= 1.19;
}
return number_format($ftotaal, 2);
}
$bedragen = array(5.45, 9.95, 34.95);
echo 'totaal incl. btw: '.totaalincl($bedragen).'<br>';
echo 'totaal excl. btw: '.array_sum($bedragen), true.'<br>';
?>
function totaalincl($bedragen, $btw = true)
{
$ftotaal = array_sum($bedragen);
if($btw)
{
$ftotaal *= 1.19;
}
return number_format($ftotaal, 2);
}
$bedragen = array(5.45, 9.95, 34.95);
echo 'totaal incl. btw: '.totaalincl($bedragen).'<br>';
echo 'totaal excl. btw: '.array_sum($bedragen), true.'<br>';
?>
Edit: Kon korter, aangepast.
Gewijzigd op 21/11/2014 14:47:47 door Peter Flos
kun je ook aangeven wat anders aan is?
BTW is standaard op true gezet.
2 dingen:
- Je wilt de BTW inclusief en exclusief weten.
Exclusief BTW is in jouw geval het bedrag wat ingevuld wordt in de array van $bedragen. array_sum telt ze bij elkaar op.
Inclusief btw is in dit voorbeeld 19% meer (1.19). $btw stond op false, met true rekent hij die erbij. if($btw) was false, nu true. $ftotaal is dus de array_sum(Regel 4) * 1.19 = Bedrag inclusief btw ;)
Ik bedoel eigenlijk.
De code heb ik van phptuts.
Deze heb ik overgeschreven met iets andere variabel namen.
De uitkomst is nu niet wat het volgens het orgineel script moet zijn.
Mijn vraag is nu: Wat heb ik in het bovenste scriptje anders gedaan. (want de uitkomst is niet het zelfde)
hier onder staat het orgineel scriptje van phptuts.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// Functie definiëren
function calcTotaal($aBedragen, $bBtw = false)
{
// Totaal van prijzen berekenen
$fTotaal = array_sum($aBedragen);
// Controleren of BTW berekend moet worden
if($bBtw)
{
// Het totaal * 1.19 (19% BTW)
$fTotaal *= 1.19;
}
// Geef het berekende totaal terug
return number_format($fTotaal, 2);
}
// Functie aanroepen
$aBedragen = array(5.45, 9.95, 34.95);
echo 'Totaal excl. BTW: '.calcTotaal($aBedragen).'<br />';
echo 'Totaal incl. BTW: '.calcTotaal($aBedragen, true).'<br />';
?>
// Functie definiëren
function calcTotaal($aBedragen, $bBtw = false)
{
// Totaal van prijzen berekenen
$fTotaal = array_sum($aBedragen);
// Controleren of BTW berekend moet worden
if($bBtw)
{
// Het totaal * 1.19 (19% BTW)
$fTotaal *= 1.19;
}
// Geef het berekende totaal terug
return number_format($fTotaal, 2);
}
// Functie aanroepen
$aBedragen = array(5.45, 9.95, 34.95);
echo 'Totaal excl. BTW: '.calcTotaal($aBedragen).'<br />';
echo 'Totaal incl. BTW: '.calcTotaal($aBedragen, true).'<br />';
?>
$bBtw is nogsteeds false, want die is altijd false in je script.
In het laatste scriptje is alles goed en werkt het zoals het hoort.
In het eerste scriptje is iets anders,want dit werkt niet zoals het hoort.
Waar heb ik een foutje gemaakt?
Kun je dat aangeven door b.v. het regelnr te noemen?
Op regel 22 zeg je "$aBedragen, true". True is hier dus niet op zijn plaats omdat deze niet wordt gevraagd in de functie.
http://php.net/manual/en/functions.arguments.php#functions.arguments.default
@Rene
http://3v4l.org/KYWtn:
@Peter, Dat betekend niet dat $sBtw altijd false is. Dat betekend dat de default waarde van $sBtw false is. @Rene
http://3v4l.org/KYWtn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
function totaal($bedragen, $btw = false)
{
$ftotaal = array_sum($bedragen);
if($btw)
{
$ftotaal *= 1.19;
}
return number_format($ftotaal, 2);
}
$bedragen = array(5.45, 9.95, 34.95);
echo 'totaal excl. btw: '.totaal($bedragen).'<br>';
echo 'totaal excl. btw: '.totaal($bedragen), true.'<br>';
// 15-16 kunnen we ook zo schrijven:
echo 'totaal excl. btw: ';
echo totaal($bedragen);
echo '<br>';
echo 'totaal excl. btw: ';
echo totaal($bedragen);
echo true; // het zelfde als echo '1';
echo '<br>';
?>
function totaal($bedragen, $btw = false)
{
$ftotaal = array_sum($bedragen);
if($btw)
{
$ftotaal *= 1.19;
}
return number_format($ftotaal, 2);
}
$bedragen = array(5.45, 9.95, 34.95);
echo 'totaal excl. btw: '.totaal($bedragen).'<br>';
echo 'totaal excl. btw: '.totaal($bedragen), true.'<br>';
// 15-16 kunnen we ook zo schrijven:
echo 'totaal excl. btw: ';
echo totaal($bedragen);
echo '<br>';
echo 'totaal excl. btw: ';
echo totaal($bedragen);
echo true; // het zelfde als echo '1';
echo '<br>';
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
// Functie definiëren
function calcTotaal($aBedragen, $bBtw = false)
{
// Totaal van prijzen berekenen
$fTotaal = array_sum($aBedragen);
// Controleren of BTW berekend moet worden
if($bBtw)
{
// Het totaal * 1.19 (19% BTW)
$fTotaal *= 1.19;
}
// Geef het berekende totaal terug
return number_format($fTotaal, 2);
}
// Functie aanroepen
$aBedragen = array(5.45, 9.95, 34.95);
echo 'Totaal excl. BTW: '.calcTotaal($aBedragen).'<br />';
echo 'Totaal incl. BTW: '.calcTotaal($aBedragen, true).'<br />';
// 48-49 kunnen we ook zo schrijven:
echo 'Totaal excl. BTW: ';
echo calcTotaal($aBedragen);
echo '<br />';
echo 'Totaal incl. BTW: ';
echo calcTotaal($aBedragen, true);
echo '<br />';
?>
// Functie definiëren
function calcTotaal($aBedragen, $bBtw = false)
{
// Totaal van prijzen berekenen
$fTotaal = array_sum($aBedragen);
// Controleren of BTW berekend moet worden
if($bBtw)
{
// Het totaal * 1.19 (19% BTW)
$fTotaal *= 1.19;
}
// Geef het berekende totaal terug
return number_format($fTotaal, 2);
}
// Functie aanroepen
$aBedragen = array(5.45, 9.95, 34.95);
echo 'Totaal excl. BTW: '.calcTotaal($aBedragen).'<br />';
echo 'Totaal incl. BTW: '.calcTotaal($aBedragen, true).'<br />';
// 48-49 kunnen we ook zo schrijven:
echo 'Totaal excl. BTW: ';
echo calcTotaal($aBedragen);
echo '<br />';
echo 'Totaal incl. BTW: ';
echo calcTotaal($aBedragen, true);
echo '<br />';
?>
Rene janssen op 21/11/2014 14:38:50:
Wie ziet de fout en nog belangrijker hoe vind je die.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Haakje staat verkeerd.
echo 'totaal excl. btw: '.totaal($bedragen), true.'<br>';
Moet zijn:
echo 'totaal excl. btw: '.totaal($bedragen, true).'<br>';
Het script rekent met 19% BTW in plaats van met 21%. ;-)
Daarnaast bestaat er ook een 6% BTW tarief. Onder andere bouwbedrijven mogen tijdelijk het arbeidsloon met 6% BTW belasten maar het materiaal moet met 21% belast worden. Dit geeft dan een iets complexere rekenmethode.
Alleen krijg ik alleen van San The het antwoord waar ik eigenlijk om heb gevraagt.
Er zit een verschil tussen de twee scripts.
Het orginele en die ik heb gemaakt.
De orginele werkt goed en die ik heb gemaakt werkt niet helemaal goed (verkeerde waarden)
San The had al een foutje gevonden en nu zit er nog een in.
Ik tuur me er scheel op en nog zie ik het niet.
Vandaar mijn vraag aan jullie.
En ja willem 21% :-P
Wat heb je nu?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@ bart, wat heb je veranderd?
Regel 2
Dan raak je de weg niet kwijt. ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// $bedragen is een array, standaard is $btw FALSE want we willen soms ook geen BTW berekenen.
function totaal($bedragen, $btw = false)
{
// $totaal is een som van een array()
$ftotaal = array_sum($bedragen);
// als $btw TRUE word dan dit uitvoeren...
if($btw)
{
// bereken BTW
$ftotaal *= 1.19;
}
// We returnen in het juiste formaat het totaalbedrag
return number_format($ftotaal, 2);
}
// maken van een array met de bedragen die we willen berekenen..
$bedragen = array(5.45, 9.95, 34.95);
// eerst willen we het bedrag zonder BTW zien
echo 'totaal excl. btw: '.totaal($bedragen).'<br>';
// hier het bedrag incl btw, daarom word het tweede argument van de function TRUE..
echo 'totaal incl. btw: '.totaal($bedragen, true).'<p>';
?>
// $bedragen is een array, standaard is $btw FALSE want we willen soms ook geen BTW berekenen.
function totaal($bedragen, $btw = false)
{
// $totaal is een som van een array()
$ftotaal = array_sum($bedragen);
// als $btw TRUE word dan dit uitvoeren...
if($btw)
{
// bereken BTW
$ftotaal *= 1.19;
}
// We returnen in het juiste formaat het totaalbedrag
return number_format($ftotaal, 2);
}
// maken van een array met de bedragen die we willen berekenen..
$bedragen = array(5.45, 9.95, 34.95);
// eerst willen we het bedrag zonder BTW zien
echo 'totaal excl. btw: '.totaal($bedragen).'<br>';
// hier het bedrag incl btw, daarom word het tweede argument van de function TRUE..
echo 'totaal incl. btw: '.totaal($bedragen, true).'<p>';
?>