Beste mensen,

Ik wil een rekensom maken met vergelijking (if, then)
In exell lukt me dit wel, maar nu in PHP loop ik vast.

De waardes die ingevoerd kunnen worden zijn (selectie box)
500
1000
1500
2000
2500
3000
3500
4000

Alleen als ik dan op verzenden klik, krijg ik altijd de uitkomst 4000
De code die ik zover heb.
<?php
$entree = 10;

if ($_POST['ballen'] = 4000)
{
$bal = 90;
if($_POST['ballen'] < 2000)
{
$bal = $_POST['ballen'] / 500 * 12;
if($_POST['ballen'] > 2000)
{
$bal = ($_POST['ballen'] - 2000) / 500 * 12 + 45;
}
}
}
else
{
$bal = 45;
}

$totaal = $entree + $bal;
?>

Kan iemand mij vertellen waar het fout gaat, en hoe ik dit het beste kan oplossen?
Ik wil wel helpen, ik doe veel wiskunde met php maar zou je de werking van je script eens willen beschrijven?

Alvast bedankt!
volgens mij snap je er de ballen niet van :)
Sorry maar ik kon het niet laten..

Waarom zet je eerst dat $_POST['ballen'] op 4000?
Want als hij een waarde heeft dan hoef je alleen nog maar de rekensom te maken.
Wat je nu doet is zeggen: ik heb alleen maar 4000 ballen..
Dat vond ik ook al wat vreemd.
Misschien moesten er 2 gelijk aan tekens?
Hij is vrij simpel.

Als het aantal 4000 is moet hij zeggen 90
Als het aantal 2000 is moet hij zeggen 45

Als het aantal < 2000 moet hij rekenen
Aantal / 500 * 12

Als het aantal > 2000 en < 4000 moet hij het volgende doen
(Aantal - 2000) / 500 * 12 + 45

Want elke 2000 is 45 erbij en elke 500 is 12 erbij

In feite zijn dit de mogelijke uitkomsten
500 = 12
1000 = 24
1500 = 36
2000 = 45
2500 = 57
3000 = 69
3500 = 81
4000 = 90

Hoop dat ik duidelijk genoeg ben voor je.
Alvast bedankt.

[size=xsmall]Toevoeging op 13/05/2012 12:06:52:[/size]

Klopt Dem,

Het moesten er 2 zijn, die heb ik al opgelost, maar het juiste antwoord krijg ik nog niet.

Nu geeft hij als uitkomst 45, terwijl ik 1500 heb opgegeven.
Het antwoord zou dus 36 moeten zijn

[size=xsmall]Toevoeging op 13/05/2012 12:39:58:[/size]

Ik heb nu dit geprobeerd, maar dit resulteert in 0

<?php
$entree = 10;
if ($_POST['ballen'] == 4000)
{
$bal = 90;
if ($_POST['ballen'] < 2000)
{
$bal = $_POST['ballen'] / 500 * 12;
if ($_POST['ballen'] > 2000)
{
$bal = ($_POST['ballen'] - 2000) / 500 * 12 + 45;
if ($_POST['ballen'] == 2000)
{
$bal = 45;
}
}
}
}

$totaal = $entree + $bal;
?>
Dus eerst zeg je "als het aantal 4000 is dan" en binnen die if zeg je "en als het aantal kleiner dan 2000 is". Dat kan natuurlijk nooit. Ga eens naar een if... Elseif constructie kijken.

[size=xsmall]Toevoeging op 13/05/2012 12:56:22:[/size]

En een ps, dit is een reken probleem, geen wiskundig probleem.
Of kijk naar een switch-constructie.
<?php
$entree = 10;

switch ($_POST['ballen']) {
    case 4000:
        $bal = 90;
        break;
    case 2000:
        $bal = 45;
        break;
    case $_POST['ballen'] < 2000:
        $bal = $_POST['ballen'] / 500 * 12;
        break;
    case $_POST['ballen'] > 2000 && $_POST['ballen'] < 4000:
        $bal = ($_POST['ballen'] - 2000) / 500 * 12 + 45;
        break;
    case default:
        /* iets van een foutmelding ofzo
        dan wel controleren of $bal is ingevuld bij $totaal */
        break;
}
       
$totaal = $entree + $bal;
?>

Dit kan uiteraard ook met if / elseif.
Hier de code die volgens mij werkt.

<?php
$entree = 10;
$_POST['ballen'] = 500; // Dit is een voorbeeld, dit kan je natuurlijk weglaten. Was om te testen!

    if ($_POST['ballen'] == 4000)
    {
        $bal = 90;
    }
    elseif ($_POST['ballen'] == 2000)
    {
        $bal = 45;
    }
    elseif ($_POST['ballen'] < 2000)
    {
        $bal = $_POST['ballen'] / 500 * 12;
    }
    elseif ($_POST['ballen'] > 2000 AND $_POST['ballen'] < 4000)
    {
      $bal = ($_POST['ballen'] - 2000) / 500 * 12 + 45;
    }
    else 
    {
     echo 'POST waarde voldoet niet aan bovenstaande eisen!';
    }
          
    $totaal = $entree + $bal;
    echo $bal; // prijs van $bal
    echo '<br>'; // spatie
    echo $totaal; // totaalprijs
?>
Ik ga het eens proberen, hartstikke bedankt allemaal
<?php

#| De basis entree.

$entree = 10;


#| De extra entree berekend aan de hand van de gekozen aantal ballen.

$bal = (($base = floor($_POST['ballen'] / 2000)) * 45) + ((($_POST['ballen'] - ($base * 2000)) / 500) * 12);


#| Het totaal berekenen.

$totaal = $entree + $bal;

?>

Of het er gewoon hard coded in zetten want het ziet er niet naar uit dat het veel veranderd.

<?php

#| De basis entree.

$entree = 10;


#| De kosten per ballen.

$bal_entree = array(500 => 12, 1000 => 24, 1500 => 36, 2000 => 45); // en zo verder.


#| De extra entree berekend aan de hand van de gekozen aantal ballen.

$bal = $bal_entree[$_POST['ballen']];


#| Het totaal berekenen.

$totaal = $entree + $bal;

?>

Reageren