[PHP] T_ELSE error

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

  • Bellerophon
  • Registratie: Februari 2002
  • Laatst online: 07-03 02:32

Bellerophon

Persona non grata

Topicstarter
Ik heb nu al een tijd lang een php error waar ik mij totaal geen raad mee weet.

Pagina.php
code:
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?
require("config.php");

// Verwijder deze comment en de onderstaande regel als je een eigen stylesheet gebruikt...
echo "<link rel=\"stylesheet\" content=\"text/css\" href=\"style.css\">";

if(!$mid)
{
  $query = mysql_query("SELECT * FROM members");
  $result = mysql_num_rows($query);

  if(isset($_POST['delete']) && $_SERVER['REQUEST_METHOD']= 'post')
  {
    $aantal_verwijderen = count($_POST['deletepic']);

    if(empty($_POST['deleteuser']))
    {
      echo"Er zijn geen gebruikers geselecteerd.";
    }

    for ($i = 1; $i <= $aantal_verwijderen; $i++)
    {
      $sql   = "DELETE FROM members WHERE memberid = '".$_POST['id'][$i -1]."' LIMIT 1";
      /* Verwijder de gebruiker. De variabele $i telt steeds eentje op,
      dus gaat het verwijderen net zolang door tot alle geselecteerde gebruikers verwijderd zijn. */
      $query = mysql_query($sql) or die(mysql_error());
    }
  }
}
else 
{
  if(!$result)
  {
    echo "We hebben nog geen members...";
  }
  else
  {
    ?>
      <form method="post" action="">
      <?
        while($object = mysql_fetch_object($query))
        {
          echo "> <a href=\"?mid=$object->memberid\">$object->naam</a> ( ID: $object->memberid )
          <input type=\"checkbox\" name=\"deleteuser[]\" value=\"".$object->memberid."\">\n<br>";
        }
      ?>
      <input type="submit" name="delete" value="Verwijder geselecteerde gebruikers">
      </form>
    <?
  }
  else ### <--- Klopt niet...
  {
    $query = mysql_query("SELECT * FROM members WHERE memberid = '$mid'");
    $result = mysql_num_rows($query);

    if(!$result)
    {
      echo "Deze member bestaat niet...";
    }
    else
    {
      $query = mysql_query('UPDATE members SET bekeken = bekeken + 1 WHERE memberid = "'.intval($mid).'"');
      
      while($object = mysql_fetch_object($query))
      {
        ?>
          Je bekijkt nu het profiel van <b><?=htmlspecialchars($object->gebruikersnaam);?></b>
          ( <?=(intval($object->bekeken));?> keer bekeken )
          <hr />
          
          <b>Naam:</b><br/>
          <?=htmlspecialchars($object->naam);?><br/><br/>
          <b>Email:</b>
          <br/>
          <a href="mailto:<?=htmlspecialchars($object->email);?>">
            <?=htmlspecialchars($object->email);?>
          </a>
          <br/><br/>
          
          <b>Homepage:</b><br/>
          <a href="htmlspecialchars($object->homepage)" target="_blank">
            <?=htmlspecialchars($object->homepage);?>
          </a>
          <br/><br/>
          
          <b>Woonplaats:</b><br/>
          <?=htmlspecialchars($object->woonplaats);?>
          <br/><br/>
          
          <b>Geslacht:</b><br/>
          [img]"img/<?=($object->geslacht=='Man'[/img].gif"
               alt="<?=htmlspecialchars($object->geslacht);?>" />
          <br/><br/>
          
          <b>Relatie:</b><br/>
          <?php
          switch($object->relatie)
          {
            case '0': echo 'Nee';break;
            case '1': echo 'Ja'; break;
            default : echo 'Binnenkort';break;
          }
          ?>
          <br/><br/>
          
          <b>Hobby's:</b><br/>
          <?=htmlspecialchars($object->hobbys);?>
          <br/><br/>

          <b>Favo drankje(s):</b><br/>
          <?=htmlspecialchars($object->favodrankje);?>
          <br/><br/>

          <b>Favo artiest(en):</b><br/>
          <?=htmlspecialchars($object->favoartiest);?>
          <br/><br/>

          <b>Favo film(s):</b><br/>
          <?=htmlspecialchars($object->favofilm);?>

          <?php
          
          if($object->pm)
          {
            echo '<hr /><a href="priveberichten.php?new=1&naar='.intval($object->memberid).'">Stuur privé- bericht</a>';
          }
      } # End while
    }
  }
?>



Er staat in aangegeven waar de fout zit, ik heb er al dit geprobeerd van te maken

Aanpassing:
code:
1
2
3
4
5
6
7
if(!$result){
  echo "We hebben nog geen members...";
  }
  else ### <--- Klopt niet...
  {
    $query = mysql_query("SELECT * FROM members WHERE memberid = '$mid'");
    $result = mysql_num_rows($query);


Maar dan bleef de error nog steeds staan, te weten onderstaande error
Parse error: parse error, unexpected T_ELSE in /home/martinne/public_html/bob/test3/profiel.php on line 47
Maar als ik die else statement weghaal dan krijg ik dit:
Parse error: parse error, unexpected $ in /home/martinne/public_html/bob/test3/profiel.php on line 134
En dat is dit stuk code
code:
1
?>



Ik weet dus echt niet wat er fout gaat, weet alleen dat die else statement een error geeft.

PSN: Bellerophon-


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:04

mulder

ik spuug op het trottoir

Je bruikt meer dan 1 keer else, dus zonder voorwaarde:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
if
{
...
}
else <-- elseif 
{
...
}
else
{
...
}

oogjes open, snaveltjes dicht


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 09:11
Je gebruikt twee else's bij een if statement, dat kan natuurlijk niet.


Spuit 11

[ Voor 25% gewijzigd door T-MOB op 05-07-2005 11:18 ]

Regeren is vooruitschuiven


  • Bellerophon
  • Registratie: Februari 2002
  • Laatst online: 07-03 02:32

Bellerophon

Persona non grata

Topicstarter
Dus dit stuk is corrupt?

code:
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
{
  if(!$result)
  {
    echo "We hebben nog geen members...";
  }
  else
  {
    ?>
      <form method="post" action="">
      <?
        while($object = mysql_fetch_object($query))
        {
          echo "> <a href=\"?mid=$object->memberid\">$object->naam</a> ( ID: $object->memberid )
          <input type=\"checkbox\" name=\"deleteuser[]\" value=\"".$object->memberid."\">\n<br>";
        }
      ?>
      <input type="submit" name="delete" value="Verwijder geselecteerde gebruikers">
      </form>
    <?
  }
    
 
 
  else ### <--- Klopt niet...
  {
    $query = mysql_query("SELECT * FROM members WHERE memberid = '$mid'");
    $result = mysql_num_rows($query);



Maar het typische is, hij heeft het zo wel gedaan :?

PSN: Bellerophon-


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:58
Wij is 'hij' ?

Een if kan slechts één else hebben.

indien ...
anders
anders

slaat nergens op he...

https://fgheysels.github.io/


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:04

mulder

ik spuug op het trottoir

Nee dat heeft ie niet:
Als het stoplicht op rood staat doe dit,
anders doe dit,
anders doe dit.
Moet zijn:
Als het stoplicht op rood staat doe dit,
anders als het op groen staat doe dit,
anders doe dit.

oogjes open, snaveltjes dicht


  • Bellerophon
  • Registratie: Februari 2002
  • Laatst online: 07-03 02:32

Bellerophon

Persona non grata

Topicstarter
whoami schreef op dinsdag 05 juli 2005 @ 11:28:
Wij is 'hij' ?

Een if kan slechts één else hebben.

indien ...
anders
anders

slaat nergens op he...
Deze pagina had ik erg standaard gemaakt voor de weergave van gebruikers in een database, na een tijd ging ik aan een verwijder optie werken en daarna kreeg ik de fout, daarvoor stond die dubbele else er ook al in en toen werd de pagina nog wel weergegeven :?

Maar die else weg halen is ook geen optie want dan geeft hij ook een foutmelding

PSN: Bellerophon-


  • sjroorda
  • Registratie: December 2001
  • Nu online
Een fout op de laatste regel (?>) duidt meestal op een niet of verkeerd afgesloten haakje, accolade, aanhalingsteken, etc... Zoek die er eens uit?

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:04

mulder

ik spuug op het trottoir

Maar die else weg halen is ook geen optie want dan geeft hij ook een foutmelding
Anders lees je even bovenstaande replies.
http://nl3.php.net/manual...php#control-structures.if

oogjes open, snaveltjes dicht


  • Bellerophon
  • Registratie: Februari 2002
  • Laatst online: 07-03 02:32

Bellerophon

Persona non grata

Topicstarter
Die heb ik ook gelezen en ik besef ook heel goed wat er fout gaat, het vervelende is dat ik dus niet weet hoe ik de fout eruit moet halen.

De pagina zag er in het begin zo uit (de php code dan):

Pagina:
code:
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
<?
require("config.php");

// Verwijder deze comment en de onderstaande regel als je een eigen stylesheet gebruikt...
echo "<link rel=\"stylesheet\" content=\"text/css\" href=\"style.css\">";

if(!$mid){
$query = mysql_query("SELECT * FROM members");
$result = mysql_num_rows($query);

if(!$result){
echo "We hebben nog geen members...";
}
else{
while($object = mysql_fetch_object($query)){
echo "> <a href=\"?mid=$object->memberid\">$object->naam</a> ( ID: $object->memberid )\n<br>";
}
}
}
else{
$query = mysql_query("SELECT * FROM members WHERE memberid = '$mid'");
$result = mysql_num_rows($query);

if(!$result){
echo "Deze member bestaat niet...";
}
else{
mysql_query("UPDATE members SET bekeken = bekeken + 1 WHERE memberid = '$mid'");
while($object = mysql_fetch_object($query)){
?>

PSN: Bellerophon-


  • BreeeZe
  • Registratie: Februari 2000
  • Laatst online: 09:17

BreeeZe

Devt

Bellerophon schreef op dinsdag 05 juli 2005 @ 11:42:
[...]


Die heb ik ook gelezen en ik besef ook heel goed wat er fout gaat, het vervelende is dat ik dus niet weet hoe ik de fout eruit moet halen.

De pagina zag er in het begin zo uit (de php code dan):

Pagina:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?

if(!$mid){
$query = mysql_query("SELECT * FROM members");
$result = mysql_num_rows($query);

     if(!$result){
     echo "We hebben nog geen members...";
     }else{
     while($object = mysql_fetch_object($query)){
     echo "> <a href=\"?mid=$object->memberid\">$object->naam</a> ( ID: $object->memberid  )\n<br>";
    }
// } <-- is die niet te veel ?
}else{
$query = mysql_query("SELECT * FROM members WHERE memberid = '$mid'");
$result = mysql_num_rows($query);

     if(!$result){
     echo "Deze member bestaat niet...";
     }else{
     mysql_query("UPDATE members SET bekeken = bekeken + 1 WHERE memberid = '$mid'");
     while($object = mysql_fetch_object($query)){
?>
Heb je niet een } te veel :? (zie bovenstaande aanpassing)
|:( die is van de while...

[ Voor 43% gewijzigd door BreeeZe op 05-07-2005 12:12 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 01-05 19:54

Bosmonster

*zucht*

Ik zie aan je bovenstaande code uit de openingspost aan het einde al een } missen...

En je hebt ze nog wel netjes ge-indent..

(even uitgaande dat je die dubbele else fixed natuurlijk..)

[ Voor 29% gewijzigd door Bosmonster op 05-07-2005 11:50 ]


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 05-05 21:37
Bellerophon schreef op dinsdag 05 juli 2005 @ 11:42:
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
<?
require("config.php");

// Verwijder deze comment en de onderstaande regel als je een eigen stylesheet gebruikt...
echo "<link rel=\"stylesheet\" content=\"text/css\" href=\"style.css\">";

if(!$mid) {
  $query = mysql_query("SELECT * FROM members");
  $result = mysql_num_rows($query);

  if(!$result) {
    echo "We hebben nog geen members...";
  } else {
    while($object = mysql_fetch_object($query)) {
      echo "> <a href=\"?mid=$object->memberid\">$object->naam</a> ( ID: $object->memberid          )\n<br>";
    }
  }
} else {
  $query = mysql_query("SELECT * FROM members WHERE memberid = '$mid'");
  $result = mysql_num_rows($query);

  if(!$result) {
    echo "Deze member bestaat niet...";
  } else {
    mysql_query("UPDATE members SET bekeken = bekeken + 1 WHERE memberid = '$mid'");
    while($object = mysql_fetch_object($query)) {
    }
  }
}
?>
Voortaan even goed je source copy-pasten (er misten wat } aan het eind) en indenten, dat maakt het geheel een stuk leesbaarder ook icm php kleurtjes. Maar wat is er nu mis met dit stuk source?

  • Bellerophon
  • Registratie: Februari 2002
  • Laatst online: 07-03 02:32

Bellerophon

Persona non grata

Topicstarter
Sybr_E-N schreef op dinsdag 05 juli 2005 @ 11:52:
[...]

Voortaan even goed je source copy-pasten (er misten wat } aan het eind) en indenten, dat maakt het geheel een stuk leesbaarder ook icm php kleurtjes. Maar wat is er nu mis met dit stuk source?
Met die niks, dat was de originele code, die werkte nog wel.
Maar na een paar aanpassingen gaf hij errors?

Daarom probeer ik die fout dus te zoeken.

PSN: Bellerophon-


  • WormLord
  • Registratie: September 2003
  • Laatst online: 30-03 16:26

WormLord

Devver

Die originele code werkt, omdat elke else daar een bijbehorende if heeft.
Blijkbaar heb je bij je aanpassing een if en/of een accolade teveel verwijderd.

Trouwens, als ik de code van de TS zo even doorneem, dan lijkt het er op dat je niet echt weet waar je mee bezig bent. Zo zit de code voor het weergeven van de member-lijst in het blok dat word uitgevoerd als er een member geselecteerd is. En op regel 32 test je een variabele die helemaal niet gezet is.
Misschien is het goed om eerst vast te leggen wat je wilt doen, in psuedo code of zo, en dan pas gaat de code gaat maken.

[ Voor 59% gewijzigd door WormLord op 05-07-2005 12:49 ]


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Gebruik daarom ook goede indentation om het gebruik van je openings en sluitings accolades overzichtelijk te houden. ;)

Sundown Circus


  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 21:55

Guldan

Thee-Nerd

/me Guldan heeft ook nog een goed truckje
Je code lezen er iedere keer bij een { +1 optellen en bij een } -1 eraf halen. Aan het eind moet je dan op 0 uitkomen. Anders klopt er iets niet.
Ook kun je in ultraedit gewoon op accolades zoeken en het aantal open accolades tellen en dit vergelijken met het aantal gesloten. Verder snap ik het probleem niet meer... En een stukje commentaar zou ook wel makkelijk zijn. Wat je met die code wil doen etc. Het gaat dus fout bij die 2e else maar het is niet echt moeilijk op te lossen lijkt mij zo.

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


  • Bellerophon
  • Registratie: Februari 2002
  • Laatst online: 07-03 02:32

Bellerophon

Persona non grata

Topicstarter
WormLord schreef op dinsdag 05 juli 2005 @ 12:36:
Die originele code werkt, omdat elke else daar een bijbehorende if heeft.
Blijkbaar heb je bij je aanpassing een if en/of een accolade teveel verwijderd.

Trouwens, als ik de code van de TS zo even doorneem, dan lijkt het er op dat je niet echt weet waar je mee bezig bent. Zo zit de code voor het weergeven van de member-lijst in het blok dat word uitgevoerd als er een member geselecteerd is. En op regel 32 test je een variabele die helemaal niet gezet is.
Misschien is het goed om eerst vast te leggen wat je wilt doen, in psuedo code of zo, en dan pas gaat de code gaat maken.
Daar ben ik mij van bewust dat de code nog totaal niet netjes enzo is, ben ook nog maar een week ongeveer goed met php bezig.

En ik weet ook dat er een if te weinig is of een else te veel is.
Zou ik kunnen proberen om bepaalde statements te verwijderen?

PSN: Bellerophon-


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Sorry hoor, maar dit gaat echt de verkeerde kant op. Parse errors zijn sowieso altijd door simpel debugwerk op te lossen: een haakje teveel of te weinig, een puntkomma teveel op te weinig, een else teveel (wat hier nu het geval is)... Zorg gewoon dat elke else ook één if heeft, elk openingshaakje een sluithaakje, enz. Als dat eenmaal het geval is, dan heb je in elk geval geen parse error meer. :)

Omdat het verder niet de bedoeling is dat we je hier aan het handje gaan nemen, doe ik dit topic maar op slot. Met de gegeven tips en een goed boek/tutorial moet je er wel uit kunnen komen. :)

'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.

Pagina: 1

Dit topic is gesloten.