IF statement werkt niet goed in combi met WHILE loop
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
while ($data = mysql_fetch_assoc($resultTransactie_Waarde))
{
$Transactie = $data['Transactie'];
IF ($Transactie = "Betalen" )
{
$Transactie_Waarde = $data['Transactie_Waarde'];
}
// break;
IF ($Transactie = "Ontvangen" )
{
$Transactie_Waarde = -$data['Transactie_Waarde'];
}
// break;
ELSE
{
$Transactie_Waarde = 0;
}
$TotaalTransactie_Waarde += $Transactie_Waarde;
}
?>
while ($data = mysql_fetch_assoc($resultTransactie_Waarde))
{
$Transactie = $data['Transactie'];
IF ($Transactie = "Betalen" )
{
$Transactie_Waarde = $data['Transactie_Waarde'];
}
// break;
IF ($Transactie = "Ontvangen" )
{
$Transactie_Waarde = -$data['Transactie_Waarde'];
}
// break;
ELSE
{
$Transactie_Waarde = 0;
}
$TotaalTransactie_Waarde += $Transactie_Waarde;
}
?>
Zolang in de WHILE loop $data een waarde heeft moet er op basis van $Transactie een keuze gemaakt worden.
Bij $Transactie = "Betalen" is $Transactie_Waarde = $data['Transactie_Waarde'], maar bij "Ontvangen" is $Transactie_Waarde negatief.
De bedoeling is dus dat op basis van 1 kolom in de tabel een keuze wordt gemaakt en dat op basis van de waarde uit een andere kolom een getal kan worden geselecteerd.
Echter als ik deze "echo", dan krijg ik zowel de + als de - waarde. Binnen de WHILE loop wordt het IF-statement dus niet goed afgehandeld. Ook als de kolom $Transactie leeg is, echo ik een getal uit de kolom $Transactie_Waarde.
Natuurlijk maak ik hier een keuzefout, alleen heb ik jullie hulp nodig om mijn fout in te zien.
Alvast bedankt.
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
while ($data = mysql_fetch_assoc($resultTransactie_Waarde))
{
$Transactie = $data['Transactie'];
IF ($Transactie = "Betalen" )
{
$Transactie_Waarde = $data['Transactie_Waarde'];
}
// break;
ELSEIF ($Transactie = "Ontvangen" )
{
$Transactie_Waarde = -$data['Transactie_Waarde'];
}
// break;
ELSE
{
$Transactie_Waarde = 0;
}
$TotaalTransactie_Waarde += $Transactie_Waarde;
}
?>
while ($data = mysql_fetch_assoc($resultTransactie_Waarde))
{
$Transactie = $data['Transactie'];
IF ($Transactie = "Betalen" )
{
$Transactie_Waarde = $data['Transactie_Waarde'];
}
// break;
ELSEIF ($Transactie = "Ontvangen" )
{
$Transactie_Waarde = -$data['Transactie_Waarde'];
}
// break;
ELSE
{
$Transactie_Waarde = 0;
}
$TotaalTransactie_Waarde += $Transactie_Waarde;
}
?>
bedankt voor je reactie. Ik heb jouw code overgenomen. Wat er echter gebeurd is dat bij de keuze voor ($Transactie = "Ontvangen" ) de waarde van $Transactie_Waarde niet wordt aangepast. Uiteindelijk is de uitkomst van $TotaalTransactie_Waarde += $Transactie_Waarde alleen de som van alle positieve uitkomsten van $Transactie_Waarde.
Ik vermoed dat als aan het eerste IF statement wordt voldaan. De WHILE loop in zijn geheel wordt doorlopen en dan stopt.
M.vr.gr.
P.S. ik constateer, dat als de kolom $Transactie leeg is. Toch een waarde uit de kolom $Transactie_Waarde wordt gehaald, terwijl deze dus eigenlijk 0 moet zijn.
Gewijzigd op 08/10/2015 13:03:04 door Carl Zwanenburg
Wat is het verschil tussen de = en de == operator?
^ what he said, daarnaast initialiseer je $TotaalTransactie_Waarde nergens. Ook zou ik geen uppercase/lowercase namen voor variabelen gebruiken in combinatie met underscores, gebruik bij voorkeur camelCase of maak alles lowercase en gebruik underscores. Gebruik een van de twee, maar niet beide.
---- De oplossing. ----
($Transactie = "Betalen" ) Moet in dit geval ($Transactie == "Betalen" ) zijn.
Bedankt Frank. Hiermee is het gelukt.
Met vriendelijke groet, Carl.
Gewijzigd op 08/10/2015 13:18:27 door Carl Zwanenburg
Ik ga een extra bak koffie drinken.
Heel die enkele = niet gezien.
Top Frank!
En natuurlijk ook bij de andere if!
bedankt voor je aanvulling. Ik ben niet bekend met camelCase, dus duik ik daar even in.
Voor de leesbaarheid gebruik ik underscors, maar je hebt een punt. Er sluipt veel gevaar van fouten in.
Gr. Carl.
Anders gaat het nog niet goed.
inderdaad. De ELSEIF en in beide gevallen == gebruikt.
Behalve in het ELSE statement. Daar is = 0; blijven staan.
Bedankt.