Interroger une bdd aleatoirement

wadpap13 Messages postés 67 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 22 mars 2009 - 6 juin 2007 à 15:06
wadpap13 Messages postés 67 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 22 mars 2009 - 6 juin 2007 à 16:15
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

cs_putch Messages postés 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
6 juin 2007 à 15:26
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 ^^
0
wadpap13 Messages postés 67 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 22 mars 2009
6 juin 2007 à 15:37
En fait, tu le serais plus si tu donnais un petit exemple...

Merci pour ton aide en tout cas !!
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 9
6 juin 2007 à 15:44
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+
0
wadpap13 Messages postés 67 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 22 mars 2009
6 juin 2007 à 15:49
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_putch Messages postés 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
6 juin 2007 à 15:52
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

++
0
wadpap13 Messages postés 67 Date d'inscription mercredi 14 février 2007 Statut Membre Dernière intervention 22 mars 2009
6 juin 2007 à 16:15
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
0