Aide php

Résolu
Nouveauprogrammateur -  
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 :
<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:

7 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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.

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





0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Et pour Incrémenter ...
pas besoin de faire :
 $resultatfinal=$resultatfinal+$point;//+1 a son resultat final 

... tu peux directement écrire :
 $resultatfinal++;
0
Nouveauprogrammateur
 
Et bien merci de ta réponse rapide et claire Jordane45 mais pourquoi ne pas utiliser un lien pour envoyer l'utilisateur sur ma page De résultat ? En tous cas merci de ta réponse super bien expliquée
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Nouveauprogrammateur
 

pourquoi ne pas utiliser un lien pour envoyer l'utilisateur sur ma page De résultat ?

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 ....
0
Nouveauprogrammateur > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Aah ok merci !
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
PS: Si la question est résolue..
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
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Par contre je viens de voir un souci...
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; 
}

0
Nouveauprogrammateur
 
Oui je l'avais rectifié neanmoins pourquoi je reçois un message d'erreur au niveau de cette ligne ?

}
else{
$resultatfinal=$resultatfinal+0 //Sinon il a faux et + 0 a son resultat final
echo 'Il ne remporte pas de point'; //Reponse est fausse

}
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Nouveauprogrammateur
 
Il manque un Point-virgule
$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

.
0
Nouveauprogrammateur
 
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";
?>
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
**** 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

.

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 
    }
0
Nouveauprogrammateur
 
Autant pour moi je ferrais plus attention la prochaine fois. Je voulais dire " Je ne comprend pas pourquoi le case O est tout le temps celui qui s'affiche même lorsque je coche la bonne réponse le résultat final équivaut toujours a 0/45
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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...
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"; 


0
Westcoast1
 
Excuse moi de ne pas avoir répondu plus tôt, j'ai continué a programmer et a le rendre plus esthétique mais j'ai toujours ce problème que le résultat final ne change pas en fonction du bouton que j'ai coché je pense que cela vient du :
If ($taille=='301')
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Poste nous ton code actuel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Westcoast1
 
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>
0
Westcoast1
 
$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 
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Pour essayer de comprendre ce qui cloche...il faut faire des ECHO / PRINT de tes variables..
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
0
Westcoast1
 
Il me met :
Contenu de POST :
Array
(
)
Contenu de 'taille' :

pourquoi les variables ne s'affichent t'elles pas dans les paranthèses du Array ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu peux mettre le code de ton formulaire complet ?
0