Problème avec variable php

Problème avec variable php - PHP - Programmation

Marsh Posté le 08-07-2009 à 15:06:36    

Bonjour à tous,
 
Je planche sur un problème dont la réponse doit-être toute bête mais j'ai le nez dessus depuis quelques temps et je m'oriente vers vous pour trouver la solution !
 
En fait je fais un traitement qui permet de récupérer les données d'un $_POST (ce sont des questions) dont les "name" sont "question1, "question2",..."question16".
 
Je compare ces données avec celles contenu dans un tableau de type array où sont renseigné les bonnes réponses.
 
J'ai donc créé une boucle FOR pour parcourir le tableau $_POST et de comparer pour chaque cellule si le résultat correspond bien à celui présent dans le tableau array (nommé "$reponseok" ).
 
Et mon souci est que la variable qui prend +1 si la réponse est juste (variable nommée "$result" ) reste toujours à zéro ! C'est un soucis puisque c'est elle qui définit le résultat du questionnaire afin de le rentrer en base !
 
Voici le code de traitement :
 

Code :
  1. $reponseok = array();
  2.  $j = 1;//Initialisation de la variable qui va permettre de parcourir les champs du tableau $_POST
  3.  $result = 0; //Initialisation de la variable qui va prendre +1 à chaque bonne réponse
  4.  $req = mysql_query("SELECT * FROM summerquiz WHERE idrh = '".$idrh."'" ); //Récupération des infos du participant et donc des questions spécifiques
  5.  $row = mysql_fetch_array($req);
  6.  // tableaux des bonnes réponses par quiz
  7.  if($_POST['quiz'] == "TV" ) { // Si la fonction de l'utilisateur est TV alors les bonnes réponses seront celles-ci
  8.   $reponseok = array('2','3','3','2','2','2','1','1','2','1','1','2','2','1','3','1');
  9.  }
  10.  else{//Sinon ce seront celle-là
  11.   $reponseok = array('2', '1,2,3','1','3','1','1,2,3,4','3','3','1','2','1','1,2','2','2','1','1,3');
  12.  }
  13.  for($i=0; $i<16; $i++){//On parcours le tableau $_POST et on compare avec le tableau $reponseok
  14.   //Si la valeur du tableau $_POST et égale à la valeur du tableau $reponseok alors on incrémente $result de +1
  15.   if($row['question'.$j] == $reponseok[$i]) { $result = $result+1; }
  16.  }
  17.  $result = ($result*20)/16; //On met le résultat sur 20
  18.  $resultat = round($result); //On arrondit le résultat
  19.  echo $result.'<br /><br />';//Affichage de la variable $result
  20.  echo $resultat; //Affichage de la moyenne sur 20


 
Voila, et donc au final les deux dernières lignes affichent les variables $result et $resultat mais celles-ci sont toujours égales à 0 !
 
Merci à tous pour votre aide qui va m'être très précieuse.

Reply

Marsh Posté le 08-07-2009 à 15:06:36   

Reply

Marsh Posté le 08-07-2009 à 15:22:36    

Pour l'incrémentation, tu peux utiliser $result++; au lieu de result = $result+1;
Commence par vérifier que ton script passe bien par le code d'incrémentation (en ajoutant par exemple un symbole spécifique à côté).


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 08-07-2009 à 15:26:43    

tu te serais pas mélangé les pinceaux entre $i et $j?

Reply

Marsh Posté le 08-07-2009 à 15:28:32    

Merci pour l'incrépmentation de la variable $result.
 
Je fait un echo de la varible $result dans la condition située dans la boucle FOR, rien ne s'affiche. Alors que je constate que certaines réponses sont juste et que donc la condition se vérifie entre les deux tableaux !
 
très bizarre...
 
tu sais d'où cela peut venir ?

Reply

Marsh Posté le 08-07-2009 à 15:55:02    

JE parle de mettre un signe distinctif (par exemple, echo "#1" ) afin de vérifier si le script passe dans la boucle. Là, tout ce qu'on sait, c'est que la variable est null (qui peut venir d'une faute de frappe par exemple).


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 08-07-2009 à 15:57:17    

Mea culpa !
 
je viens de me rendre compte que je bouclais sur des questions qui n'existais pas dans la base. en effet, les réponses de l'utilisateur se trouve dans le tableau $_POST et non en base donc du coup je boucle maintenant sur le tableau $_POST et tout fonctionne à merveille.
 
merci pour ton aide aideinfo
 
A bientôt

Reply

Sujets relatifs:

Leave a Replay

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