Ik heb een programmaatje gemaaktwaar ik een elseif gebruik. Het ziet er als volgt uit:

echo "$parm_aantal";
echo " ";
echo "$parm_model";echo " ";
var_dump ($parm_model);
echo "$parm_prijs";

if ($parm_model=" ") {echo "0";}
elseif ($parm_model="PROMO A") {echo "A";}
elseif ($parm_model="PROMO B") {echo "B";}
elseif ($parm_model="PROMO C") {echo "C";}
elseif ($parm_model="PROMO D") {echo "D";}

Als ik het de eerste keer run dan leidt dit tot het verwachte resultaat "0". Als ik daarna waarden invoer dan gaat het echter niet goed.

De "echo "$parm_mdoel";" geeft bijvoorbeeld "PROMO A" wer het reultaat van de if is nog steeds "0".

Wat heb ik verkeerd gedaan of wat moet ik anders doen?
De vergelijking binnen je if-statement moet je wel met == doen ipv enkel =

De assign binnen een if-statement (enkele =) werkt alleen wanneer je iets uitvoerd wat een waarde of false teruggeeft


<?php
function foo()
{
//functie die een getal of false teruggeeft
}

//Check of foo() geen false teruggeeft
if($getal = foo()):
//Door de assign kun je hier $getal gebruiken, welke gevuld is met het resultaat uit foo()
var_dump($foo);
endif;

Hoe simpel kan het zijn (als je het weet). Mijn dank!

[size=xsmall]Toevoeging op 20/05/2015 09:39:39:[/size]

Wellicht kun je mij nog wat verder helpen?

Nu wil ik op basis van de waarde van $parm_model een string toekennen aan $parm kies.

Ik heb dat als volgt gedaan:

elseif ($parm_model=="PROMO A") {$parm_kies="Select `Aantal`,`A`,FROM `Prijzen`WHERE `Aantal` like '$parm_aantal'";}

De $parm_kies gebruik ik vervolgens in: $sql = $parm_kies;

Ergens doe ik iets verkeerd want er gebeurt niets (het resultaat is een leeg scherm).
Bouw foutafhandeling in op de query's.
Gebruik geen backtics in de query.
Kun je mij ook vertellen hoe ik dat dan doe?
Even iets los daarvan. Probeer geen PHP variabele in een string te zetten. Haal deze er altijd uit of zet er accolades omheen

<?php

$foo = "iets";

//Heeft bij mij geen voorkeur, geeft wel een correcte uitvoer
echo "waarde1 $foo <br />";

//Dit is netter. Geeft correcte uitvoer
echo "waarde2 {$foo} <br />";

//Dit geeft uitvoer 'waarde 3 $foo'. Dit werkt dus niet doordat je enkele quotes gebruikt
echo 'waarde3 $foo <br />';

//Dit geeft uitvoer 'waarde 3 {$foo}'. Dit werkt dus niet doordat je enkele quotes gebruikt
echo 'waarde4 {$foo} <br />';

//Onderstaande 2 geven altijd de goede waarde
echo 'waarde5 ' . $foo . '<br />';
echo "waarde6 " . $foo . "<br />";
?>

Wat betreft je query fout. Echo de inhoud van $parm_kies eens.

PS: maak gebruik van nettere codeformat om het leesbaar te houden

<?php
elseif ($parm_model=="PROMO A")
{
$parm_kies = "SELECT
`Aantal`,
`A`,
FROM
`Prijzen`
WHERE
`Aantal` like '$parm_aantal'";
}
?>

Je ziet nu ook dat er een comma teveel staat in je SELECT. En er is witruimte voor je WHERE ontstaan.
Spike Spade op 20/05/2015 10:24:35

Probeer geen PHP variabele in een string te zetten.


Niet echt aanbevolen, maar het kan/mag wel van php.


Spike Spade op 20/05/2015 10:24:35

... of zet er accolades omheen


Huh, vreemde methode.
- SanThe - op 20/05/2015 10:29:56

Huh, vreemde methode.


Vreemde methode? Hiermee geef je duidelijk aan wat je PHP-variabele is. Zeker wanneer je geen spatie na je variabele wilt, geeft dit anders problemen.

Voorbeeld
<?php
$huisType = 'huur'

echo "Dit is een {$huisType}huis";
//Geeft 'Dit is een huurhuis'

//Dit zou natuurlijk niet werken, aangezien dan de verkeerde PHP variabele getoond zou worden. (als die al bestond)
echo "Dit is een $huisTypehuis";
?>

Mijn voorkeur blijft uitgaan naar het er helemaal uithalen zoals in mijn vorige voorbeeld bij waarde 5 en 6;
Mijn dank ik ben nu weer een stukje verder. Ga nog wat puzzelen.


[size=xsmall]Toevoeging op 20/05/2015 11:15:23:[/size]

Het werkt, nu nog de laatste stapjes. Het resultaat is dat er 1 rij wordt geselecteerd met 5 waarden:
Aantal en prijs A, Prijs B, Prijs C en Prijs D. Aantal is altijd gevuld en van de andere vier is er altijd maar 1 gevuld.
Aantal kan ik op het scherm weergeven, maar hoe geef ik nu de som van de andere 4 weer?

[size=xsmall]Toevoeging op 20/05/2015 11:17:14:[/size]

Ook dat lukt inmiddels
echo a+b+c+d:

Reageren