Probleme de syntaxe avec Switch case - PHP - Programmation
Marsh Posté le 15-11-2005 à 22:12:19
N'essaye même pas de nous dire que tu as lu le manuel avant de venir poser la question, personne ne va te croire
Où t'es allé chercher qu'il fallait faire un test dans le case toi ? c'est
Code :
|
pas un if qui a mal tourné
Marsh Posté le 15-11-2005 à 22:59:01
Si si, j'ai deja fait des switch, et sur cette page j'avais d'abord fait un IF, avant de tenter le switch.
Si si, je regarde la doc sur nexen ou manuel PHP par exemple, mais je débute ...
Code :
|
Je ne comprends pas ce qui cloche
Marsh Posté le 15-11-2005 à 23:14:50
tu sais lire ?
le môssieur te dit que la syntaxe de switch, c'est pas
Code :
|
mais
Code :
|
et puis essaie d'avoir un code lisible aussi, ca t'aidera
Marsh Posté le 16-11-2005 à 02:11:42
Et au passage toi t'es comme ça tu fermes un tableau avant de fermer la colonne et sans avoir ouvert de ligne...
Si l'affichage est comme il faut alors bravo IE de comprendre ce que tu veux
Marsh Posté le 16-11-2005 à 03:04:14
ca a l'air d'être généré par un mauvais logiciel
genre <TD> ... </td> , <BR> au lieu de <br />
bref pas du tout xml well-formed tout ca
Marsh Posté le 16-11-2005 à 10:55:19
ReplyMarsh Posté le 16-11-2005 à 13:48:13
leflos5 a écrit : Et au passage toi t'es comme ça tu fermes un tableau avant de fermer la colonne et sans avoir ouvert de ligne... |
Il n'y a qu'une partie du code ici. Ne soyez pas hautains : je suis prof et ... Pas d'info !!
Sinon merci de m'aider quand meme.
lulu
Marsh Posté le 16-11-2005 à 13:50:39
Code :
|
ca ne sert à rien le $definition2==1. case 1 suffit.
Marsh Posté le 16-11-2005 à 14:59:28
soju a écrit : ne confond pas xml et xhtml... |
xhtml est sensé être
Citation : xml well-formed |
Marsh Posté le 16-11-2005 à 15:09:51
cinocks a écrit :
|
Merci, c'est clair, mais j'ai encore un "unexpected T_STRING, expecting ',' or ';'" sur le 1er echo, même en slashant
lulu
Marsh Posté le 16-11-2005 à 15:22:37
lulu_merlan a écrit : Merci, c'est clair, mais j'ai encore un "unexpected T_STRING, expecting ',' or ';'" sur le 1er echo, même en slashant lulu |
t'a fait les modifs proposées sur la syntaxe du swith, case ???
Code :
|
et perso, j'aurais plutot tendance à faire un:
$msg = truc qui va bien dans chaque cas
et un :
echo $msg; apres le switch
Marsh Posté le 16-11-2005 à 15:25:26
TheRom_S a écrit : ca a l'air d'être généré par un mauvais logiciel |
C'est ptet du HTML qu'il génère
soju a écrit : ne confond pas xml et xhtml... |
Citation : This specification defines the Second Edition of XHTML 1.0, a reformulation of HTML 4 as an XML 1.0 application, and three DTDs corresponding to the ones defined by HTML 4. The semantics of the elements and their attributes are defined in the W3C Recommendation for HTML 4. These semantics provide the foundation for future extensibility of XHTML. Compatibility with existing HTML user agents is possible by following a small set of guidelines. |
http://www.w3.org/TR/xhtml1/#xhtml
Citation : XHTML 1.0 (this specification) is the first document type in the XHTML family. It is a reformulation of the three HTML 4 document types as applications of XML 1.0 [XML]. It is intended to be used as a language for content that is both XML-conforming and, if some simple guidelines are followed, operates in HTML 4 conforming user agents. Developers who migrate their content to XHTML 1.0 will realize the following benefits:
|
Marsh Posté le 16-11-2005 à 15:29:12
lulu_merlan a écrit : Merci, c'est clair, mais j'ai encore un "unexpected T_STRING, expecting ',' or ';'" sur le 1er echo, même en slashant |
ne pas mettre un chaine de caracteres sur plusieures lignes
$mastring = "<td colspan='2' rowspan='1' class='texte_dico1'>Définition avancée</td></tr><tr><td colspan='2' rowspan='1' " . "class='texte_dico2'>$definition2</td></tr></tbody></table>";
Marsh Posté le 16-11-2005 à 15:54:25
cinocks a écrit : ne pas mettre un chaine de caracteres sur plusieures lignes |
Pourquoi ça?
Marsh Posté le 16-11-2005 à 16:35:39
Xav_ a écrit : t'a fait les modifs proposées sur la syntaxe du swith, case ??? |
oui, toujours la meme erreur :
Code :
|
Marsh Posté le 16-11-2005 à 16:36:34
lulu_merlan a écrit : oui, toujours la meme erreur :
|
... même en créant une variable $mastring qui renvoie à une chaine de caractères.
Marsh Posté le 16-11-2005 à 16:45:50
leflos5 a écrit : Pourquoi ça? |
euh c'est autorisé de faire çà?
Code :
|
pour moi ce serait plutot:
Code :
|
Marsh Posté le 16-11-2005 à 16:46:43
lulu_merlan a écrit : ... même en créant une variable $mastring qui renvoie à une chaine de caractères. |
au fait, pourquoi tu mets <? et ?> autour de ton switch ???
Marsh Posté le 16-11-2005 à 16:48:08
cinocks a écrit : euh c'est autorisé de faire çà? |
oui, mais dans ce genre de cas il vaut mieux utiliser la syntaxe heredoc
Marsh Posté le 16-11-2005 à 17:11:03
J'ai copié collé le code pour le tester et ca marche chez moi.
y aurait pas quelque chose avant qui pourrait faire planter ?
Marsh Posté le 16-11-2005 à 17:15:15
Ce code là ?
<?
switch ($definition2) {
case 1:
echo "<td colspan='2' rowspan='1' class='texte_dico1'>Définition avancée</td></tr><tr><td colspan='2' rowspan='1' class='texte_dico2'>$definition2</td></tr></tbody></table>";
break;
case 0:
echo "";
break;
}
?>
Marsh Posté le 16-11-2005 à 17:25:56
ces deux codes marchent
Code :
|
Code :
|
Marsh Posté le 16-11-2005 à 17:51:13
Parse error: parse error, unexpected T_BAD_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING
Marsh Posté le 16-11-2005 à 17:59:38
"T_BAD_CHARACTER" Tu dois avoir un caractére invisible qui traine quelque part.
Efface tous les esapces, les retour à la ligne, les tabulations ... et resaisie les ensuite. Normalement, ca devrait régler ton probléme.
PS : Php ne t'indique pas la ligne de l'erreur? Ca t'éviterait de tout effacer.
Marsh Posté le 16-11-2005 à 18:10:35
[hs]
ce qu'il y a de beau dans le "case $definition2==1:" c'est que quand on évalue cette expression, on retourne True/1, ce qui fait qu'on se retrouve avec "case 1:" donc ca marche par hasard, alors qu'un test ==2 ou ==0 aurait pas marché...
( 'fin je dis ca je fais pas de php, mais si le language est cohérent, c'est ce qu'il se passe ... )
[/hs]
Marsh Posté le 16-11-2005 à 18:41:01
essayer de recréer un nouveau fichier et/ou vérifier l'encodage du fichier (je ne sais pas qui ou quoi, mais j'ai déjà eu un problème parce que l'encodage n'était pas bon)
Marsh Posté le 16-11-2005 à 19:13:28
je suis le seul à avoir vu les tags <? et ?> qui n'ont rien à faire là ?!
et le echo de la ligne 40 qui n'est pas fermé ?!
...
Marsh Posté le 16-11-2005 à 19:16:01
soju a écrit : je suis le seul à avoir vu les tags <? et ?> qui n'ont rien à faire là ?! |
s'il a laissé les tags en trop lors de son copie/colle dans son script, il a du s'en rendre compte assez vite
Marsh Posté le 16-11-2005 à 20:57:44
Ras la casquette : j'ai tout essayé, alors voilà le code complet (voir lignes 140 à 150)
Code :
|
Marsh Posté le 16-11-2005 à 21:06:28
ReplyMarsh Posté le 16-11-2005 à 22:10:37
arf mais c'est pas sur la première ligne alors
sinon le
$definition2=$_GET['def2'];
que j'ai mis dans mes exemples, je ne sais pas si t'en as besoin. J'ai juste mis ca pour tester.
Marsh Posté le 17-11-2005 à 00:02:11
naceroth a écrit : ligne 138 tu as le droit de fermer la chaine ouverte ligne 128 |
c'était ça !
Merci à tous ... Même si mon code était donc bon au départ
Marsh Posté le 17-11-2005 à 01:22:31
Reste encore à l'améliorer surtout sur le Html, l'indentation et svp tous arrêtez avec les echo de partout
Autre astuce quand t'as une variable dans une chaine de caractère, si t'utilises les double cotes t'as pas besoin de sortir de la chaine suffit de faire
Code :
|
C'est plus clair, propre et c'est juste une piste t'en fais ce que tu veux
Marsh Posté le 17-11-2005 à 09:01:29
lulu_merlan a écrit : c'était ça ! |
ha je suis pas fou, c'est bien ce que javais dit dans mon precedent post passé inaperçu ...
Marsh Posté le 15-11-2005 à 21:05:59
Salut,
J'ai introduit un switch dans ma fonction, qui marchait très bien jusqu'alors (c'est un glossaire).
Je veux que lorsque que la variable $definition2 n'est pas renseignée, l'intitullé "definition avancée" ne soit pas affiché.
Mais ça retourne une erreur :