[PHP/MYSQL] Comment avoir la meme donnée sql

Fermé
syl20 - 28 août 2007 à 16:34
 syl20 - 28 août 2007 à 17:15
Bonjour à tous,

J'ai un jeux qui pose une question avec 4 choix possibles (genre qcm)
Le principe est que j'ai un compte à rebours de 10secondes. La question apparait pendant ces 10 secondes et les réponses uniquement dès que le compte à rebours est à 0. Je fais gagner alors le plus rapide à répondre.
C'est pour présenter l'idée. Le compte à rebours fonctionne bien, et l'affichage question et réponse aussi.

J'ai deux tables :

Question avec :
- id
- question
-rep1
-rep2
-rep3
-rep4
-rep-gagnante

Et la table parties dans laquelle j'ai
-ID
-question
-rep1
-rep2
-rep3
-rep4
-reponse_gagn
-date_deb
-date_fin

Mon problème, c'est que je souhaite que la question affichée pendant le compte à rebours soit la même pour tous les visiteurs. Arrivé à la fin du compte à rebours, ils répondent, je traite les réponses et je relance un nouveau compte à rebours avec une nouvelle question.


Voici mon code actuel (en partie) pour gérer les accès de base.

Avec ce code, chaque visiteur obtient une question différente, ce que je ne souaite pas...

Quel code ou quelle instruction puis je utiliser pour arriver au résultat que je souhaite :

Code :

$reqsql="SELECT * FROM question order by rand() LIMIT 1";


$resbase=mysql_query($reqsql,$cnx) or die ("Echec de $sqlquest");

while ($quizz=mysql_fetch_assoc($resbase)){
//$num prend la valeur trouvé dans le champs 0
$id=$quizz['Num'];
//$question prend la valeur trouvé dans le champs 1
$question=$quizz['question'];
//$reponse1 prend la valeur trouvé dans le champs 2
$reponse1=$quizz['rep1'];
//$reponse2 prend la valeur trouvé dans le champs 3
$reponse2=$quizz['rep2'];
//$reponse3 prend la valeur trouvé dans le champs 3
$reponse3=$quizz['rep3'];
//$reponse4 prend la valeur trouvé dans le champs 4
$reponse4=$quizz['rep4'];
//$repexact prend la valeur trouvé dans le champs 5
$repexact=$quizz['reponse'];

}
$date = microtime();
$date = explode(" ", $date);
$date = (float)$date[1] + (float)$date[0];
$datefin=$date+10.0;
//$date=mysql_query("SELECT date FROM parties WHERE id=($numpart-1)");
//$date1=$date+10;


$sql = mysql_query("INSERT INTO parties (question,rep1,rep2,rep3,rep4,reponse,date_deb,date_fin) VALUES('$question','$reponse1','$reponse2','$reponse3','$reponse4','$repexact','$date','$datefin')")
or die('Erreur SQL !'.$sql.'
'.mysql_error());

// $query = 'SELECT MAX(id) AS last_id FROM parties';
// $result = mysql_query($query);
//$res = mysql_fetch_array($result);

//ferme la connection à la base
mysql_close();


Merci d'avance...
A voir également:

2 réponses

Le truc avec un script PHP c'est qu'il est executé à la demande, donc si tu as 5 personnes qui visite la page en même temps, il te faut être sur que ton script PHP (qui sera donc lancé 5 fois) aille chercher la même question :)

La fonction rand() va te piocher une question au pif, mais si tu lance 5 fois la page tu aura plus ou moins 5 question différentes.

Il faut faire "communiquer ton script avec lui même", par exemple :
<?

if (file_exists("question.txt")) { //si un fichier existe alors on prend dedans le numéro de question
$question = file_get_contents("question.txt");
}else{ //si le fichier n'existe pas encore, alors on prend une question au pif et on stoque son numéro dans le fichier
$question = rand();
$f = fopen("question.txt",w+);
fputs($f,$question);
}

/*********
Ton programme ici
*********/

if (file_exists("question.txt")){ //pour effacer le fichier quand tout le monde a répondu, et pour pouvoir recommencer un cycle
unlink("question.txt");
}

?>

Ce n'est qu'une piste biensur, mais ca permet d'illustrer l'idée :)
0
Bon, super... Cela me parait vraiment bien... Et je comprends bien le principe...

Sauf que mes questions sont en BDD Sql... Tu peux m'expliquer comment faire dans ce cas là?

En plus, j'ai un temps pour chaque question de 10 secondes...

Peut être est ce que je dois gérer la condition vis à vis de ce temps là..

Par exemple : attendre date_fin de la question pour passer à la suivante...

Mais je ne sais comment le traduire en php/mysql...

Merci
0