[PHP]Fout in if-statements

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RvL
  • Registratie: Maart 2002
  • Laatst online: 21:56
Hallo allemaal,

ik ben bezig met een update voor mijn EK-poule. Ik had namelijk niet gedacht dat NL zo ver zou komen, dus heb geen rekening gehouden met penalties :X

Maar goed, ik heb nu dus de mogelijkheid ingebouwd om te voorspellen wie er wint na penalties. Eerst gebeurde dit door uit het tekstveld te gaan. Dan komen twee checkboxen tevoorschijn. Veel mensen drukken echter meteen op Submit waardoor ze de checkboxen niet te zien krijgen. Daarom dacht ik in het phpbestand wat de gegevens in de database invoert een controle te zetten om te kijken of bij gelijkspel de winnaar na penalties is ingevuld. Is dit niet het geval dan wordt gevraagd dat in te vullen waarna er een formulier naar hetzelfde bestand wordt gepost.

Dus bij het aanvankelijk invullen van een voorspelling in addVoorspel.php worden de velden wedstrID(wedstrijdID), tegenstander, dlpNL(doelpunten NL), dlpTegen(tegendoelpunten), penNL(NL wint na penalties) en penTegen(tegenstander wint na penalties) doorgestuurd dmv een POST-formulier.

Daarna doe ik het volgende in insVoorspel.php
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
25
26
27
28
29
30
31
32
33
34
<?php
    print($_POST['dlpNL']." - ".$_POST['dlpTegen']."<br>");
    if($_POST['dlpNL'] == $_POST['dlpTegen'])
    {
        if(!$_POST['penNL']&&!$_POST['penTegen'])
        {
?>
            <p>Wie wint er na penalty's?</p>
            <form name="voorspellen" action="insvoorspel.php" method="post">
            <input type="hidden" name="wedstrID" value="<?php print($_POST['wedstrID']);?>">
            <input type="hidden" name="dlpNL" value="<?php print($_POST['dlpNL']);?>">
            <input type="hidden" name="dlpTegen" value="<?php print($_POST['dlpTegen']);?>">
            Nederland: <input type="checkbox" name="penNL">&nbsp;
<?php   
            print($_POST['Tegen']);
?>      
            <input type="checkbox" name="penTegen">
            <input type="submit" value="Doorgaan">
            </form>
<?php
            die();
        }
        //Afhankelijk van gekozen winnaar 
        if($_POST['penNL'])
            $intPen = 1;
        if($_POST['penTegen'])
            $intPen = 2;
        
    }
    if($_POST['dlpNL'] <> $_POST['dlpTegen']);
    {
        //Ook deze lus voert hij uit
        $intPen = 0;
    }

Het gaat hier fout bij de laatste 3 IF-statements. Afhankelijk van de gekozen winnaar wordt $intPen op 1 of 2 gezet, want het aantal doelpunten is gelijk.

Maar volgens PHP is het aantal doelpunten ook ongelijk aan elkaar, want ook de laatste IF wordt uigevoerd.

Bovenstaande gebeurd alleen als het formulier vanuit insVoorspel.php naar insVoorspel.php wordt gesubmit. Vanuit addVoorspel.php treden er geen problemen op.

Voor zover ik weet is mn syntax goed, maar er zal toch een reden moeten zijn dat het fout gaat?

[ Voor 12% gewijzigd door RvL op 28-06-2004 10:08 ]

Liefde maakt een smal bed breed!
Nu de dekens nog...


Acties:
  • 0 Henk 'm!

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 18:54
Het enige wat ik zo snel zie is dat
code:
1
/Afhankelijk van gekozen winnaar


dit moet zijn

code:
1
//Afhankelijk van gekozen winnaar

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Bij de laatste if staat er een ; direct na de conditie. Oftewel 0 statements als die if opgaat. De code daarna is dus niet aan een conditie gebonden en zal altijd worden uitgevoerd:
Ergo, haal die ; weg en let op de betekenis van ; in je code.

{signature}


Acties:
  • 0 Henk 'm!

  • RvL
  • Registratie: Maart 2002
  • Laatst online: 21:56
Ja Voutloos, je hebt helemaal gelijk. Ik heb er gewoon al die keren overheen gelezen 8)7 :X

Die '/' ipv '//' was een typefoutje wat me al opgevallen was, maar de oude code stond nog op t klembord kennelijk.

Nu werkt het inderdaad wel. Heb er gewoon een half uur overheen zitten lezen

Liefde maakt een smal bed breed!
Nu de dekens nog...


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Syntax highlighter gebruiken helpt tegen dit soort geintjes.

Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:10

Robtimus

me Robtimus no like you

Skaah schreef op 28 juni 2004 @ 23:02:
Syntax highlighter gebruiken helpt tegen dit soort geintjes.
Tegen die / ipv // wel ja, maar wat doet ie tegen een ; achter een if? Syntactisch is dat perfect.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 15-05 16:29

Macros

I'm watching...

; achter een while is veel leuker :p

"Beauty is the ultimate defence against complexity." David Gelernter


Acties:
  • 0 Henk 'm!

Verwijderd

Een is-niet-gelijk-aan in php kan ook zo: !=, hoewel <> ook een logische niet operator is...het is het proberen waard ;)

En als dat niet wil lukken:
Maak van die tweede losse IF een ELSE op die 1e...
Dus zo:
PHP:
1
2
3
4
5
6
7
8
if($a==$b)
{
//gelijk
}
else
{
//niet gelijk dus, zelfde als <> of !=
}

[ Voor 76% gewijzigd door Verwijderd op 29-06-2004 10:45 ]

Pagina: 1