Quiz + compteur de point en php

Quiz + compteur de point en php - PHP - Programmation

Marsh Posté le 25-05-2011 à 15:11:15    

Bonjour,
Je dois réaliser un quiz en php simple avec un fichier html qui contient les questions, et je voudrais que ces questions soit transféré vers un compteur de point  :??: .  
Comme par exemple dans un jeu concours, je débute en php :( . J'ai essayé de faire quelque chose et je voudrais avoir votre avis svp ,recevoir des conseils, infos ...
merci d'avance  :)  .
 
voici mon essai  
<?php
  //connection au serveur
  $cnx = mysql_connect( "localhost", "root", "" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "question" ) ;
 
   /* Variable déclaré*/
   $value;
   $point;
   $total;
   $question1=$_POST["Q1"];
   $question2=$_POST["Q2"];
   $question3=$_POST["Q3"];
   $question4=$_POST["Q4"];
   
   
   
    //création de la requête SQL:
  $sql = "INSERT  INTO concour (id, question, reponse, point)
            VALUES ('','$question1', '$question2', '$question3', '$question4') " ;
 
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  ?>
                           
  <?Php
  if ($question1==($value=$_POST['oui']))  /*Si la reponce de la question 1 est bonne*/
   {
   ($point=1); } /*alors gain d'un point*/
   elseif ($question1==($value=$_POST['non'])) /*sinon la réponce de la question 1 est fausse*/
   {
   ($point=0);  /*alors aucun point*/
   
   
   
  if ($question2==($value=$_POST['oui']))  /*Si la reponce de la question 2 est bonne*/
   {
   ($point==1); } /*alors gain d'un point*/
   elseif ($question2==($value=$_POST['non'])) /*sinon la réponce de la question 2 est fausse*/
   {($point=0); /*alors aucun point*/
   
   
   
   
   
   
   
   
  if ($question3==($value=$_POST['oui']))  /*Si la reponce de la question 3 est bonne*/
   {
   ($point=1); } /*alors gain bed'un point*/
   elseif ($question3==($value=$_POST['non'])) /*sinon la réponce de la question 3 est fausse*/
   {($point=0); /*alors aucun point*/
   
   
   
 
  if ($question4==($value=$_POST['oui']))  /*Si la reponce de la question 4 est bonne*/
   {
   ($point==1); } /*alors gain d'un point*/
   elseif ($question4==($value=$_POST['non'])) /*sinon la réponce de la question 4 est fausse*/
   {($point=0);}}}} /*alors aucun point*/
   
   
  ?>
   
   Vous avez un total de:
   <?php
  /*calcul des points*/
  $total= $_POST["Q1"]+$_POST["Q2"]+$_POST["Q3"]+$_POST["Q4"];
  /*Affichage du total de point*/
   echo $total ;  
  ?>
   
   

Reply

Marsh Posté le 25-05-2011 à 15:11:15   

Reply

Marsh Posté le 25-05-2011 à 18:45:55    

Bonsoir, bon... je ne comprend pas tout ton code, (enfin si mais j'aurais procédé autrement...).
 
Déjà pour ta variable $point il ne faut pas faire:
 
si la réponse est bonne ""$point = 1; sinon "$point = 0;" à part si tu donne le résultat en direct, si tu additionne tout les points (d'une 20aine de question) il faut juste faire: si la réponse est bonne "$point ++;"
 
Il faudrait que tu explique ton code si tu veut de l'aide.*
 
 
<?php
  //connection au serveur
  $cnx = mysql_connect( "localhost", "root", "" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "question" ) ;
 
   /* Variable déclaré*/
   $value;
   $point;
   $total;
   $question1=$_POST["Q1"]; <== Qu'est-ce qui est envoyé dans ces variable? si c'est les réponses ne l'appel pas question.
   $question2=$_POST["Q2"];
   $question3=$_POST["Q3"];
   $question4=$_POST["Q4"];
   
   
   
    //création de la requête SQL:
  $sql = "INSERT  INTO concour (id, question, reponse, point)
            VALUES ('','$question1', '$question2', '$question3', '$question4') " ;
 
tu ne peut pas enregistrer ceci maintenant car tu na pas encore compté les points...
Et pour un enregistrement multiple il faut plusieur ligne et pas une seule.
 

  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  ?>
 
Ci_dessous tu ne peut pas demander ce genre de requête... $value ne vaut rien car tu la juste initialisé.
et que vaut $_POST["oui"]?
C'est la réponse qu'il devait donner?

 
<?Php
  if ($question1==($value=$_POST['oui']))  /*Si la reponce de la question 1 est bonne*/
   {
   ($point=1); } /*alors gain d'un point*/
   elseif ($question1==($value=$_POST['non'])) /*sinon la réponce de la question 1 est fausse*/
   {
   ($point=0);  /*alors aucun point*/
 
 
  if ($question2==($value=$_POST['oui']))  /*Si la reponce de la question 2 est bonne*/
   {
   ($point==1); } /*alors gain d'un point*/
   elseif ($question2==($value=$_POST['non'])) /*sinon la réponce de la question 2 est fausse*/
   {($point=0); /*alors aucun point*/
   
  if ($question3==($value=$_POST['oui']))  /*Si la reponce de la question 3 est bonne*/
   {
   ($point=1); } /*alors gain bed'un point*/
   elseif ($question3==($value=$_POST['non'])) /*sinon la réponce de la question 3 est fausse*/
   {($point=0); /*alors aucun point*/
 
  if ($question4==($value=$_POST['oui']))  /*Si la reponce de la question 4 est bonne*/
   {
   ($point==1); } /*alors gain d'un point*/
   elseif ($question4==($value=$_POST['non'])) /*sinon la réponce de la question 4 est fausse*/
   {($point=0);}}}} /*alors aucun point*/
   
?>
   
   Vous avez un total de:
<?php
  /*calcul des points*/
  $total= $_POST["Q1"]+$_POST["Q2"]+$_POST["Q3"]+$_POST["Q4"];
  /*Affichage du total de point*/
   echo $total ;  
?>  
Ici tu ne peut pas additionner tout ça... les variable valent les réponses si tes réponse sont numériques ok mais même en aucun cas il ne s'agis des points...
 
Pour faire simple ton code n'est pas compliqué à faire, voila se que j'ai compris, si c'est ça je peut t'aider sinon il faudrais comprendre se que tu veut faire:
 
Pour moi tu pose 4 question, ou on répond d'une certaine manière (je ne sais pas se que tu a choisis, input-text, radio ou select enfin bref),
tout ceci est envoyé sur cette page qui analyse, donne le résultat à la personne et l'inscrit dans une base de donnée.
 
Est-ce cela?


Message édité par silenssin le 25-05-2011 à 18:57:03
Reply

Marsh Posté le 25-05-2011 à 19:16:53    

Voila le code que tu voulait faire (je pense) c'est du php5 donc selon se que tu en fait tu devras faire des modifications:
 
<?php
 
 //tableau des informations de connexion
 $login = array();
 $login['serveur'] =  'localhost';
 $login['database'] =  'question';
 $login['account'] =  'root';
 $login['password'] =  '';
 
 //connexion
 try
 {
  $db = new PDO('mysql:host='.$login['serveur'].';dbname='.$login['database'].'', ''.$login['account'].'', ''.$login['password'].'');
 }
 catch (Exception $e)
 {
  die('Erreur : ' . $e->getMessage());
 }
 
 //initialisation de toutes les variables dont ont devras se servir.
 //personellement j'aurais opté pour un $_GET.
 $points = 0;
 $answer1=$_POST["Q1"];
 $answer2=$_POST["Q2"];
 $answer3=$_POST["Q3"];
 $answer4=$_POST["Q4"];
 
 //maintenant on vérifie les réponses:
 //question 1
 if ($answer1 == "la_réponse_désirée" )
 { $points ++;}
 //question 2
 if ($answer2 == "la_réponse_désirée" )
 { $points ++;}
 //question 3
 if ($answer3 == "la_réponse_désirée" )
 { $points ++;}
 //question 4
 if ($answer4 == "la_réponse_désirée" )
 { $points ++;}
 
 echo 'Vous avez un total de : '.$points.' point(s).';
 
?>
 
Pour se qui est de l'enregistrement dans la base de données je n'ai pas écrit le code car je ne vois pas se que tu désire en faire... enfin je ne comprend pas comment tu veut garder ces informations, donc donne moi plus de détails.


Message édité par silenssin le 25-05-2011 à 19:18:24
Reply

Marsh Posté le 25-05-2011 à 20:17:00    

Merci d'avoir pris le tps de regarder. Pour te répondre pour $_POST["Q1"]; je voulais définir les questions pour vouloir ensuite faire le total ensuite pour $_POST["oui"] c'étais pour vouloir dire la réponse est bonne et pour vouloir répondre a ses questions on répond j'utilise radio tel que  
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>A vous de jouer!!! </title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   </head>
   <body>
 <form action="question.php" method="post">
   <p>
   Que veut dire le mot php ?
<input type="radio" name="php" value="oui" id="answer1"  /> <label for="Hypertext PreProcessor">Hypertext PreProcessor</label>
<input type="radio" name="php" value="non" id="answer1" /> <label for="Personal HomePage">Personal HomePage</label>
<input type="radio" name="php" value="non" id="answer1"  /> <label for="Pro Hard Player">Pro Hard Player</label><br/>
 
 Quel fruit représente le logo de apple?
<input type="radio" name="logo" value="oui" id="Q2"  /> <label for="une pomme">une pomme</label>
<input type="radio" name="logo" value="non" id="Q2" /> <label for="une orange">une orange</label>
<input type="radio" name="logo" value="non" id="Q2"  /> <label for="une banane">une banane</label><br/>
 
 En quel année somme nous?
 <input type="radio" name="année" value="oui" id="Q3"  /> <label for="2011">2011</label>
<input type="radio" name="année" value="non" id="Q3" /> <label for="2010">2010</label>
<input type="radio" name="année" value="non" id="Q3"  /> <label for="2001">2001</label><br/>
 
 Où est situé l'île de la réunion?
<input type="radio" name="réunion" value="non" id="Q4"  /> <label for="Ocean Pacifique">Ocean Pacifique</label>
<input type="radio" name="réunion" value="oui" id="Q4" /> <label for="Ocean Indien">Ocean Indien</label>
<input type="radio" name="réunion" value="non" id="Q4"  /> <label for="Ocean Atlantique">Ocean Atlantique</label>
<input type="radio" name="réunion" value="non" id="Q4" /> <label for="Ocean Artique">Ocean Artique</label><br/>
 
<input type="submit" value="Valider">
 
Bien sur les questions ici sont des exemples pour voir si sa marche ou nn ^^

Reply

Marsh Posté le 25-05-2011 à 20:32:00    

ok.. bon c'est pas mal mais ne met pas value="oui" ou value="non"... pourquoi? parcequ'en regardant le code source de ta page la personne auras les réponses...
Ensuite dans le php ou j'ai écrit "la_réponse_désirée" tu met par rapport à la question le numéro qui est bon... mais se système que tu à fait n'est pas très... pratique, quitte à utiliser php et sql autant faire une base de gestion de tes questions.
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>A vous de jouer!!! </title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   </head>
   <body>
 <form action="question.php" method="post">
   <p>
   Que veut dire le mot php ?
<input type="radio" name="php" value="1" id="Q1"  /> <label for="Hypertext PreProcessor">Hypertext PreProcessor</label>
<input type="radio" name="php" value="2" id="Q1" /> <label for="Personal HomePage">Personal HomePage</label>
<input type="radio" name="php" value="3" id="Q1"  /> <label for="Pro Hard Player">Pro Hard Player</label><br/>
 
 Quel fruit représente le logo de apple?
<input type="radio" name="logo" value="1" id="Q2"  /> <label for="une pomme">une pomme</label>
<input type="radio" name="logo" value="2" id="Q2" /> <label for="une orange">une orange</label>
<input type="radio" name="logo" value="3" id="Q2"  /> <label for="une banane">une banane</label><br/>
 
 En quel année somme nous?
 <input type="radio" name="année" value="1" id="Q3"  /> <label for="2011">2011</label>
<input type="radio" name="année" value="2" id="Q3" /> <label for="2010">2010</label>
<input type="radio" name="année" value="3" id="Q3"  /> <label for="2001">2001</label><br/>
 
 Où est situé l'île de la réunion?
<input type="radio" name="réunion" value="1" id="Q4"  /> <label for="Ocean Pacifique">Ocean Pacifique</label>
<input type="radio" name="réunion" value="2" id="Q4" /> <label for="Ocean Indien">Ocean Indien</label>
<input type="radio" name="réunion" value="3" id="Q4"  /> <label for="Ocean Atlantique">Ocean Atlantique</label>
<input type="radio" name="réunion" value="4" id="Q4" /> <label for="Ocean Artique">Ocean Artique</label><br/>
 
<input type="submit" value="Valider">
 
(n'oublis pas de fermer ton <p>, le form, body et html.
Et pour ta base de donnée? tu voulais avoir quoi comme résultats dessus?

Reply

Marsh Posté le 25-05-2011 à 20:56:05    

En fait je voulais essayé de faire par la suite un classement du genre "celui qui a le plus de point est tel personne" on a besoin d'une BDD pour sa nn?

Reply

Marsh Posté le 25-05-2011 à 21:12:41    

Oui alors tout dépend de se que tu veut faire... un site qui pose des question et enregistre tes statistiques?
Dans se cas les gens doivent se connecter afin de jouer sur leur compte, si tu fait cela il te faut donc une base de donnée remplie de questions sinon tu va devoir faire les pages une par une... pas top.
Ensuite tu peut effectivement ranger les gens par le taux de bonne réponses.

Reply

Marsh Posté le 30-05-2011 à 12:38:52    

Suite a quelque contretemps j'ai pas pu repondre avant. Je voudrai tte remercier car sa marche maintenant mais reste plus qu'a régle un probleme pour le calcul il m'affiche toujours le meme total de point ai-je manquer quelque chose ?  
 
<?php
 
 //tableau des informations de connexion
 $login = array();
 $login['serveur'] =  'localhost';
 $login['database'] =  'question';
 $login['account'] =  'root';
 $login['password'] =  '';
 
 //connexion
 try
 {
 $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  $bdd = new PDO('mysql:host=localhost;dbname=question', 'root', '', $pdo_options);
 }
 catch (Exception $e)
 {
  die('Erreur : ' . $e->getMessage());
 }
 
 //initialisation de toutes les variables dont ont devras se servir.
 //personellement j'aurais opté pour un $_GET.
  $points = 0;
 $value1=$_POST["php"];
 $value4=$_POST["logo"];
 $value9=$_POST["année"];
 $value11=$_POST["réunion"];
 $answer1=$_POST["php"];
 $answer2=$_POST["logo"];
 $answer3=$_POST["année"];
 $answer4=$_POST["réunion"];
 
 //maintenant on vérifie les réponses:
 //question 1
 if ($answer1 == $value1 )
 { $points ++;}
 //question 2
 if ($answer2 == $value4 )
 { $points ++;}
 //question 3
 if ($answer3 == $value9 )
 { $points ++;}
 //question 4
 if ($answer4 == $value11 )
 { $points ++;}
 
 echo 'Vous avez un total de : '.$points;
 
?>
 

Reply

Marsh Posté le 30-05-2011 à 16:57:48    

$_POST est mieux, entre autre, les valeurs du formulaire ne s'affichent pas dans la barre d'adresse de cette façon.

Reply

Marsh Posté le 30-05-2011 à 18:06:54    

Merci mon questionnaire marche lui mais il m'affiche tjr 'vous avez un total de 4 point' donc je pense qu'il croit  vrai tt les réponses mais je vois pas la faute  :??:  :??:

Reply

Marsh Posté le 30-05-2011 à 18:06:54   

Reply

Marsh Posté le 31-05-2011 à 17:07:26    

problème régler ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed