[php] if-then-else werkt niet

Pagina: 1
Acties:
  • 221 views sinds 30-01-2008

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:08
Dit is een probleem zonder oplossing, vrees ik... Maar leest toch allen verder :?

In een HTML-form wordt o.a. een variabele 'template_coupon' meegegeven naar een process-file. In deze file staat onder andere de volgende code:
PHP:
1
<?// Werk eventueel mailing bij met couponif ($template_coupon != "geen")    updateMailingCoupon($mailing_id, $template_coupon);// Ga verder met het invullen van de coupon indien gekozen,// anders naar adresselectie.if ($template_coupon != "geen")    header("Location: coupon_$template_coupon.php");else    header("Location: addresses_select.php");?>

De waarde van $template_coupon is 'geen'. De eerste 'IF' pakt dat goed en voert de code inderdaad niet uit.

De tweede if-then-else doet het niet!!! De eerste regel wordt uitgevoerd, en niet de tweede. Terwijl de if hartstikke 'false' teruggeeft!

Dit probleem doet zich niet voor op de computers waar ik hier op werk (PC met IE6, NS6, Mac met IE), alleen (voor zover ik weet) bij degene voor wie ik dit script schrijf. Die heeft PC met IE5.

Heeft iemand dit probleem al eens beetgehad???????????

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

:?
Dit is toch server-side?
Dan maakt het toch niet uit waar je het bekijkt?

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Op woensdag 08 mei 2002 15:07 schreef sjroorda het volgende:
Dit is een probleem zonder oplossing, vrees ik... Maar leest toch allen verder :?
Dat lijkt me sterk.

Ik zie niet waar je je ifs afsluit, ik neem aan dat dit in php toch ook moet :)

Who is John Galt?


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:08
Zoals ik al zei: ik verwacht eigenlijk geen oplossing, aangezien die er volgens mij niet is.

PHP is idd serverside, dus ook in Opera, Konqueror, Lynx of wat dan ook zou het moeten werken.
PHP:
1
<?if (...)     doeiets?>

is gelijk aan
PHP:
1
<?if (...){    doeiets}?>

Dit vind ik lekkerder programmeren, en het werkt hetzelfde

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Voor 1 regel niet, maar ik zou het zeker proberen!
Misschien pakt ie die else wel voor die 1e if...

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:08
Op woensdag 08 mei 2002 15:14 schreef XLerator het volgende:
Voor 1 regel niet, maar ik zou het zeker proberen!
Misschien pakt ie die else wel voor die 1e if...
Nee, want op alle compu's waar ik het probeer doet-ie het wel :'(

Ik weet het: het is hopeloos...

Verwijderd

Je gebruikt 2 keer dezelfde voorwaarde... zou je dat niet beter in 1 keer kunnen doen?
PHP:
1
<?if ($template_coupon != "geen") {      updateMailingCoupon($mailing_id, $template_coupon);    header("Location: coupon_$template_coupon.php"); }else {    header("Location: addresses_select.php"); }?>

Ik heb de comments even weggelaten, die moeten nu natuurlijk anders. Volgens mij werkt het zo ook (of misschien is 'wel' een beter woord).

justmental > het hoeft geloof ik niet, als je maar 1 regel als actie gebruikt.

Verwijderd

Op woensdag 08 mei 2002 15:11 schreef justmental het volgende:

[..]

Dat lijkt me sterk.

Ik zie niet waar je je ifs afsluit, ik neem aan dat dit in php toch ook moet :)
Nee, hij zet z'n statment er direct achter, dan hoeft het niet, maar persoonlijk vind ik het wel beter.

Ook vindt ik het raar dat je twee keer dezelfde lus gebruikt.
Zoiets kan ook werken:
PHP:
1
<?// Werk eventueel mailing bij met couponif ($template_coupon != "geen"){   updateMailingCoupon($mailing_id, $template_coupon);   //Ga verder met het invullen van de coupon indien gekozen,   header("Location: coupon_$template_coupon.php");}// anders naar adresselectie.else{   header("Location: addresses_select.php");}?>

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Op woensdag 08 mei 2002 15:14 schreef sjroorda het volgende:

[..]

Nee, want op alle compu's waar ik het probeer doet-ie het wel :'(

Ik weet het: het is hopeloos...
Ik zou toch maar eens die haakjes proberen

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Speed24
  • Registratie: Augustus 1999
  • Niet online
PHP:
1
<?if ($template_coupon != "geen")       header("Location: coupon_$template_coupon.php");else       header("Location: addresses_select.php");?>

Ben niet zo bekend met PHP, maar dit lijkt me niet helemaal goed.
Je doet nl een IF, als die true is, dan iets met header... en daar zet je meteen een ; achter.
Moet je daar niet die ; weglaten, want anders sluit ie de IF af en vergeet ie de ELSE ?
Dus zo:
PHP:
1
<?if ($template_coupon != "geen")       header("Location: coupon_$template_coupon.php")else       header("Location: addresses_select.php");?>

Verwijderd

Op woensdag 08 mei 2002 15:15 schreef Egrimm het volgende:
Je gebruikt 2 keer dezelfde voorwaarde... zou je dat niet beter in 1 keer kunnen doen?

.....
Woei! Great minds think alike ;)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

code:
1
2
3
4
5
6
if ( $template_coupon != "geen" ) //  --------------------
   updateMailingCoupon($mailing_id, $template_coupon); // |- deze 2 zijn dezelfde conditie
if ( $template_coupon != "geen" ) //  --------------------
   header( "Location: coupon_$template_coupon.php" );
else
   header( "Location: addresses_select.php" );

dus de 2e is overbodig:
code:
1
2
3
4
5
6
7
if ( $template_coupon != "geen" )
{
  updateMailingCoupon($mailing_id, $template_coupon);
  header( "Location: coupon_$template_coupon.php" );
}
else
   header( "Location: addresses_select.php" );

Overigens oogt het mij logischer te kijken of $template_coupon wel "geen" is.
code:
1
2
3
4
5
6
7
if ( $template_coupon == "geen" )
   header( "Location: addresses_select.php" );
else
{
  updateMailingCoupon($mailing_id, $template_coupon);
  header( "Location: coupon_$template_coupon.php" );
}

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
Die if-then-else zal best wel werken. (Tenzij $template_coupon nog ergens op een ranzige wijze veranderd wordt).
Waarschijnlijk doet header("Location: ..") het niet. Je kan proberen om de location absoluut maken ipv relatief.

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Op woensdag 08 mei 2002 15:17 schreef speed24 het volgende:Blabla over ;
In PHP moet die ; wel :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Speed24
  • Registratie: Augustus 1999
  • Niet online
Op woensdag 08 mei 2002 15:18 schreef Cyberneer het volgende:

[..]

Woei! Great minds think alike ;)
Ah, en hoe verklaar je dan dat je 2 minuten later was? ;)

Maar dat had ik nog niet gemerkt... inderdaad niet handig ( lees: slim :) ) om 2x dezelfde IF-voorwaarde te controleren, kost alleen maar tijd en code typen :(

Verwijderd

Op woensdag 08 mei 2002 15:20 schreef speed24 het volgende:

Ah, en hoe verklaar je dan dat je 2 minuten later was? ;)
Ik moest nog de telefoon aannemen van Egrimm :P, en daarna nog een verhaal typen met mijn rechterhand in 't verband en dat binnen twee minuten, niet slecht al zeg ik zelf :)

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:08
OK, heb alles in 1 if gepropt (waarom niet eerder vraag ik me nu ook af :))

Even een aantal antwoorden op een rijtje:

- de code is JUIST, dus inclusief alle punt-komma's, al dan niet vergeten accolades, enz.
- header doet het wel: je wordt naar coupon_geen.php gestuurd (en die bestaat dus niet ;))
- 'geen' heeft echt de waarde 'geen', dus geen hidden new-lines of zo

en verder? Weet het nog steeds niet... ga binnenkort maar eens testen (niet gelijk weer die klant opbellen ;)), en dat kan pas thuis... wordt vervolgd :P

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 11:02
Jammer dat er zoveel mensen met irrelevante dingen aan komen zetten. Een beetje meer to the point mag wel, dan blijft het probleem overzichtelijk.

En nu inhoudelijk. Ik ga er vanuit dat updateMailingCoupon $template_coupon niet wijzigt (of dat ook zo is kan ik zo niet beoordelen). Het is in die situatie onmogelijk dat deze variabele de ene keer wel gelijk is aan "leeg" en een andere keer niet. Ik ben dan ook benieuwd hoe je dit geconstateert hebt.

Kortom: debuggen maar weer. :)

Verwijderd

Ik betwijfel of de reacties irrelevant waren, we proberen de topicstarter enkel te helpen z'n code iets overzichtelijker te maken (wat dus het debuggen makkelijker maakt).

Ik zou trouwens denken dat het probleem niet aan de code ligt, als wat sjroorda zegt waar is. PHP blijft server-side en dan ligt het dus idd aan de clients dat het op 1 PC wel werkt en de andere niet.

  • Access
  • Registratie: Juni 2001
  • Laatst online: 06-08 19:54
Sorry... Verkeerd gelezen |:(.

Het is iig. wel zo dat gesubmitte variabelen in php v.4.2.0 niet meer global kunnen zijn, je moet ze echt ophalen en dan global maken. (vandaar dus)

  • Grum
  • Registratie: Juni 2001
  • Niet online
Access, waaruit leid jij nou af dat dit een scope fout zou zijn ?

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
[RANZIGE OPLOSSING >:)]
coupon_geen.php aanmaken en laten redirecten naar addresses_select.php
[/RANZIGE OPLOSSING]

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:08
Op woensdag 08 mei 2002 15:48 schreef Sjaaky het volgende:
[RANZIGE OPLOSSING >:)]
coupon_geen.php aanmaken en laten redirecten naar addresses_select.php
[/RANZIGE OPLOSSING]
hmmm... ook al is het een HEEL verkeerde oplossing die GENE ENKELE programmeur eigenlijk zou mogen gebruiken, toch kan dit wel een manier zijn voor als het ECHT NIET meer lukt ;) I'll keep it in mind :)

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Op woensdag 08 mei 2002 15:53 schreef sjroorda het volgende:

[..]

hmmm... ook al is het een HEEL verkeerde oplossing die GENE ENKELE programmeur eigenlijk zou mogen gebruiken, toch kan dit wel een manier zijn voor als het ECHT NIET meer lukt ;) I'll keep it in mind :)
Hmm áls je dat dan gaat gebruiken he, geef je me dan ff de url? :)

Dan zet ik `m ff op mijn blacklist :P :) ;)

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:08
Op woensdag 08 mei 2002 15:59 schreef XLerator het volgende:

[..]

Hmm áls je dat dan gaat gebruiken he, geef je me dan ff de url? :)

Dan zet ik `m ff op mijn blacklist :P :) ;)
kan ik doen, maar zit achter een usr/pw-beveiliging, dus daar heb je niet zoveel aan :P

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Op woensdag 08 mei 2002 16:02 schreef sjroorda het volgende:

[..]

kan ik doen, maar zit achter een usr/pw-beveiliging, dus daar heb je niet zoveel aan :P
Hé, wat jammer nou :P

misschien bedoelde soultaker dit soms met 'irrelevante dingen'? :o

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

hmmm als jouw beveiliging net zo als deze oplossing is dan moet dat geen probleem zijn ....

>:) :+

Programmer - an organism that turns coffee into software.


  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

HAHAHAHAAHAHAHaahahahahahahahhah ehh hahaha hmmhmhmhmahamhamhmahmhmmhmmm :o :D :o :D

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 08:34
Access :
Het is iig. wel zo dat gesubmitte variabelen in php v.4.2.0 niet meer global kunnen zijn, je moet ze echt ophalen en dan global maken. (vandaar dus)
Dat kan je het net zo goed weer aanzetten in je php.ini hè |:(
Waarom denk je in godsnaam dat ze dit eruit hebben gesloopt.. precies... voor de veiligheid.

Dus spreek het gewoon door het hele script aan via $_GET of $_POST.

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Heeeeej bietje rustig he :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:08
Op woensdag 08 mei 2002 16:05 schreef LuCarD het volgende:
hmmm als jouw beveiliging net zo als deze oplossing is dan moet dat geen probleem zijn ....

>:) :+
Neeneenee, heb geleerd van een eerder topic en gebruik nu sessions :+

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Hmm jullie hebben allemaal zo`n rood puntje op jullie neus. Dat je t ff weet...

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • sjroorda
  • Registratie: December 2001
  • Laatst online: 15:08
Op woensdag 08 mei 2002 16:32 schreef XLerator het volgende:
Hmm jullie hebben allemaal zo`n rood puntje op jullie neus. Dat je t ff weet...
Dat will zeggen dat het gisteravond heel gezellig was >:) :+ :+ :+ :+ :+

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

gezellig maar gaat nergens meer over

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.