PHP-Mysql question-réponse avec BDD

Répondre
Haerys
le 09/04/2014 à 18:02
Haerys
Bonjour,

Je travaille sur un projet de site d'énigmes depuis plusieurs semaines, mais il y a (notamment) un souci que je n'arrive vraiment pas à régler. J'ai tenté plusieurs appels différents du contenu de ma table, diverses dispositions du formulaire etc. mais je n'arrive pas à ce que je veux. J'espère que vous pourrez m'aider !

Le topo :
• J'ai une BDD avec une table qui contient : id (auto-incrémentée ) + énigme + indice + réponse
• Dans ma page, je veux qu'on m'affiche toutes les énigmes dans un formulaire ; chaque énigme est suivi d'un input type text où il faut insérer la réponse
• Là où je bloque c'est pour avoir UN seul submit (donc en dehors de ma boucle while) : le joueur cliquerait dessus et à la place des input text on aurait " bonne réponse / mauvaise réponse "

<?php
$serveur='localhost';
$bdd='enigmes';
$login='root';
$mdp='';
$connexion=new PDO('mysql:host='.$serveur.';dbname='.$bdd.'',$login,$mdp);
$connexion -> exec("set names utf8");
$req = $connexion->query('SELECT * FROM enigme ORDER BY id ASC');

while($ligne = $req->fetch()){
echo '<form action="" method="post"><strong>'.$ligne['id'].' - '.$ligne['enigme'].'</strong><input type="text" name="answer" value="" /><input type="submit" name="valid" value="Répondre" /></form> ';

if ((!empty($_POST['answer']))AND($_POST['answer'])==$ligne['reponse']) {
echo ' correct ' ;
}
else{
echo ' incorrect ';
}
}
$req->closeCursor();
?>


Dans un if/else j'ai réussi à vérifier si les réponses sont ou non correctes, mais mon submit étant à chaque fois répété, il faut que je clique sur chacune des réponses à chaque fois... et puisque ça me recharge la page, je perds les soumissions précédentes.
Ce qui m'amène au problème secondaire, pour attribuer 1 point à chaque bonne réponse (total ensuite récupéré pour avoir la moyenne et une appréciation) :

$nbe = $connexion->query('SELECT COUNT(*) FROM enigme');
$counter = $nbe->fetchColumn();
$top=$counter;
$almost=$counter/(4)*(3);
$mid=$counter/(2);
$bad=$counter/(4);

echo $top.'<br>';
echo $almost.'<br>';
echo $mid.'<br>';
echo $bad.'<br>';


Je vous joins mes codes ! Merci à ceux qui prendront le temps de m'éclairer (P.S.: je suis plus ou moins débutant en PHP, mais je comprends plutôt bien je pense) :))
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours