Hoi mensen, via een formulier kan men een vast formaat kiezen uit een dropdown menu of een custom formaat kiezen en invullen en ik wil dat dit formaat kleiner dan of gelijk aan 10000 een berekening uitvoert en anders niet. De $kort_formaat en $lang_formaat waardes komen uit de database; heb ik allemaal ge-echo-ed en die kloppen. Ik zie dat de rekensom wordt uitgevoerd (onder de 10000 wordt het getal van de rekensom getoond en boven de 10000 wordt het 0) maar hoe kan het dan dat in beide gevallen alleen 'goed' wordt ge-echo-ed?

<?php
$kort = $_POST['kort'];
$lang = $_POST['lang'];
$custom_formaat = $kort * $lang;

$vast_formaat = $kort_formaat * $lang_formaat;

if(($custom_formaat <= 10000) || ($vast_formaat <= 10000))
{
echo 'goed';
//////// SOM 1: berekening produkt starttarief(+) /////////
$berekening_opslag_formaat = ($start_formaat * $opslag)/100;
$formaat_starttariefOpslag = $start_formaat + $berekening_opslag_formaat;

//////// SOM 2: berekening produkt starttarief(-) /////////
$berekening_min_opslag_formaat = ($start_min_formaat * $opslag)/100;
$formaat_min_starttariefOpslag = $start_min_formaat + $berekening_min_opslag_formaat;
}
else
{
echo 'fout';
$formaat_starttariefOpslag == 0;
$formaat_min_starttariefOpslag == 0;
}
?>
Er wordt dus blijkbaar altijd aan 1 van de voorwaarden uit je if-statement voldaan en dus wordt je if-statement uitgevoerd (door de ||). Als je wilt dat aan beide voorwaarden voldaan wordt, zul je && moeten gebruiken...
Je $vast_formaat gebruikt de database gegevens, waarschijnlijk is $vast_formaat altijd kleiner dan 10000, waardoor je altijd goed krijgt. Je zal moeten experimenteren door waarden te nemen in zowel je database als in je post, die gegarandeerd hoger zijn (na vermenigvuldiging) dan 10000.

Blanche zegt het al, blijkbaar is altijd 1 van de 2 voorwaarden waar.
Je if veranderen in :

<?php
if((is_numeric($_POST['kort']) && is_numeric($_POST['kort']) && ($custom_formaat <= 10000)) || ($vast_formaat <= 10000))
?>
Zet dit bovenin je script.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Mensen, bedankt voor jullie reactie. Ik snap nu hoe het zit; omdat de code altijd 1 van beide waarden weergeeft en beide waarden ook of uit de db of via een post komen geeft hij altijd 'goed' weer. Dus is er niets aan de hand en doet ie wat ik wil.

Reageren