IF statement werkt niet goed in combi met WHILE loop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Carl Zwanenburg

Carl Zwanenburg

08/10/2015 12:41:28
Quote Anchor link
Onderstaande code geeft niet het gewenste resultaat

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}


?>


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.
 
PHP hulp

PHP hulp

25/05/2020 12:12:49
 
Joni Fleischer
Moderator

Joni Fleischer

08/10/2015 12:46:42
Quote Anchor link
ELSEIF gebruiken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}


?>
 
Carl Zwanenburg

Carl Zwanenburg

08/10/2015 12:59:40
Quote Anchor link
Best Joni,

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
 
Frank Nietbelangrijk

Frank Nietbelangrijk

08/10/2015 13:06:46
Quote Anchor link
Wat is het verschil tussen de = en de == operator?
 
Thomas van den Heuvel

Thomas van den Heuvel

08/10/2015 13:13:42
Quote Anchor link
^ 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.
 
Carl Zwanenburg

Carl Zwanenburg

08/10/2015 13:16:50
Quote Anchor link
Ha,

---- 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
 
Joni Fleischer
Moderator

Joni Fleischer

08/10/2015 13:20:35
Quote Anchor link
Wauw..

Ik ga een extra bak koffie drinken.
Heel die enkele = niet gezien.

Top Frank!
 
Jan de Laet

Jan de Laet

08/10/2015 13:21:06
Quote Anchor link
En natuurlijk ook bij de andere if!
 
Carl Zwanenburg

Carl Zwanenburg

08/10/2015 13:21:28
Quote Anchor link
Thomas,

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.
 
- SanThe -

- SanThe -

08/10/2015 13:31:07
Quote Anchor link
Ik neem aan dat je nu ook de elseif() gebruikt.
Anders gaat het nog niet goed.
 
Carl Zwanenburg

Carl Zwanenburg

08/10/2015 13:34:00
Quote Anchor link
Hoi SanThe,

inderdaad. De ELSEIF en in beide gevallen == gebruikt.
Behalve in het ELSE statement. Daar is = 0; blijven staan.

Bedankt.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.