Tom's Guide > Forum > Programmation > unexpected T_ELSE ?? pourquoi??

unexpected T_ELSE ?? pourquoi??

Forum Programmation : unexpected T_ELSE ?? pourquoi??

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour,
voila je travaille sur un site et j'ai quelque probleme avec le codage php , je tombe tuojours sur la meme erreur

Code :
  1. Parse error: parse error, unexpected T_ELSE in /www/sites/1/ifrance.com/*/*/*******/site/article.php on line 167



Pourtant il me semble que tout fonctionne bien :

Code :
  1. <?
  2. if($_GET['cat'] == index);
  3. {
  4. ?><p>
  5. Veuillez choisir une catégorie :
  6.   <br><br><a href="article.php?cat=stargate">Stargate</a>
  7. </p>
  8. <?
  9. }
  10. else($_GET['cat'] == stargate);
  11. {
  12. ?>
  13. (quelque article sur le sujet)
  14. <? }?>



Merci de m'aider :-D

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

tu ne peux pas mettre de condition dans ton else.

La structure est:
if (condition) {
...
} else {
...
}

Répondre à crazycat@idn

Daccord merci ,ya pas u nautre moyen de faire une deuxieme condition alors ?
[edit]
Sa vien pas de sa :

Code :
  1. Parse error: parse error, unexpected T_ELSE in /www/sites/1/ifrance.com/*/*/******/site/article.php on line 167



Et voici le code

Code :
  1. <?
  2. if($_GET['cat'] == index);
  3. {
  4. ?><p>
  5. Veuillez choisir une catégorie :
  6.   <br><br><a href="article.php?cat=stargate">Stargate</a>
  7. </p>
  8. <?
  9. }
  10. else
  11. {
  12. ?>
  13. (divers articles)
  14. <? }?>

Répondre à Tsog

La structure après le mot else est en conflit avec la syntaxe.
Autrement dit: l'accolade { sur la ligne qui suit le else n'est pas à sa place. ;-)

Répondre à Mdy@IDN

Daccord merci :-D

Répondre à Tsog

tout faux mdy, (san te vexer;))

Il ya 2 chose qui ne vont pas.

La premier est le ; apres le if qui n'a rien à faire la, la seconde est simplement le fait qu'il manque des quotes au if pour la chaine de caractere a comparé.
En gros :

<?
if($_GET['cat'] == 'index') {
?><p>
Veuillez choisir une catégorie :
<br><br><a href="article.php?cat=stargate">Stargate</a>
</p>
<?
} else {
?>
(divers articles)
<?
}
?>
un petit tour sur phpdebutant.org


je ne compte plus le nombre de fois ou je donne cette url...

Répondre à okinou

Regarde un peu le premier script:

<?
if($_GET['cat'] == index);
{
?><p>
Veuillez choisir une catégorie :
<br><br><a href="article.php?cat=stargate">Stargate</a>
</p>
<?
}
else($_GET['cat'] == stargate);
{
?>
(quelque article sur le sujet)
<? }?>

Répondre à Mdy@IDN

Oui et bah ?

<?
if($_GET['cat'] == index);
{
?><p>
Veuillez choisir une catégorie :
<br><br><a href="article.php?cat=stargate">Stargate</a>
</p>
<?
}
else($_GET['cat'] == stargate);
{
?>
(quelque article sur le sujet)
<? }?>


Peut devenir :

Code :
  1. <?
  2. if($_GET['cat'] == 'index') {
  3. ?><p>
  4. Veuillez choisir une catégorie :
  5. <br><br><a href="article.php?cat=stargate">Stargate</a>
  6. </p>
  7. <?
  8. } else($_GET['cat'] == 'stargate') {
  9. ?>
  10. (quelque article sur le sujet)
  11. <?
  12. }
  13. ?>



ou

Code :
  1. <?
  2. if($_GET['cat'] == 'index')
  3. {
  4. ?><p>
  5. Veuillez choisir une catégorie :
  6. <br><br><a href="article.php?cat=stargate">Stargate</a>
  7. </p>
  8. <?
  9. }
  10. else($_GET['cat'] == 'stargate')
  11. {
  12. ?>
  13. (quelque article sur le sujet)
  14. <?
  15. }
  16. ?>



Cela ne l'empechera pas de fonctionner, mais point de vue clareté, c'est à chier.

Edit: en plus, ce n'est meme pas correct encore, le else de cette facon n'existe pas !!

Correction :

Code :
  1. <?
  2. if($_GET['cat'] == 'index') {
  3. ?><p>
  4. Veuillez choisir une catégorie :
  5. <br><br><a href="article.php?cat=stargate">Stargate</a>
  6. </p>
  7. <?
  8. } elseif ($_GET['cat'] == 'stargate') {
  9. ?>
  10. (quelque article sur le sujet)
  11. <?
  12. } else {
  13. echo 'pas de menu selectionner';
  14. }
  15. ?>

Répondre à okinou

<?
if($_GET['cat'] == 'index')
{
?><p>
Veuillez choisir une catégorie :
<br><br><a href="article.php?cat=stargate">Stargate</a>
</p>
<?
}
else($_GET['cat'] == 'stargate')
{
?>
(quelque article sur le sujet)
<?
}
?>

Dans cette solution, il n'exécutera que le $_get...(celui du "stargate" ) et l'accolade suivante est invalide parcqu'elle ne se rapporte à rien.

Répondre à Mdy@IDN

Non, tu parles de quoi ?

Ici y'a bien 4 accolade, { } { }

Meme si le else est faux d'une certaine partie, le if s'executera pas. Non pas a cause des accolade, mais sur la syntaxe du else() qui n'existe pas. Car c'est elseif.

Répondre à okinou

Que fait-on si le else ne contient pas de if, mais doit exister ?

Répondre à Mdy@IDN

Donne un exemple car la tu m'embrouille, en rapport avec le sujet bien evidament :)

Répondre à okinou

if($nom=="Michel" ){
$_pc="webmaster"
}
else{
$_pc="amateur"
}

Répondre à Mdy@IDN

et c'est quoi le probleme dans cette syntaxe ?

Répondre à okinou

if($nom=="Michel" ){
$_pc="webmaster"
}
else{
$_pc="amateur"
}

Il n'y a pas de problème dans ce script.

Je vais la compléter:
if($nom=="Michel" ){
$_pc="webmaster"
$_adr="test"
}
else{
$_pc="amateur"
$_adr="index"
}
eval(" location='"+$_adr+".html'" )

Répondre à Mdy@IDN

dis moi le probleme à ton code.

Répondre à okinou

if($nom=="Michel" ){
$_pc="webmaster"
$_adr="test"
}
else{
$_pc="amateur"
$_adr="index"
}
eval(" location='"+$_adr+".html'" )

Il n'y a pas de problème à ce code, jusqu'au moment où tu ajoute:

if($nom=="Michel" ){
$_pc="webmaster"
$_adr="test"
}
else alert("cet utilisateur n'est pas accepté,\nmais je l'assume comme un amateur" )
{
$_pc="amateur"
$_adr="index"
}
eval(" location='"+$_adr+".html'" )

là l'accolade après le else ne se rapporte à aucun if ou else, donc erreur de syntaxe.

Répondre à Mdy@IDN

Ce que tu racontes n'a aucun sens, ou je suis né débil durant la lecture de ton post.

Enfin bref, le probleme ne venait pas de la de toute maniere.

Pour le probleme de départ il fallait transformer le else en elseif, rajouté des quote dans la comparaison, et retiré les deux ; apres les paranthese.

Répondre à okinou

Mais si çà a un sens

if($nom=="Michel" ){
$_pc="webmaster"
$_adr="test"
}
else{
$_pc="amateur"
$_adr="index"
}
eval(" location='"+$_adr+".html'" )

On va à un site suivant que c'est "Michel" ou un autre qui se connecte.

Répondre à Mdy@IDN

Citation :

else alert("cet utilisteur n'est pas accepté,\nmais je l'assume somme un amateur" )



après le mot clé "else" tu dois ouvrir directement les { } , aucune instruction ne doit se trouver entre ca .

De plus .... à moins que ce soit un script javascript complété par du php , le alert n'existe pas en php .

Répondre à DIgItaL_ReaM

Ben oui, çà je le sais. Mais il y en d'autre qui prétendent le contraire.

Répondre à Mdy@IDN

mais c'est pourtant la base du traitement conditionnel, dans tous les langages:
if (condition) {
...
} elseif (re-condition) {
...
...
} else {
...
}

le "elseif" peut devenir "else if" dans certains langages, les accolades être remplacées par des "then ... end", mais la structure est toujours identique.

Par contre, la syntaxe sans accolades est valable lorsqu'il n'y a qu'une action a effectuer:
if ($vrai === true)
echo "vrai est vrai"
else
echo "vrai est faux"

Répondre à crazycat@idn

Oui il y a du javascript dedans.

Ce qui est important, c'est la logique d'emploi.
Comme je connais plus le javascript que le PHP, alors mes reflexes sont en écriture javascript.
Milles excuses.

Répondre à Mdy@IDN

Je me disais aussi...fais gaff j'ai failli frolé l'infractusse du cerveau :p

Répondre à okinou

Le fait que j'ai mis une comme commande alert au lieu de echo n'enlève rien de la logique du if else

:-D

EDIT: On ne dit pas infractusse mais bien infarctus

Répondre à Mdy@IDN
Tom's Guide > Forum > Programmation > unexpected T_ELSE ?? pourquoi??
Aller à :

Il y a 270 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens