Toon posts:

[php] if / else werkt niet?

Pagina: 1
Acties:
  • 228 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
hoi,
heb ontzettend hard gewerkt aan mun scriptje, maar het ziet er naar uit dat het niet helemaal werkt en kan toch echt niet ontdekken waar het aan ligt.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?

if (!$_SESSION['ingelogd'] && !$_COOKIE['ingelogd']){
$auth == "geen";
} else if ($_SESSION['ingelogd'] && !$_COOKIE['ingelogd']){
$auth == "sessie";
} else if (!$_SESSION['ingelogd'] && $_COOKIE['ingelogd']){
$auth == "cookie";
}
if ($auth == "geen") {
echo "opzouten";
} else if ($auth == "sessie") {
echo "je bent ingelogd met een sessie $ingelogd";
} else if ($auth == "cookie") {
echo "je bent met een cookie ingelogd $ingelogd";
}

?>

de browser geeft GÉÉN output terwijl de browser toch echt iets zou moeten zeggen? misschien heb ik een hele domme fout gemaakt maar zit met dit script al een week in m'n maag

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Doe eens na elke regel een echo "woei!"; ofzo?
Het kan zijn dat je gewoon een parse error hebt, en dat dat zo wordt afgehandeld. Dat heb ik nu ook, ik ben net geupgrade naar 4.2.2. en als ik nou een parse error heb, dan krijg ik gewoon een lege pagina 8)7

Verwijderd

Topicstarter
maar wat zou er dan mis kunnen zijn?
heb het script speciaal zo gemaakt omdat het dan overzichtelijk was --> eerst heel ingewikkeld / gecompliceerd --> testen --> werkt niet --> script terugbrengen naar 'oorsprong' --> werkt niet ???

  • leonardo1504
  • Registratie: April 2001
  • Niet online
Verwijderd schreef op 31 juli 2002 @ 10:06:
hoi,
heb ontzettend hard gewerkt aan mun scriptje, maar het ziet er naar uit dat het niet helemaal werkt en kan toch echt niet ontdekken waar het aan ligt.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?

if (!$_SESSION['ingelogd'] && !$_COOKIE['ingelogd']){
$auth == "geen";
} else if ($_SESSION['ingelogd'] && !$_COOKIE['ingelogd']){
$auth == "sessie";
} else if (!$_SESSION['ingelogd'] && $_COOKIE['ingelogd']){
$auth == "cookie";
}
if ($auth == "geen") {
echo "opzouten";
} else if ($auth == "sessie") {
echo "je bent ingelogd met een sessie $ingelogd";
} else if ($auth == "cookie") {
echo "je bent met een cookie ingelogd $ingelogd";
}

?>

de browser geeft GÉÉN output terwijl de browser toch echt iets zou moeten zeggen? misschien heb ik een hele domme fout gemaakt maar zit met dit script al een week in m'n maag
In elke assignment (waar je een waarde toekent aan $auth ) staat een = te veel
doe het zo:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?

if (!$_SESSION['ingelogd'] && !$_COOKIE['ingelogd']){
$auth = "geen";
} else if ($_SESSION['ingelogd'] && !$_COOKIE['ingelogd']){
$auth = "sessie";
} else if (!$_SESSION['ingelogd'] && $_COOKIE['ingelogd']){
$auth = "cookie";
}
if ($auth == "geen") {
echo "opzouten";
} else if ($auth == "sessie") {
echo "je bent ingelogd met een sessie $ingelogd";
} else if ($auth == "cookie") {
echo "je bent met een cookie ingelogd $ingelogd";
}

?>

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
EN waarschijnlijk krijg je warnings omdat je geen isSet() gebruikt.

  • flat
  • Registratie: Mei 2000
  • Niet online
Nielsz schreef op 31 juli 2002 @ 10:10:
ik ben net geupgrade naar 4.2.2.
hallo Nielsz 4.2.2 :P

maar echo anders ook even al die variabelen, dan heb je zo door of daar misschien iets niet aan klopt (typo waar we met z'n allen overheenlezen?)

"Happiness is a way of travel, not a destination."
--Roy Goodman


  • leonardo1504
  • Registratie: April 2001
  • Niet online
Oh ja, het is dus in je assignments:
code:
1
$auth="blaat";
ipv
code:
1
 $auth=="blaat";

Daar had je achter kunnen komen door te kijken welke waarde $auth heeft voor je de tweede if then else serie in gaat: var_dump($auth)

Verwijderd

Topicstarter
oei wat ben ik weer dom bezig :7
bedankt iig

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Flat© schreef op 31 juli 2002 @ 10:14:
[...]
hallo Nielsz 4.2.2 :P
<----------- :)

Verwijderd

php 4.2.2 gaat ook nog eens anders om met global vars!!

Dat was de reden dat ik niet geupdate heb; zou ik mijn source moeten editten... mischien heb je dat probleem ook nog wel!

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
; Print out errors (as a part of the output). For production web sites,
; you're strongly encouraged to turn this feature off, and use error logging
; instead (see below). Keeping display_errors enabled on a production web site
; may reveal security information to end users, such as file paths on your Web
; server, your database schema or other information.
display_errors = On
Zo, bij mij is het opgelost :) Die stond standaard uit in de php.ini-optimized :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
Mini info .. het is 'elseif' en niet 'else if' :P

http://www.php.net/manual/en/control-structures.elseif.php

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Dat maakt helemaal niks uit !
else if is eigenlijk beter ipv elseif.

else if() === else { if () }

  • Grum
  • Registratie: Juni 2001
  • Niet online
vgouw: else if is eigenlijk beter ipv elseif.

Verklaar jezelf nader

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Grum schreef op 31 juli 2002 @ 16:02:
vgouw: else if is eigenlijk beter ipv elseif.

Verklaar jezelf nader
Ok een kleine verklaring. In een taal wil je zo weinig mogelijk verschillende "tags" hebben met een gelijkwaardige functie en zeker niet "tags" die een functie vormen die door twee losse "tags" hetzelfde bied. Eenvoud is kracht.

Dus met else en met if kun je alles doen, waarom dan elseif ?

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 09:49

pietje63

RTFM

vgouw schreef op 31 juli 2002 @ 10:43:
[...]
Dat maakt helemaal niks uit !
else if is eigenlijk beter ipv elseif.

else if() === else { if () }
volgens mij niet, want je kunt meerdere else if's hebben in een keer, maar je kunt slechts een else hebben, toch?


ik weet het ook niet zeker, maar ik denk zo (beetje vaag misschien)
else if=>
PHP:
1
2
3
else if (){
blaat
}

en else { if =>
PHP:
1
2
3
4
else {
if (){
} // end van de if
} // end van de else
dus zou je hem dan ook 2x moeten sluiten


maar ontopic>> lag het nu aan die dubbele is tekens??

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
pietje63 schreef op 31 juli 2002 @ 18:31:
volgens mij niet, want je kunt meerdere else if's hebben in een keer, maar je kunt slechts een else hebben, toch?
Correct, maar je moet aan nesting denken.

elseif aan elkaar:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
if( $var == WAARDE_EEN ) {

    //Doe je acties voor WAARDE_EEN
} elseif ( $var == WAARDE_TWEE ) {

    //Doe acties voor WAARDE_TWEE
} elseif ( $var == WAARDE_DRIE ) {

    //Acties voor WAARDE_DRIE
} else {

    //De rest van de waardes van $var
}


Dit is volledig in overeenkomst met het volgende:
else if los
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if( $var == WAARDE_EEN ) {

    //Doe je acties voor WAARDE_EEN
} else {

    if ( $var == WAARDE_TWEE ) {

         //Doe acties voor WAARDE_TWEE
    } else {

         if ( $var == WAARDE_DRIE ) {

              //Acties voor WAARDE_DRIE
         } else {

             //De rest van de waardes van $var
         }
    }
}


De compiler zal de elseif (aan elkaar) vorm toch vertalen naar de else if (los) vorm, echter de leesbaarheid van de 'aanelkaar' vorm is echt vele malen beter. Zoals je hierboven ziet is de else if (los) bij 4! opties al een flinke warboel aan het worden, iets wat niet bevoordelijk is imho.
En daarom prefereert de vaste vorm zichzelf dan ook boven de losse vorm van else if imho
Misschien is het zelfs nog mooier om een switch te gebruiken, echter die gebruik ik vaak alleen bij 3 of meer waardes, of het liefst helemaal niet door het in subclasses onder te brengen

Even voor de volledigheid, maar veeeeeeeels te veel ruimte voor zo weinig keuze :)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
switch( $var ) {

        WAARDE_EEN:

                   //Doe je acties voor WAARDE_EEN
                   break;

        WAARDE_TWEE:

                    //Doe acties voor WAARDE_TWEE
                    break;

        WAARDE_DRIE:

                    //Acties voor WAARDE_DRIE
                    break;

        default:

                  //De rest van de waardes van $var
                  break;
}

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Ik wilde alleen maar zeggen dag "else if" taalkundig beter is dan "elseif"

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
vgouw schreef op 31 juli 2002 @ 20:06:
Ik wilde alleen maar zeggen dag "else if" taalkundig beter is dan "elseif"
100% mee eens ;) Elseif is alleen een additie om de code er beter uit te laten zien en begrijpelijker te maken, dan dat het een functie toevoegt op else if :)
Pagina: 1