2 resultats aleatoires parmi 4 selectionnes

2 resultats aleatoires parmi 4 selectionnes - PHP - Programmation

Marsh Posté le 13-02-2007 à 13:21:47    

Bonjour tout le monde,
 
j'explique mon sujet :)
 
j'ai une table qui contient des evenements, j'aimerais toujours afficher de maniere aleatoire 2 resultats parmi les 4 prochains evenements mais je n'y parviens pas :(
 
si j'utilise "ORDER BY RAND() LIMIT 2" il va bien m'afficher 2 resultats aleatoires MAIS de TOUS les evenement, or moi je veux que ca soit d'uniquement les 4 prochains...
 
Merci de votre aide.
Reda
 
 

Reply

Marsh Posté le 13-02-2007 à 13:21:47   

Reply

Marsh Posté le 13-02-2007 à 13:24:37    

Tu sélectionnes les 4 prochains, et ensuite tu rand() en PHP ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 13-02-2007 à 13:55:59    

tu peux donner un second argument à Limit... soit limit [valeur de la ligne de départ], [valeur de l'incrément]..
 
Extrait de la doc :
SELECT [STRAIGHT_JOIN]
       [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
       [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
       [DISTINCT | DISTINCTROW | ALL]
    select_expression,...
    [INTO {OUTFILE | DUMPFILE} 'nom_fichier' export_options]
    [FROM table_references
      [WHERE where_definition]
      [GROUP BY {unsigned_integer | nom_de_colonne | formula} [ASC | DESC], ...
      [HAVING where_definition]
      [ORDER BY {unsigned_integer | nom_de_colonne | formula} [ASC | DESC] ,...]
      [LIMIT [offset,] lignes]
      [PROCEDURE procedure_name(argument_list)]
      [FOR UPDATE | LOCK IN SHARE MODE]]
 
vla

Reply

Marsh Posté le 13-02-2007 à 14:02:03    

ceci dit "order by rand()" est à éviter quand c'est possible, c'est particulièrement mauvais niveau perfs


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 13-02-2007 à 14:16:45    

merci pour vos reponses...
comment je peux rand() en PHP des resultats?? j'utilise generalement rand() pour generer un nombre aleatoire... mais là j'avoue que je ne sais pas cmt je peux l'utiliser avec un mysql_fetch_array ou row!!

Reply

Marsh Posté le 13-02-2007 à 14:31:15    

Code :
  1. $rows = array();
  2.  
  3. while ($rows[] = mysqli_fetch_assoc()) {}
  4.  
  5. $rand_keys = array_rand($rows, 2);
  6.  
  7. foreach ($rand_keys as $rand_key) {
  8.  $row = $rows[$rand_key]
  9.  // ...
  10. }


 
Par exemple.


Message édité par sielfried le 13-02-2007 à 14:34:56

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 13-02-2007 à 15:25:51    

OK, merci bp :)
quel est la dif entre fetch_array et fetch_assoc?? et a quoi sert le 'i' de mysqli_* ?
 
merci

Reply

Marsh Posté le 13-02-2007 à 18:47:26    

mysqli c'est en gros comme mysql, mais c'est mieux, c'est compatible avec les dernières versions de MySQL et surtout on peut enfin utiliser des prepared statements. :o
 
http://fr.php.net/mysqli pour les détails.
 
Sinon la seule différence entre assoc et array c'est qu'avec assoc tu n'as accès qu'aux colonnes avec $row['nom_colonne'] et pas avec $row[numéro_colonne] aussi (tu peux simuler ce comportement avec la version "array" aussi ceci dit). Il me semble qu'il y a aussi un gain minime en perf (en tout cas c'était le cas avec l'extension mysql), mais bon... :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 14-02-2007 à 10:19:36    

OK cool, merci infiniment de ton (votre) aide ainsi que pour tes informations... :)
 
@ bientot

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed