Aide php
Résolu
Nouveauprogrammateur
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour a tous,
Je me suis mis a la programmation il y a cela 2 semaines, bien sur, j'ai commencé par apprendre le Html et la je suis en train d'apprendre le Php via l'hebergeur Hostinger. Donc j'aimerais faire un QCM dans lequel la page Php serait le page des resultats et si possible savoir comment faire pour comptabiliser les points du joueur je vous remercie grandement d'avance !
Je ne comprend pas pourquoi rien ne s'affiche sur ma page de résultat ??
Voici mon Html :
et mon php :
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
Je me suis mis a la programmation il y a cela 2 semaines, bien sur, j'ai commencé par apprendre le Html et la je suis en train d'apprendre le Php via l'hebergeur Hostinger. Donc j'aimerais faire un QCM dans lequel la page Php serait le page des resultats et si possible savoir comment faire pour comptabiliser les points du joueur je vous remercie grandement d'avance !
Je ne comprend pas pourquoi rien ne s'affiche sur ma page de résultat ??
Voici mon Html :
<html> <body> <script type="text/javascript"> dateheure = new Date(); document.write("Nous sommes le "+dateheure.getDate()+"/"+(dateheure.getMonth()+1)+"/"+dateheure.getFullYear()+"<br>" ); document.write("et il est actuellement "+dateheure.getHours()+":"+dateheure.getMinutes()); </script> <head> <title>Quiz</title> </head> <body bgcolor="#FFFFFF" style="font-family:Kristen ITC"><br/> <center> <h2><font color="#FF3300">Quiz de culture general</font></h2><br/> <h3><font color="#0000FF">Question n1 : Quel est la taille de la tour Eiffel ?</font></h3> <h4><form><input type="radio" name="taille" value ="301"/>301 m</br> <input type="radio" name="taille" value ="381"/>381 m</br> <input type="radio" name="taille" value ="251"/>251 m</form></h4></form> <form method="post" action="fichier reponse php.html"> <p><input type="RESET" value="Effacer"> Pour recommencer<br /> <a><href="fichier reponse php.html"><input type="image" value="Valider" ></a> </center> </body> </html>
et mon php :
<?php // Lecture des entrées //Si la variable $_POST['taille'] taille existe if(isset($_POST['taille']); $taille=htmlentities($_POST['taille']); //On décode des entités HTML $point=1; // Dès que le joueur à un bonne reponse il gagne 1 point dans son score final $resultatfinal=0; //Le score du joueur est au depart de 0 points //Si la variable taille de la tour eiffel est bien egal a 301 if ($taille== '301') $resultatfinal=$resultatfinal+$point;//+1 a son resultat final echo '+1 dans le score final'; //Reponse est correct else ($resultatfinal=$resultatfinal+0 //Sinon il a faux et + 0 a son resultat final echo 'Il ne remporte pas de point'; //Reponse est fausse switch ($resultatfinal) case 0: echo "resultat final = 1/45"; break; case 1: echo "resultat final = 0/45"; break; ?>
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
.
A voir également:
- Aide php
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
7 réponses
Bonjour,
Pour commencer.. il ne faut pas mettre un LIEN vers ta pages résultat .. mais renseigner la méthode et l'action dans la FORM.
Ensuite, ton fichier PHP doit avoir comme nom : fichier_reponse.php (avec l'extension = PHP)
et surtout...evites d'utiliser des Espaces ou des caractères accentués dans le nom de tes fichiers
Le fichier fichier_reponse.php :
NB : Penses à mettre les { } dans tes blocs IF / ELSE ... c'est préférable pour éviter les erreurs ....
NB2 : J'ai utilisé l'écriture TERNAIRE pour initialiser la variable ( c'est une syntaxe du IF / ELSE ...)
NB3 : J'ai utilisé ISSET pour vérifier que la variable EXISTE ... AVANT d'essayer de l'utiliser..... (à faire absolument lorsque tu utilises du POST / GET / SESSION ... ou des Array... ça évite les erreurs....)
Pour commencer.. il ne faut pas mettre un LIEN vers ta pages résultat .. mais renseigner la méthode et l'action dans la FORM.
<h3><font color="#0000FF">Question n1 : Quel est la taille de la tour Eiffel ?</font></h3> <h4><form method="post" action="fichier_reponse.php"> <input type="radio" name="taille" value ="301"/>301 m</br> <input type="radio" name="taille" value ="381"/>381 m</br> <input type="radio" name="taille" value ="251"/>251 m</form></h4></form> <form method="post" action="fichier reponse php.html"> <p><input type="RESET" value="Effacer"> Pour recommencer<br /> <input type="submit" value="valider"><br>
Ensuite, ton fichier PHP doit avoir comme nom : fichier_reponse.php (avec l'extension = PHP)
et surtout...evites d'utiliser des Espaces ou des caractères accentués dans le nom de tes fichiers
Le fichier fichier_reponse.php :
<?php //Histoire de savoir ce que tu recçois comme données : echo "<pre>"; print_r($_POST); echo "</pre>"; // Lecture des entrées //Récupération des variables // A l'aide de ISSET et de l'écriture TERNAIRE $taille = isset($_POST['taille'])?htmlentities($_POST['taille']):NULL; $point=1; // Dès que le joueur à un bonne reponse il gagne 1 point dans son score final $resultatfinal=0; //Le score du joueur est au depart de 0 points //Si la variable taille de la tour eiffel est bien egal a 301 if ($taille== '301') { $resultatfinal=$resultatfinal+$point;//+1 a son resultat final echo '+1 dans le score final'; //Reponse est correct }else{ $resultatfinal=$resultatfinal+0 //Sinon il a faux et + 0 a son resultat final echo 'Il ne remporte pas de point'; //Reponse est fausse } switch ($resultatfinal) case 0: echo "resultat final = 1/45"; break; case 1: echo "resultat final = 0/45"; break; ?>
NB : Penses à mettre les { } dans tes blocs IF / ELSE ... c'est préférable pour éviter les erreurs ....
NB2 : J'ai utilisé l'écriture TERNAIRE pour initialiser la variable ( c'est une syntaxe du IF / ELSE ...)
NB3 : J'ai utilisé ISSET pour vérifier que la variable EXISTE ... AVANT d'essayer de l'utiliser..... (à faire absolument lorsque tu utilises du POST / GET / SESSION ... ou des Array... ça évite les erreurs....)
Par contre je viens de voir un souci...
Au niveau du SWITCH .. il manque les accolades.
Au niveau du SWITCH .. il manque les accolades.
switch ($resultatfinal) { case 0: echo "resultat final = 1/45"; break; case 1: echo "resultat final = 0/45"; break; }
Il manque un Point-virgule
Le +0 est superflue au passage.... (voir même le ELSE ... vu que tu ne change pas la note)
PS: **** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
$resultatfinal=$resultatfinal+0 ;//Sinon il a faux et + 0 a son resultat final
Le +0 est superflue au passage.... (voir même le ELSE ... vu que tu ne change pas la note)
PS: **** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
Exact, merci je n'avais pas vu !
Je ne comprend pas pourquoi le" case 0" est tout le celui qui s'affiche meme lorsque la reponse est fausse pourtant il correspond bien a un :
<?php
if ($resultatfinal== 0) {
echo "resultat final égal à 1";
?>
Je ne comprend pas pourquoi le" case 0" est tout le celui qui s'affiche meme lorsque la reponse est fausse pourtant il correspond bien a un :
<?php
if ($resultatfinal== 0) {
echo "resultat final égal à 1";
?>
**** Attention (deuxième rappel !!!) ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
Ben ... on est bien d'accord que ... $resultatfinal vaut 0 si la réponse est fausse non ?
c'est bien ce que tu lui a demandé de faire dans ton code .......
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
.
Je ne comprend pas pourquoi le" case 0" est tout le celui qui s'affiche meme lorsque la reponse est fausse
Ben ... on est bien d'accord que ... $resultatfinal vaut 0 si la réponse est fausse non ?
c'est bien ce que tu lui a demandé de faire dans ton code .......
$resultatfinal=0; //Le score du joueur est au depart de 0 points //Si la variable taille de la tour eiffel est bien egal a 301 if ($taille== '301') { $resultatfinal=$resultatfinal+$point;//+1 a son resultat final echo '+1 dans le score final'; //Reponse est correct }else{ echo 'Il ne remporte pas de point'; //Reponse est fausse }
Si le résultat vaut 0/45 ... c'est que tu as choisi la bonne réponse....
vu que tu as sûrement inversé dans ton switch...
Par contre, je pense qu'il ne faut pas le gérer comme ça .. mais plutôt :
vu que tu as sûrement inversé dans ton switch...
switch ($resultatfinal) { case 0: echo "resultat final = 1/45"; break; case 1: echo "resultat final = 0/45"; break; }
Par contre, je pense qu'il ne faut pas le gérer comme ça .. mais plutôt :
// A la place de ton SWITCH : echo "resultat final = ".$resultatfinal."/45";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
html :
<h4><form><input type="radio" name="taille" value ="301"/>301 m</br> <input type="radio" name="taille" value ="381"/>381 m</br> <input type="radio" name="taille" value ="251"/>251 m</form></h4></form> <form method="post" action="fichier_reponse.php"> <form><input type="submit" name="valider" value="envoyer"></br></form> <form><input type="reset" name="effacer" value="effacer"></br></form>
$taille = isset($_POST['taille'])?htmlentities($_POST['taille']):NULL; //On décode des entités HTML à l'aide de ISSET pour savoir si la variable taille existe $point=1; // Dès que le joueur à un bonne reponse il gagne 1 point dans son score final $resultatfinal=0; //Le score du joueur est au depart de 0 points //Si la variable taille de la tour eiffel est bien egal a 301 if ($taille== '301') { $resultatfinal=$resultatfinal+$point;//+1 a son resultat final echo '+1 dans le score final'; //Reponse est correct } else{ $resultatfinal=$resultatfinal+0; //Sinon il a faux et + 0 a son resultat final } echo "Le resultat final du joueur est ".$resultatfinal."/5"; // donc la j'ai fais comme tu m'as dis
Pour essayer de comprendre ce qui cloche...il faut faire des ECHO / PRINT de tes variables..
Comme ceci :
Cordialement,
Jordane
Comme ceci :
<?php // POST : echo "<pre> Contenu de POST : <br>"; print_r($_POST); echo "</pre>"; $taille = isset($_POST['taille'])?htmlentities($_POST['taille']):NULL; //On décode des entités HTML à l'aide de ISSET pour savoir si la variable taille existe echo "<pre> Contenu de 'taille' : <br>"; echo $taille ; echo "</pre>"; $point=1; // Dès que le joueur à un bonne reponse il gagne 1 point dans son score final $resultatfinal=0; //Le score du joueur est au depart de 0 points //Si la variable taille de la tour eiffel est bien egal a 301 if ($taille== '301') { $resultatfinal=$resultatfinal+$point;//+1 a son résultat final echo '+1 dans le score final'; //Reponse est correcte } else{ // ------ Inutile ---- // $resultatfinal=$resultatfinal+0; //Sinon il a faux et + 0 a son résultat final } echo "Le resultat final du joueur est ".$resultatfinal."/5"; // don ?>
Cordialement,
Jordane
pas besoin de faire :
... tu peux directement écrire :
Car le lien ne TRANSMET pas les données entre les pages ...
Pour transmettre les données d'un formulaire tu ne peux le faire qu'avec "SUBMIT" de ton form ....
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)
Cordialement,
Jordane