IF statement werkt niet goed in combi met WHILE loop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer / Innovatieve software / Virtual Re

Functieomschrijving Als .Net developer werken aan innovatieve software waar onder andere gebruik gemaakt wordt van Virtual Reality? Bijdragen aan een organisatie waar je uitgedaagd wordt om continu verbeteringen en ontwikkelpunten te ontdekken en door te voeren? Werken in de omgeving Putten? Reageer dan nu voor meer informatie! Het pro-actief aandragen van verbeteringen voor de bestaande applicatie; Ontwikkelen van nieuwe functionaliteiten; Doorvoeren van aanpassingen en wijzigingen; Verantwoordelijk voor koppelingen met andere systemen; Op de hoogte blijven van technische ontwikkelingen. Functie-eisen Hbo werk- en denkniveau; Een afgeronde IT gerelateerde opleiding; Minimaal 1 jaar professionele ervaring als developer; Aantoonbare kennis van C#; Initiatiefrijke

Bekijk vacature »

Junior Java developer met ondernemend karakter

Vacature Omschrijving Je komt te werken in een jong en creatief team waarin je écht onderdeel bent van de ontwikkelingen binnen de organisatie. Korte lijnen, weinig bureaucratie en een informele werksfeer. Iemand met een ondernemend karakter zal zich snel thuis voelen. Daarnaast bieden we een marktconform salaris, een gezamenlijke lunch én een 2-wekelijkse stoelmassage. Functieomschrijving Je ontwikkelt mee aan een uniek software platform vol componenten waarmee consultants (en klanten) zowel SaaS- als Enterprise oplossingen creëren op het gebied van ‘Kwaliteit & Veiligheid’, ‘Privacy & Informatiebeveiliging’ en ‘Governance, Risk & Compliance’. Vanuit een overtuigende passie voor het digitaal transformeren van werkprocessen

Bekijk vacature »

PHP Developers gezocht die van complexe online vra

Vacature Omschrijving Een grote klant is opzoek naar enthousiaste PHP developers (junior/medior/senior). De organisatie waar jij komt te werken ontwikkelt en bouwt succesvolle oplossingen voor complexe online vraagstukken zoals performance, usability en conversion. Daarnaast zorgen zij voor externe systemen ingericht voor productbeheer, point-of-sales en voorraadbeheer koppelt de organisatie probleemloos aan op eigen Magento gebaseerde webshops. Het is een informele organisatie waar de communicatielijnen kort zijn. Functieomschrijving Met drupal 8 of ShopWare realiseert de organisatie prachtige frond-ends op dynamische data uit allerlei systemen. Je houdt je in deze organisatie bezig met het ontwerpen, ontwikkelen en beheren van functionaliteiten van de applicaties

Bekijk vacature »

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

19/10/2019 05:08:31
 
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.