Tri aléatoire de 10 questions dans une liste de 30

Petit nouveau ! | 3 Messages

20 sept. 2010, 11:25

Bonjour,

J'ai un petit quizz à réaliser avec affichage aléatoire des questions. J'ai donc utilisé la fonction rand() dans ma requête, pas de soucis la dessus. Par contre j'ai une contrainte car ma table question contient 30 questions et je ne dois afficher que 10 questions aléatoirement sur ces 30 questions. Voila c'est la que je bloque

voici ma requête :

Code : Tout sélectionner

$sql = 'SELECT questions, id FROM questions ORDER BY RAND() LIMIT 1'; $req = mysql_query($sql) or die ('Erreur SQL !'.$sql.'<br/>'.mysql_error());
Est-ce que quelq'un à une idée ?? Merci d'avance

Eléphant du PHP | 86 Messages

20 sept. 2010, 12:19

Salut,

En utilisant le LIMIT, tout simplement :
$sql = 'SELECT questions, id FROM questions ORDER BY RAND() LIMIT 0,10';

Petit nouveau ! | 3 Messages

20 sept. 2010, 14:24

Merci de ta réponse Skikit,

Effectivement le limit 0,10 marche nickel, thank's a lot.

Par contre maintenant il me reste un autre pb à résoudre. En théorie les questions doivent s'afficher une par une. par exemple la question 1 s'affiche et je dois appuyer sur valider pour passer à la suivante....comment faire pour ne pas voir apparaitre deux fois la meme question ??

t'aurais pas encore une autre idée en stock ??? :lol:

ViPHP
AB
ViPHP | 5818 Messages

20 sept. 2010, 15:20

Par exemple tu peux enregistrer les 10 résultats dans un tableau que tu met dans une variable de session. Ensuite tu liste ton tableau en affichant les éléments un par un.

Petit nouveau ! | 3 Messages

20 sept. 2010, 17:49

Merci de ta réponse AB

Je t'avoue que j'ai pas bien compris ce que tu voulais dire mais c'est certainement parce que je suis super debutant en php!! lol
pourrais tu être plus précis ? une fois que j'ai mis mes resultats dans une session, comment faire pour eviter que les memes questions ne resortent ??

merci de ton aide

ViPHP
AB
ViPHP | 5818 Messages

20 sept. 2010, 18:05

Ben si tu as tes questions dans un tableau il te suffit de faire par exemple
$question = array_shift($_SESSION['tableau']);
$question aura la valeur du premier élément du tableau et cette entrée sera supprimée du tableau.