[php] probleempje met if

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Exyge
  • Registratie: Januari 2002
  • Laatst online: 17-09 16:39
Wat doe ik hier fout?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php echo "". $_POST['betalingswijze'] ."" ?>
<?php
if ($_POST['betalingswijze'] = rembours)
{
    echo "Omdat u per rembours betaald is er 8 € extra in"
        " rekening gebracht op de totale kosten<br>";
}
elseif ($_POST['betalingswijze'] = afhalen)
{
    echo "Zodra uw bestelling binnen is wordt er contact met"
        " u opgenomen zodat uw uw pakket op kunt komen halen<br>";
}
 ?>


In de bovenste echo echoed hij netjes _afhalen_ alleen de volgende echo wordt altijd "Omdat u per rembours betaald is er 8 € extra in rekening gebracht op de totale kosten"

RTFM zou je zeggen... maar daar wordt ik ook even niet veel wijzer van ik heb me doodgestaard hierop :)

.modbreak: code leesbaar gemaakt :)

[ Voor 19% gewijzigd door .oisyn op 21-03-2003 17:55 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

je doet wat fout ja...
$_POST['betalingswijze'] = rembours
wijs de waarde/constante rembours toe aan de key betalingswijze in de array _POST...

overigens moet je ook je strings omsluiten met "" of ''

Zie verder: http://www.php.net/manual....operators.assignment.php
en http://www.php.net/manual....operators.comparison.php

[ Voor 27% gewijzigd door ACM op 21-03-2003 17:21 ]


Acties:
  • 0 Henk 'm!

  • Exyge
  • Registratie: Januari 2002
  • Laatst online: 17-09 16:39
Die waarde zit dus al in de array dus dat is het probleem niet

oke het is gelukt... == was het probleem... dom dom dom...

[ Voor 34% gewijzigd door Exyge op 21-03-2003 17:25 ]


Acties:
  • 0 Henk 'm!

  • sebas
  • Registratie: April 2000
  • Laatst online: 03-09 12:51
http://gerard.yoursite.nl/got/php-tiplist/index.spef

Die had ik nog gebookmarkt voor dit soort posts :)

Everyone complains of his memory, no one of his judgement.


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Exyge schreef op 21 maart 2003 @ 17:22:
Die waarde zit dus al in de array dus dat is het probleem niet

Je moet wel lezen wat ik neerzet...
Ik leg namelijk uit wat er in die regel gebeurt, niet wat jij wilt dat er gebeurt ofzo :)

Acties:
  • 0 Henk 'm!

Verwijderd

Verder moet ik zeggen dat je code ook niet echt heel leesbaar is. Indenten is nooit fout :)

Acties:
  • 0 Henk 'm!

Verwijderd

tip gebruik ipv letter cijfers .. rembours = 1 via bank = 2 etc if (betalingswijze == "1") { }
je kunt dan ook makkelijk > en < gebruiken if betalingswijze > 1 dan moet hij rekening houden met blaat :\

en in if moet je altijd voor een vergelijking == gebruiken niet = maar volgens mij is dat al verteld ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Exyge schreef op 21 March 2003 @ 17:22:
Die waarde zit dus al in de array dus dat is het probleem niet
Dat maakt geen reet uit, zoals het hier staat is het nog fout :)
PHP:
1
$_POST['betalingswijze'] = rembours

De juiste syntax is:
PHP:
1
$_POST['betalingswijze'] == "rembours"

Acties:
  • 0 Henk 'm!

  • a3konijn
  • Registratie: Oktober 2000
  • Laatst online: 15-09 23:19
Verwijderd schreef op 21 March 2003 @ 18:43:
[...]

Dat maakt geen reet uit, zoals het hier staat is het nog fout :)
PHP:
1
$_POST['betalingswijze'] = rembours

De juiste syntax is:
PHP:
1
$_POST['betalingswijze'] == "rembours"
En dat klopt dus ook weer niet!!

= is een toewijzingsactie
== gebruik je om te kijken of iets gelijk is aan elkaar.

Dus er moet staan:
PHP:
1
$_POST['betalingswijze'] = "rembours"


of


PHP:
1
2
if( $_POST['betalingswijze'] == "rembours") {
}

Acties:
  • 0 Henk 'm!

  • a3konijn
  • Registratie: Oktober 2000
  • Laatst online: 15-09 23:19
Verwijderd schreef op 21 maart 2003 @ 18:39:
tip gebruik ipv letter cijfers .. rembours = 1 via bank = 2 etc if (betalingswijze == "1") { }
je kunt dan ook makkelijk > en < gebruiken if betalingswijze > 1 dan moet hij rekening houden met blaat :\

en in if moet je altijd voor een vergelijking == gebruiken niet = maar volgens mij is dat al verteld ;)
Als je cijfers gebruikt ga je natuurlijk geen cijfers als string opslaan. Dus je kan die "" wel weglaten en krijgt dan gewoon if(betalingswijzer == 1)

Op zicht kan je dan nog beter constanten gaan gebruiken die je de waarde 1 of 2 geeft. Dit komt de leesbaarheid wel ten goed.
Dus:
PHP:
1
2
3
BANK = 1
if(betalingswijze == BANK) {
}


Waarbij BANK dus geen quotes krijgt omdat het een constante is die een integer representeerd

Acties:
  • 0 Henk 'm!

Verwijderd

a3konijn schreef op 21 maart 2003 @ 18:48:
[...]


En dat klopt dus ook weer niet!!

= is een toewijzingsactie
== gebruik je om te kijken of iets gelijk is aan elkaar.

Dus er moet staan:
PHP:
1
$_POST['betalingswijze'] = "rembours"


of


PHP:
1
2
if( $_POST['betalingswijze'] == "rembours") {
}
Arg :(
Ik heb alleen dat stukje ter illustratie uit de if-lus gehaald, dat weet ik zelf namelijk ook wel!

En zelf weet je niet eens hoe het wel moet:
a3konijn schreef op 21 maart 2003 @ 18:51:
[...]


Als je cijfers gebruikt ga je natuurlijk geen cijfers als string opslaan. Dus je kan die "" wel weglaten en krijgt dan gewoon if(betalingswijzer == 1)

Op zicht kan je dan nog beter constanten gaan gebruiken die je de waarde 1 of 2 geeft. Dit komt de leesbaarheid wel ten goed.
Dus:
PHP:
1
2
3
BANK = 1
if(betalingswijze == BANK) {
}


Waarbij BANK dus geen quotes krijgt omdat het een constante is die een integer representeerd
Want de juiste code is zo:
PHP:
1
2
3
$bank = 1;
if($betalingswijze == $bank) {
}

Dus...


Verder, TS, ik zou je scriptje zo maken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<? 
echo $_POST['betalingswijze']."<br>";
switch($_POST['betalingswijze']) 
{ 
case 'rembours':
  echo "Omdat u per rembours betaald is er 8 € extra in
 rekening gebracht op de totale kosten<br>"; 
break;
case 'afhalen':
  echo "Zodra uw bestelling binnen is wordt er contact 
met u opgenomen zodat uw uw pakket op kunt komen halen<br>"; 
break;
default:
  echo "Geen of een verkeerde betalingswijze.";
// Als je met selectbox of radios werkt hoeft default niet
break;
}
   ?> 

[ Voor 38% gewijzigd door Verwijderd op 21-03-2003 19:17 ]


Acties:
  • 0 Henk 'm!

  • sebas
  • Registratie: April 2000
  • Laatst online: 03-09 12:51
Verwijderd schreef op 21 March 2003 @ 19:11:
[...]

Arg :(
Ik heb alleen dat stukje ter illustratie uit de if-lus gehaald, dat weet ik zelf namelijk ook wel!

En zelf weet je niet eens hoe het wel moet:
[...]
Want de juiste code is zo:
PHP:
1
2
3
$bank = 1;
if($betalingswijze == $bank) {
}

Dus...
[...]
vgl. http://www.php.net/manual/en/language.constants.php en
http://www.php.net/manual/en/language.variables.php

\edit voor de volledigheid, je moet het met define() doen, gewoon BANK = 1 ist niet goed.

[ Voor 9% gewijzigd door sebas op 21-03-2003 19:22 ]

Everyone complains of his memory, no one of his judgement.


Acties:
  • 0 Henk 'm!

Verwijderd

Ja, en define() stond er dus niet bij ;)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

a3konijn schreef op 21 maart 2003 @ 18:48:
PHP:
1
$_POST['betalingswijze'] == "rembours";

Dat is, bij mijn weten, een legaal statement hoor :)
Een beetje zinloos, maar wel legaal.

Verder zou je zoiets kunnen gebruiken bij:
$iets = ($blaat == "blaat")

Acties:
  • 0 Henk 'm!

Verwijderd

ACM schreef op 21 maart 2003 @ 19:49:

[...]

Dat is, bij mijn weten, een legaal statement hoor :)
Een beetje zinloos, maar wel legaal.

Verder zou je zoiets kunnen gebruiken bij:
$iets = ($blaat == "blaat")
Zal best, maar het was mijn bedoeling dat dat binnen een if-lus komt te staan ;)

Acties:
  • 0 Henk 'm!

  • paulh
  • Registratie: Juli 1999
  • Laatst online: 29-08 09:58
Om dit soort fouten te voorkomen kan je beter de statements omdraaien. Dan krijg je bijvoorbeeld:
PHP:
1
2
3
<?
if ("rembours" = $_POST['betalingswijze']) { ....  }
?>

Hierbij is "rembours" dus een constante en als je dan bovenstaand stukje code probeert uit te voeren gaat de compiler gelijk over zijn nek omdat hij die waarde daar niet aan kan toekennen. Als het andersom zou staan heb je dat niet.

Ik moet eerlijk toegeven dat ik het ook bijna nooit doe maar het is wel beter om zo je code te schrijven.

[ZwareMetalen.com] - [Kom in aktie tegen de CO2 maffia]

Pagina: 1