[PHP] Unexpected { (eerste stappen in coding)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • corset
  • Registratie: November 2009
  • Laatst online: 25-07 13:11
Ik ben sinds een paar dagen rustig begonnen met PHP, CSS en HTML. Dit doe ik via Codecademy & Freecodecamp.

Nu is 1 van deze dingen, een opdracht om het volgende te doen:

Bij > 5 items, een 10% discount
Bij < 5 items, een 5% discount.

Dit werkt:

code:
1
2
3
4
5
        $items = 3;
        
        if($items > 5) {
          echo "You get a 10% discount!";
        }


Echter, als ik dan het volgende toevoeg (volgens de opdracht moet het met een else statement), krijg ik de error:
Parse error: syntax error, unexpected '{' on line 13
code:
1
2
3
4
5
6
7
8
9
10
      <?php
        $items = 3;
        
        if($items > 5) {
          echo "You get a 10% discount!";
        }
        
        else($items < 5) {
          echo "You get a 10% discount!";
        }


Vooral omdat de site in dit geval geen hulp biedt met de fout, zou ik graag willen weten wat ik fout doe, zodat ik dit in het vervolg kan voorkomen.


Voor de duidelijkheid, de complete code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
  <head>
  </head>
  <body>
    <p>
      <?php
        $items = 3;
        
        if($items > 5) {
          echo "You get a 10% discount!";
        }
        
        else($items < 5) {
          print "You get a 10% discount!";
        }
        
      ?>
    </p>
  </body>
</html>

[ Voor 16% gewijzigd door corset op 16-12-2015 08:41 ]

"Whatever their future, at the dawn of their lives, men seek a noble vision of man’s nature and of life’s potential."


Acties:
  • 0 Henk 'm!

  • emnich
  • Registratie: November 2012
  • Niet online

emnich

kom je hier vaker?

corset schreef op woensdag 16 december 2015 @ 08:40:
Parse error: syntax error, unexpected '{' on line 13
Lees de error eens goed, daar staat alles in wat je nodig hebt.

Er is een onverwachte '{' op regel 13. Dus PHP treft een { aan op regel 13 die hij niet verwacht had.

Acties:
  • +2 Henk 'm!

  • Salmon
  • Registratie: Juli 2009
  • Laatst online: 11-10 19:22

Salmon

.NET developer

Het is of

PHP:
1
2
3
4
5
 if(voorwaarde){

}else{

}


Wat jij wilt is zoiets als:

PHP:
1
2
3
4
5
6
7
if ($a > $b) {
    echo "a is bigger than b";
} elseif ($a == $b) {
    echo "a is equal to b";
} else {
    echo "a is smaller than b";
}


Zie de PHP documentatie

[ Voor 66% gewijzigd door Salmon op 16-12-2015 08:46 ]


Acties:
  • +1 Henk 'm!

  • corset
  • Registratie: November 2009
  • Laatst online: 25-07 13:11
emnich schreef op woensdag 16 december 2015 @ 08:43:
[...]

Lees de error eens goed, daar staat alles in wat je nodig hebt.

Er is een onverwachte '{' op regel 13. Dus PHP treft een { aan op regel 13 die hij niet verwacht had.
Klopt, echter wat ik tot nu toe heb begrepen, klopt dit gewoon. Daarom zit ik dus vast :)


@Salmon, thanks, ga ik even naar kijken.

"Whatever their future, at the dawn of their lives, men seek a noble vision of man’s nature and of life’s potential."


Acties:
  • 0 Henk 'm!

  • Ypho
  • Registratie: April 2008
  • Laatst online: 11-10 20:22

Ypho

Allround Nerd

De
Parse error: syntax error, unexpected '{' on line 13
is eigenlijk een beetje misleidend. Omdat je bij een else wel degelijk een { kunt gebruiken. Waar het fout gaat is dat je in de else ook een conditie zet, en dat kan niet.

Je zegt zelf ook: "Als je meer dan 5 items hebt krijg je 10% korting, en anders ..." (if/else)
Je zegt niet: "Als je meer dan 5 items hebt krijg je 10% korting, en anders minder dan 5 items ..." (jouw foute code)
Je zegt dan eerder: "Als je meer dan 5 items hebt krijg je 10% korting, en anders als je minder dan 5 items hebt..." (if/elseif)

[ Voor 4% gewijzigd door Ypho op 16-12-2015 08:48 ]

🃏 TCG Codex - Je volledige TCG verzameling in je broekzak ::: 🍏 TCG Codex for iOS ::: 🤖 TCG Codex for Android


Acties:
  • 0 Henk 'm!

  • corset
  • Registratie: November 2009
  • Laatst online: 25-07 13:11
Ypho schreef op woensdag 16 december 2015 @ 08:48:
De
[...]
is eigenlijk een beetje misleidend. Omdat je bij een else wel degelijk een { kunt gebruiken. Waar het fout gaat is dat je in de else ook een conditie zet, en dat kan niet.

Je zegt zelf ook: "Als je meer dan 5 items hebt krijg je 10% korting, en anders ..." (if/else)
Je zegt niet: "Als je meer dan 5 items hebt krijg je 10% korting, en anders minder dan 5 items ..." (jouw foute code)
Je zegt dan eerder: "Als je meer dan 5 items hebt krijg je 10% korting, en anders als je minder dan 5 items hebt..." (if/elseif)
Dit was hem! Bedankt. Ik dacht echt dat je het moest definieren dat het < 5 moest zijn. |:(

zoals ik al zei, eerste stappen in coding.

Bedankt voor de hulp allemaal :D

"Whatever their future, at the dawn of their lives, men seek a noble vision of man’s nature and of life’s potential."


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 01:12
met >5 en <5 dek je de conditie dat het precies 5 is ook niet af. Tenzij je echt mensen wilt straffen omdat ze een 5e item erbij nemen, lijkt me dat niet echt de bedoeling.

Acties:
  • 0 Henk 'm!

  • corset
  • Registratie: November 2009
  • Laatst online: 25-07 13:11
Caelorum schreef op woensdag 16 december 2015 @ 09:41:
met >5 en <5 dek je de conditie dat het precies 5 is ook niet af. Tenzij je echt mensen wilt straffen omdat ze een 5e item erbij nemen, lijkt me dat niet echt de bedoeling.
Zou je dan kunnen doen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
        $items = 3;
        
        if($items > 5) {
          echo "You get a 10% discount!";
        }
        
        else {
          echo "You get a 10% discount!";
        }

    else($items == 5) {
       echo "You get a 50% discount!";
            
    }



Even puur ter test uiteraard :)

"Whatever their future, at the dawn of their lives, men seek a noble vision of man’s nature and of life’s potential."


Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 02:34
corset schreef op woensdag 16 december 2015 @ 10:02:
[...]


Zou je dan kunnen doen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
        $items = 3;
        
        if($items > 5) {
          echo "You get a 10% discount!";
        }
        
        else($items < 5) {
          echo "You get a 10% discount!";
        }

    else($items == 5) {
       echo "You get a 50% discount!";
            
    }



Even puur ter test uiteraard :)
Nee compiled ook niet, je mag geen conditie in de else hebben. Je moet else if gebruiken. Een switch zou ook kunnen in deze use case

Acties:
  • 0 Henk 'm!

  • corset
  • Registratie: November 2009
  • Laatst online: 25-07 13:11
Marco1994 schreef op woensdag 16 december 2015 @ 10:04:
[...]

Nee compiled ook niet, je mag geen conditie in de else hebben. Je moet else if gebruiken. Een switch zou ook kunnen in deze use case
Thanks! Ik ga daar vandaag even mee vechten. Merk wel dat dit echt meer mijn ding is dan verwacht. Heerlijk kalmerend effect heeft dit.

"Whatever their future, at the dawn of their lives, men seek a noble vision of man’s nature and of life’s potential."


Acties:
  • 0 Henk 'm!

  • Alternative
  • Registratie: November 2008
  • Laatst online: 10-04-2022
Loop gelijk de rest van je script even door. Je zegt hier
Bij > 5 items, een 10% discount
Bij < 5 items, een 5% discount.
Maar in je script staat overal 10% discount ;)

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

De 10% korting is vanaf 5 items en meer? Zo ja, dan is je operator in de if-lus >= ipv enkel >. :)
Anders heb je t/m 4 artikelen 5% korting en vanaf 6 artikelen 10%... ;)

Je kunt voor de middelste de elseif() gebruiken, of gebruik gaan maken van de switch() functie.

Check ook even de docs van PHP zelf. :)
If:
http://php.net/manual/en/control-structures.if.php
http://php.net/manual/en/control-structures.elseif.php

Switch:
http://php.net/manual/en/control-structures.switch.php

[ Voor 50% gewijzigd door CH4OS op 16-12-2015 10:51 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Marco1994 schreef op woensdag 16 december 2015 @ 10:04:
[...]

Nee compiled ook niet, je mag geen conditie in de else hebben. Je moet else if gebruiken. Een switch zou ook kunnen in deze use case
Die switch zou dan wel heel raar uitzien voor een beginnende programmeur. :P Even voor de volledigheid:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
switch (true)
{
    case $items < 5:
        echo "You get a 5% discount!";
        break;
    case $items > 5:
        echo "You get a 10% discount!";
        break;
    case $items == 5:
        echo "You get a 50% discount!";
        break;
}


... terwijl je meestal juist de andere kant op vergelijkt door de variabele in de switch-conditie te zetten en de constantes in de case. :P

[ Voor 10% gewijzigd door NMe op 16-12-2015 11:52 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • corset
  • Registratie: November 2009
  • Laatst online: 25-07 13:11
NMe schreef op woensdag 16 december 2015 @ 11:51:
[...]

Die switch zou dan wel heel raar uitzien voor een beginnende programmeur. :P Even voor de volledigheid:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
switch (true)
{
    case $items < 5:
        echo "You get a 5% discount!";
        break;
    case $items > 5:
        echo "You get a 10% discount!";
        break;
    case $items == 5:
        echo "You get a 50% discount!";
        break;
}


... terwijl je meestal juist de andere kant op vergelijkt door de variabele in de switch-conditie te zetten en de constantes in de case. :P
En dat is dus PHP waar ik voorlopig nog de ballen verstand van heb. Ja ik snap wat het doet, en hoe het werkt. Maar het zelf bouwen? Oo

"Whatever their future, at the dawn of their lives, men seek a noble vision of man’s nature and of life’s potential."


Acties:
  • 0 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 02:34
NMe schreef op woensdag 16 december 2015 @ 11:51:
[...]

Die switch zou dan wel heel raar uitzien voor een beginnende programmeur. :P Even voor de volledigheid:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
switch (true)
{
    case $items < 5:
        echo "You get a 5% discount!";
        break;
    case $items > 5:
        echo "You get a 10% discount!";
        break;
    case $items == 5:
        echo "You get a 50% discount!";
        break;
}


... terwijl je meestal juist de andere kant op vergelijkt door de variabele in de switch-conditie te zetten en de constantes in de case. :P
Klopt, zat in de bios (star wars is hyped :) ) de nutteloze reclames te kijken, kon dus niet even iets uit typen

Acties:
  • 0 Henk 'm!

  • Candanz
  • Registratie: Februari 2013
  • Laatst online: 19-08-2024

Candanz

Geflipt

Marco1994 schreef op woensdag 16 december 2015 @ 10:04:
[...]

Nee compiled ook niet, je mag geen conditie in de else hebben. Je moet else if gebruiken. Een switch zou ook kunnen in deze use case
[mierenliefdebedrijven]
php compiled zowiezo niet.
[/mierenliefdebedrijven]

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Candanz schreef op woensdag 16 december 2015 @ 16:20:
[mierenliefdebedrijven]
php compiled zowiezo niet.
[/mierenliefdebedrijven]
offtopic:
Je kan het overigens wel compilen naar binary files, maar dat werkt geloof ik niet zo goed. Zie bijvoorbeeld http://www.phpcompiler.org/ of http://www.thefreecountry.com/compilers/php.shtml. ;)
Pagina: 1