Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2735 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL + PHP ] - Tirage aleatoire dans une db?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL + PHP ] - Tirage aleatoire dans une db?

n°126318
SquiiiD
be cool !
Posté le 15-04-2002 à 21:18:47  profilanswer
 

Bonjour ,  
je sais qu'il est possible de tirer des enregistrement aleatoire mais je trouve pas comment...  
en fait je voudrais tirer 4 enregistrement au hasard d'une table ... et il ne doivent pazs se suivre... comment faire ca en une requete? ou faut il un algo combiner a du php? merci

mood
Publicité
Posté le 15-04-2002 à 21:18:47  profilanswer
 

n°126343
SquiiiD
be cool !
Posté le 15-04-2002 à 21:43:13  profilanswer
 

[:yoyoz]

n°126370
Enzut
Posté le 15-04-2002 à 22:24:58  profilanswer
 

En SQL, je suis quasi certain que c'est impossible...  Maintenant, si t'as un champ qui s'incrémente tout seul (un entier différent pour chaque enregistrement quoi), t'as qu'à tirer un nombre au hasard en PHP (inférieur au nombre le plus grand enregistrer dans ta table), rechercher l'info correspondant au nombre (select * from table where num = $auhasard) et faire ça jusqu'à ce que trouves 4 enregistrements valides...

n°126376
SquiiiD
be cool !
Posté le 15-04-2002 à 22:28:59  profilanswer
 

oui c ce ke jai fait pour finir mais jai du couiller avec le LIMIT car les nombnres de la clef primaire 'id'  ne se suivent pas tjrs  
 
1
3
4
5
 
8
 
9
 
13
 
etc..  a+

n°126385
Enzut
Posté le 15-04-2002 à 22:32:55  profilanswer
 

Bah, ils ne se suivent pas toujours car c'est un champ qui s'incrémente tout seul...  Donc, si tu ajoutes 23 éléments, et que tu effaces le 12iem, les autres gardent leur ID (c'est le concepte d'identifiant stable)...  donc en effet, ta table sera composée de 22 éléments donc l'ID max sera 23...  Fait donc d'abord une première requête pour trouvé l'id le plus grand, tire un nombre au hasard entre 1 et max, fait une recherche dans la base.  Si elle aboutit, c'est que l'élément est dans la table et donc qu'il vient d'être tiré au sort, si la requête ne renvoit rien, c'est que l'élément n'existe plus et donc, il faut recommencer...
 
Un autre solution consiste à utiliser un très mauvais SGBD incapable de donner une réponse correcte, mais la, bonne chance  :pt1cable:

n°126393
SquiiiD
be cool !
Posté le 15-04-2002 à 22:36:31  profilanswer
 

non ce que j'ai fait c'est que j'ai compter le nombre d'enregistrement
 
SELECT COUNT(id) ...
 
puis jai fait  SELECT champ1 FROM table LIMIT $rnd,1
 
pis grace a d'autre champ ke je change justement avec un update y a pas 2 fois le meme qui sort
 
je savais le faire mais j'esperait trouver une requete pour simplifier :)  
merci kan meme a+

n°126429
Sh@rdar
Ex-PhPéteur
Posté le 16-04-2002 à 00:24:42  profilanswer
 

RAND(N)  
Returns a random floating-point value in the range 0 to 1.0. If an integer argument N is specified, it is used as the seed value:  
mysql> select RAND();
        -> 0.5925
mysql> select RAND(20);
        -> 0.1811
mysql> select RAND(20);
        -> 0.1811
mysql> select RAND();
        -> 0.2079
mysql> select RAND();
        -> 0.7888
 
You can't use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times. In MySQL Version 3.23, you can, however, do: SELECT * FROM table_name ORDER BY RAND() This is useful to get a random sample of a set SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000. Note that a RAND() in a WHERE clause will be re-evaluated every time the WHERE is executed.


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL + PHP ] - Tirage aleatoire dans une db?

 

Sujets relatifs
[PHP] - Voir la vitesse de generation d'un page par le serveur[PHP] - Supression de fichiers...
[ PHP ] - Trouver la taille d'un fichier distant[PHP] Faire connaître son application distribuée
[PHP]depasser la limite en upload[PHP] ascii ---> caractere html
[PHP] Session + free.frQuestion PHP debutant
[PHP] Expression reguliere[Javascript + PHP] Arreter l'interpretation d'un script PHP
Plus de sujets relatifs à : [SQL + PHP ] - Tirage aleatoire dans une db?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR