Interroger une bdd aleatoirement

Signaler
Messages postés
67
Date d'inscription
mercredi 14 février 2007
Statut
Membre
Dernière intervention
22 mars 2009
-
Messages postés
67
Date d'inscription
mercredi 14 février 2007
Statut
Membre
Dernière intervention
22 mars 2009
-
Bonjour à tous !!

Je souhaite interrogé ma bdd de manière aleatoire en fonction d'un ID.
Imaginons une table avec des clients, je souhaiterais selectionnée une rangée de facon aleatoire et apres faire une sorte de boucle pour continuer a interroger ma table mais en invitant de relire les rangées deja selectionnées.

Merci d'avance pour votre aide !!!

6 réponses

Messages postés
624
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2009
1
salut !

rand() pour l'aléatoire
ensuite tu stocke les ID parcouru au fur et a mesure dans un tableau en vérifiant que l'ID sorti n'est pas dans le tableau

++

ps : je saispas si je suis clair ^^
Messages postés
67
Date d'inscription
mercredi 14 février 2007
Statut
Membre
Dernière intervention
22 mars 2009

En fait, tu le serais plus si tu donnais un petit exemple...

Merci pour ton aide en tout cas !!
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut,

L'idée de putch est tout à fait viable... Je veux juste en présenter une autre, l'utilisation de la fonction rand() coté MySQL :

SELECT * FROM clients ORDER BY rand()

C'est une autre solution qui a le mérite de ne pas faire de boucle en PHP et limite donc à une seule requête SQL

A+
Messages postés
67
Date d'inscription
mercredi 14 février 2007
Statut
Membre
Dernière intervention
22 mars 2009

Ok j'ai compris je te remercie. Pendant que j'y suis j'en profite :

Pour chaque client selectionné j'ai des modifs à effectuer sur la table. Donc est ce que ta requete me selectionne bien 1 seule rangée à la fois ? Et est ce je peux faire une boucle pour dire : je selectionne une ligne aleatoirement, je fais une modif, une fois qu'elle est faite, j'en reselectionne une aleatoirement (sauf celles deja prises evidemment)...

Merci pour votre aide !
Messages postés
624
Date d'inscription
mardi 6 mai 2003
Statut
Membre
Dernière intervention
14 décembre 2009
1
je pensai à ta version en faite ^^

$tab_parcouru = array();

for ( $i = 0 ; $i < 5 : $i++ )
{
    $r = mysql_query(SELECT * FROM clients ORDER BY rand());
    $client = mysql_fetch_assoc($r);

    if ( !in_array($client['id'], $tab_parcouru) )
       $tab_parcouru[] = $client['id'];
    else
       $i--;   //   pour sortir avec forcement 5 clients
}

// tu sors avec les ID aléatoires de ta table client dans $tab_parcouru

voila un exemple

++
Messages postés
67
Date d'inscription
mercredi 14 février 2007
Statut
Membre
Dernière intervention
22 mars 2009

Ok merci pour ton exemple que je comprends à moitié vu mon niveau...

Voici quel est mon code : Aurais tu une idée de comment je pourrais l'appliquer ici ?

<link rel="stylesheet" media="screen" type="text/css" title="index" href="../../../../../../../Design.css" />


<form action="affich.php" method="post">


<?php


$compteur = 0;
echo $compteur;


mysql_connect("localhost","root","");  // Connexion à MySQL
mysql_select_db("poliut"); // Sélection de la base coursphp


$reponse = mysql_query("SELECT * FROM question ORDER BY rand() LIMIT 1");


while ($donnees = mysql_fetch_array($reponse) )
{


?>


// afficher la question dans la bdd


<fieldset>
     <legend>Question</legend>
 
              ----
Sujet :, '>,
         ----
Réponse A :, '>, Réponse B :, '>,
  ----
Réponse C :, '>, Réponse D :, '>,
 

</fieldset>




</form>
                                                      
</html>


<?php




// Ce qu'il se passe suivant le bouton que le joueur à appuyer
switch ($_POST['rep']) {
      // si rep => rep_a
      case $donnees['rep_a']:
            if ($donnees['rep_a'] == $donnees['rep_good']){
    $compteur++;
    echo $compteur;
   } else echo 'vous avez perdu';
   break;


      // si rep => rep_b
      case $donnees['rep_b']:
            if ($donnees['rep_b'] == $donnees['rep_good']){
    $compteur++;
    echo $compteur;
   } else echo 'vous avez perdu';
   break;


      // si rep => rep_c
      case $donnees['rep_c']:
            if ($donnees['rep_c'] == $donnees['rep_good']){
    $compteur++;
    echo $compteur;
   } else echo 'vous avez perdu';
   break;


      // si rep => rep_d 
   case $donnees['rep_d']:
            if ($donnees['rep_d'] == $donnees['rep_good']){
    $compteur++;
    echo $compteur;
   } else echo 'vous avez perdu';
   break;


}
?>


 


<?php
}


 


 


mysql_close(); // Déconnexion de MySQL
?>

MERCI ENCORE