easyphp007
mercredi 30 août 2006 à 17:13
Bonjour,
Je souhaiterais réaliser un "quizz" et créer une page de réponses "pré-cochées".
Je viens de mettre en place un formulaire evec des "checkbox" (questions.php) dans lequel j'utilise la méthode "post", ainsi qu'une page ayant des réponses "cochées" (reponses.php). Je souhaiterais récupérer mon coche de "questions.php" sur ma page "reponses.php".
Le but du jeu, c'est d'afficher le "coche" en meme temps que la réponse pré-coché.
Merci pour vos lumières.
Anonymus
mercredi 30 août 2006 à 17:16
le code mystère est ::
CODE
<?=(($_POST['champ']=="on")?"CHECKED":"")?>
En gros, t'as le formulaire d'un coté :
CODE
<input type=checkbox name=champ value='on'>
de l'autre, t'as la réponse :
CODE
<input type=checkbox name=champ <?=(($_POST['champ']=="on")?"CHECKED":"")?>>
Où tu regardes la valeur de 'champ'. Si la valeur est égale à 'on', alors
on écrit 'checked', sinon on n'écrit rien
georges
mercredi 30 août 2006 à 20:07
Salut,
Je crois que la "bonne" écriture est
CODE
checked="checked"
même si ça marche avec seulement checked
Compte supprimé
jeudi 31 août 2006 à 00:42
CODE
<input type="checkbox" name="champ" value="1" <?php if($_POST['champ']) echo "checked=\"checked\"";?> \>
easyphp007
jeudi 31 août 2006 à 09:24
Merci pour vos réponses rapides.
J'ai adapter les codes, juste que je me retrouve avec une erreur sur la page "reponses.php" lorsque je valide OK sans rien cocher :
"Notice: Undefined index: maVariable in c:\....\... on line 48.
En revanche, si mes choix sont cochés, ils sont bien affiché sur "reponses.php".
J'utilise Easyphp7.1. Serait ce un problème de conf. de php.ini ??
Merci
Jeromnimo
jeudi 31 août 2006 à 10:07
Bonjour easyphp007,
au vu de ton erreur je pense que c'est parce que dans le cas où tu n'as rien coché, la variable "maVariable" dans laquelle tu stockes les réponses n'est pas définie. Il faut donc faire un test avant avec un isset(maVariable) par exemple pour voir si tu as des reponses à traiter ;-)
easyphp007
jeudi 31 août 2006 à 11:09
CITATION(Jeromnimo @ jeudi 31 août 2006, 11h07)

Bonjour easyphp007,
au vu de ton erreur je pense que c'est parce que dans le cas où tu n'as rien coché, la variable "maVariable" dans laquelle tu stockes les réponses n'est pas définie. Il faut donc faire un test avant avec un isset(maVariable) par exemple pour voir si tu as des reponses à traiter ;-)
Bonjour, et merci pour ta remarque.
Je ne suis pas très bon dans ce domaine alors, j'ai fais comme suite sur ma page "reponses.php" :
<input type="checkbox" name=C1 value="1"
<?=if (isset($MaVariable)) {(($_POST['MaVariable']=="on")?"CHECKED":"")}?> \>
\>
En revanche je récupére quelque chose comme :
Parse error: parse error, expecting `','' or `';'' in c:\....
captain_torche
jeudi 31 août 2006 à 11:11
Il faudrait plutôt mettre :
CODE
<? (isset($_POST['MaVariable'] && $_POST['MaVariable'] == 'on') ? ' checked="checked"' : ''?>
easyphp007
jeudi 31 août 2006 à 11:38
CITATION(captain_torche @ jeudi 31 août 2006, 12h11)

Il faudrait plutôt mettre :
CODE
<? (isset($_POST['MaVariable'] && $_POST['MaVariable'] == 'on') ? ' checked="checked"' : ''?>
J'ai implémenté donc mon code comme suite :
<input type='checkbox' name=MaVariable value='1' <?php (isset($_POST['MaVariable'] && $_POST['MaVariable'] == 'on')?' checked="checked" ' : '')?> \>
Et j'ai tjs la meme erreur en actualisant la pages :
Parse error: parse error, expecting `','' or `')'' in c:\....
Snif...
Jeromnimo
jeudi 31 août 2006 à 11:40
Essaie peut etre plutot ca :
<input type='checkbox' name=MaVariable value='1' <?php (isset($_POST['MaVariable']) && $_POST['MaVariable'] == 'on')?' checked="checked" ' : '')?> \>
ca devrait mieux fonctionner ;-)
easyphp007
jeudi 31 août 2006 à 13:19
CITATION(Jeromnimo @ jeudi 31 août 2006, 12h40)

Essaie peut etre plutot ca :
<input type='checkbox' name=MaVariable value='1' <?php (isset($_POST['MaVariable']) && $_POST['MaVariable'] == 'on')?' checked="checked" ' : '')?> \>
ca devrait mieux fonctionner ;-)
Désolé JERO.
Je viens de tester :
<input type='checkbox' name=toto value='1' <?php (isset($_POST['toto']) && $_POST['toto'] == 'on')? ' checked="checked" ' : '')?> \>
le ")" a disparu car j'avais effectivement oublié de fermer mais j'obtiens tousjours :
Parse error: parse error in c:\..........on line 45
Jeromnimo
jeudi 31 août 2006 à 13:22
essaie en ajoutant un espace avant le "?>" fermant ton code php... c'est peut etre justa ca...
captain_torche
jeudi 31 août 2006 à 13:26
Tu es sûr que c'est de cette ligne qu'il s'agit ? Tu n'as fait aucune autre modif ?
easyphp007
jeudi 31 août 2006 à 13:34
CITATION(captain_torche @ jeudi 31 août 2006, 14h26)

Tu es sûr que c'est de cette ligne qu'il s'agit ? Tu n'as fait aucune autre modif ?
J'ai revérifié, c'est bien la ligne 45 et je n'ai aucun autre motif...

du moins pour l'instant.....
Je vais redemarrer la machine au cas ou....
Jeromnimo
jeudi 31 août 2006 à 13:35
Tu as essayé ce que je t'ai dit plus ? essaie avec un espace fermant, car la le php interprète surement le ? comme une fermeture de test...
easyphp007
jeudi 31 août 2006 à 13:56
CITATION(Jeromnimo @ jeudi 31 août 2006, 14h35)

Tu as essayé ce que je t'ai dit plus ? essaie avec un espace fermant, car la le php interprète surement le ? comme une fermeture de test...
Oui, j'avais fait ca...
Idem... Je fait un test d'affichage du genre "hello world" à la place de mon <input....>, ca me l'interprete....
Comprend pas trop...
Jeromnimo
jeudi 31 août 2006 à 14:00
Je viens juste de voir que tu as mis un slash pour fermer ton input (j'avais pas fait gaffe avant...), il n'y en pas, les balises input sont comme ça :
<input blablabla ... blablabla >
C'est peut etre juste ça...
easyphp007
jeudi 31 août 2006 à 14:06
CITATION(Jeromnimo @ jeudi 31 août 2006, 15h00)

Je viens juste de voir que tu as mis un slash pour fermer ton input (j'avais pas fait gaffe avant...), il n'y en pas, les balises input sont comme ça :
<input blablabla ... blablabla >
C'est peut etre juste ça...
Eh non, je l'avais enleve pour test... pareil.
ce qui est bizarre, c'est que lorsque je test mon p'tit "hello world" avec le <input ...> enlevé, j'affiche.
Et lorsque je remets le <input...>, plus rien ne s'affiche (message d'erreur habituel), alors que j'avais mis mon "hello world" avant mon <input...>
Jeromnimo
jeudi 31 août 2006 à 14:22
tu peux mettre le code "dans le contexte" ici ? (quelques lignes avant, quelques lignes après, voir toute la page si c'est pas trop long s'il te plait ? La je vois pas, c'est peut etre ailleurs le probleme....
C'est peut etre le && qui passe pas dans un test de cette nature (je suis pas sur de ça... si quelqu'un peut confirmer) Essaie peut etre en cascadant les tests :
CODE
<input type='checkbox' name=MaVariable value='1' <?php (isset($_POST['MaVariable']))?(($_POST['MaVariable'] == 'on')?' checked="checked" ' : ''):'' ?> \>
easyphp007
jeudi 31 août 2006 à 14:41
Au fait, j'ai raisonner en html et j'ai pondu un truc comme ca... apparement ca marche :
<input type=checkbox name=toto <? if(isset($_POST['toto']) && $_POST['toto'] == 'on')
{
echo (' checked="checked" ');
}
?>
>
Est ce une bonne idée ? si non, quels seraient les inconvenients ??
captain_torche
jeudi 31 août 2006 à 14:45
Personnellement, je fais un peu pareil, mais en moins de ligne :
CODE
<?php
$checked = (isset($_POST['toto']) && $_POST['toto'] == on) ? ' checked="checked"' : '';
?>
<input type="checkbox" name="toto"<?=$checked?> />
easyphp007
jeudi 31 août 2006 à 15:19
CITATION(captain_torche @ jeudi 31 août 2006, 15h45)

Personnellement, je fais un peu pareil, mais en moins de ligne :
CODE
<?php
$checked = (isset($_POST['toto']) && $_POST['toto'] == on) ? ' checked="checked"' : '';
?>
<input type="checkbox" name="toto"<?=$checked?> />
Oui, Merci pour l'idée sauf que j'aurai ajouté des " " comme cela :
$checked = (isset($_POST['toto']) && $_POST['toto'] ==
"on
") ? ' checked="checked"' : '';
captain_torche
jeudi 31 août 2006 à 15:21
Tu as parfaitement raison, j'ai tapé trop vite
easyphp007
vendredi 1 septembre 2006 à 09:36
Re-bonjour,
Je souhaiterais afficher mes "checkbox" afin de les comparer au résultat pré-cochés...
D'après vous, ce code est t'il logique ??
<?php
$affiche = "toto, tata, ....etc....";
$checked = (isset($_POST['affiche']) && $_POST['affiche'] == "on") ? ' checked="checked"' : '';
echo "Le résultat est $checked "
?>
Merci
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez
cliquer ici.