Selectionner un champ dans mysql au hasard

Forum de développements privés.

Modérateur: Equipe

Règles du forum
A lire impérativement sur notre page : Règlement

Selectionner un champ dans mysql au hasard

Messagepar CoMpaX » 21 Déc 2004 à 23:19

Bonjour!
Voila je voudrais savoir s'il existe une requete permettant de choisir aléatoirement un champ dans une table.
Merci d'avance.
Avatar de l’utilisateur
CoMpaX
Roi des posts
Roi des posts
 
Messages: 965
Enregistré le: 04 Sep 2004 à 15:33

Messagepar Dr DLP » 22 Déc 2004 à 00:16

Un résultat d'un champ oui, un champ non.
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Enregistré le: 05 Mar 2003 à 23:49
Localisation: Var ( 83 )

Messagepar CoMpaX » 22 Déc 2004 à 00:19

qu'est ce que tu appels le résultat d'un champ?
et comment fait on cela?
Avatar de l’utilisateur
CoMpaX
Roi des posts
Roi des posts
 
Messages: 965
Enregistré le: 04 Sep 2004 à 15:33

Messagepar Dr DLP » 22 Déc 2004 à 00:52

Un exemple avec phpbb_users :
user_id est un champ de même que username.
2 (id de l'admin) est le résultat d'une requête sur le champ user_id.

Pour choisir user_id au hasard :
Code: Tout sélectionner
$sql= " SELECT user_id FROM phpbb_users ORDER BY rand() LIMIT 1";

Ceci ordonne aléatoirement tous les résultats de user_id et prend le premier.
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Enregistré le: 05 Mar 2003 à 23:49
Localisation: Var ( 83 )

Messagepar Ani' » 22 Déc 2004 à 01:07

8O j'avais jamais pensé à faire un order by rand 8O
en général je récupere tout avec un fetchrowset, puis je sélectionne une ligne au hasard... ce qui fait une requete beaucoup plus longue... pour rien !

Merci Doc :D

++ Ani'
----
Avatar de l’utilisateur
Ani'
Dieu des floodeurs
Dieu des floodeurs
 
Messages: 6055
Enregistré le: 01 Juin 2003 à 00:07
Localisation: 127.0.0.1

Messagepar Babacooll » 22 Déc 2004 à 09:22

top cool Doc :)

Ca ca va me servir :-)

Je faiais aussi comme Ani' ^^
Avatar de l’utilisateur
Babacooll
Floodeur expérimenté
Floodeur expérimenté
 
Messages: 1889
Enregistré le: 20 Déc 2003 à 15:45
Localisation: Belgique

Messagepar CoMpaX » 22 Déc 2004 à 11:57

non ce n'est pas ca que je voudrais

ce serait plutot choisir entre username et user_id au hasard

$sql= " SELECT rand() FROM phpbb_users LIMIT 1";

ca ne pourrait pas marcher ca?
Avatar de l’utilisateur
CoMpaX
Roi des posts
Roi des posts
 
Messages: 965
Enregistré le: 04 Sep 2004 à 15:33

Messagepar Babacooll » 22 Déc 2004 à 12:27

fait ca:
Code: Tout sélectionner
$prop = '2';
$propo[1] = "username";
$propo[2] = "user_id";
srand((double)microtime()*1000000);
$choix = rand(1,$prop); 
$sql= " SELECT " . $propo[$choix] . " FROM phpbb_users LIMIT 1"; 
Avatar de l’utilisateur
Babacooll
Floodeur expérimenté
Floodeur expérimenté
 
Messages: 1889
Enregistré le: 20 Déc 2003 à 15:45
Localisation: Belgique

Messagepar Dr DLP » 22 Déc 2004 à 13:38

ce serait plutot choisir entre username et user_id au hasard

$sql= " SELECT rand() FROM phpbb_users LIMIT 1";

ca ne pourrait pas marcher ca?

Nope, rand() retourne un résultat numérique.

Quitte à utiliser PHP, autant faire une boucle sur tous les champs :
Code: Tout sélectionner
$sql = "SELECT * FROM phpbb_users WHERE user_id = 2";
$res = mysql_query($sql);
$num_fields = mysql_num_fields($res);

$fields = array();
for ( $i = 0; $i < $num_fields; $i++ )
{
$fields[] = mysql_field_name($res, $i); 
}

A ce stade $fields est un tableau contenant le nom de tous les champs de la table.
Il ne reste plus qu'à en choisir un au hasard :
Code: Tout sélectionner
$field = $fields[rand(0, $num_fields)];
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Enregistré le: 05 Mar 2003 à 23:49
Localisation: Var ( 83 )

Messagepar CoMpaX » 22 Déc 2004 à 14:34

merci docteur ;)
c'est combien la consultation ? :P
Avatar de l’utilisateur
CoMpaX
Roi des posts
Roi des posts
 
Messages: 965
Enregistré le: 04 Sep 2004 à 15:33

Messagepar Dr DLP » 22 Déc 2004 à 14:40

Il est interdit de faire payer des informations médicales virtuelles :P

Qu'est ce que tu vas faire de ceci?
Je n'en vois pas d'application en fait, et je ne vois pas non plus comment tu peux traiter des données dont tu ne sais pas le type.
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Enregistré le: 05 Mar 2003 à 23:49
Localisation: Var ( 83 )

Messagepar CoMpaX » 22 Déc 2004 à 14:45

j'en aurais surement besoin pour mon mod un peut dans le style rpg: football manager (cf ma signature)
tu en sauras plus des que je l'aurais terminé mais bon ce sera pas tout de suite car je pars en vacances pour 2 semaines demain :P
Avatar de l’utilisateur
CoMpaX
Roi des posts
Roi des posts
 
Messages: 965
Enregistré le: 04 Sep 2004 à 15:33

Messagepar Genova » 22 Déc 2004 à 15:37

Dr DLP a écrit:Un résultat d'un champ oui, un champ non.

il est possible de selectionner un champs, il suffit de recuperer les donnes avec mysql_fetch_row() et de faire un rand() dans les indices du tableau.

Autrement merci pour l'astuce du RAND() en SQL, je l'avais oublie celle la.
Avatar de l’utilisateur
Genova
Pistolero des MODs
 
Messages: 7593
Enregistré le: 18 Nov 2003 à 18:45
Localisation: En train de programmer, logique non?


Retourner vers Développements privés

 


  • Articles en relation
    Réponses
    Vues
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité