Petit problème avec "rand" [Résolu] - PHP - Programmation
Marsh Posté le 18-02-2009 à 15:12:02
tu as un problème de limite...
essaie rand(1,$nb_photos);
Sinon, mets uniquement une photo, puis deux pour vérifier le bon fonctionnement
Marsh Posté le 18-02-2009 à 15:25:28
Salut jagstang, j'ai essayé avec rand(1,$nb_photos); mais j'ai le même soucis...
Et j'ai également essayé avec une seule photo, puis deux, mais ça me fait la même chose.
Peut-être que ça vient du temps d'exécution du script ? La photo n'est peut être pas sélectionnée avant l'affichage de la page ?
J'ai ajouté ce script à ma page faisant un include.
Marsh Posté le 18-02-2009 à 15:29:25
J'ai testé en mettant directement le script dans la page (sans passer par un include), mais le problème est toujours là... ;-(
Marsh Posté le 18-02-2009 à 15:30:32
macgawel a écrit : |
Sinon, pour rester sur ton code :
Code :
|
Marsh Posté le 18-02-2009 à 15:49:16
Quelques remarques :
1)
Code :
|
Tu demande à mysql de tout t'envoyer juste pour compter le nombre de photos? Avec ce genre de solution, il ne faut pas t'étonner si ton serveur devient lent. A la place, fais simplement un "select count(*)" et regardes la valeur retourné par mysql. Ca sera beaucoup plus rapide.
2) limit 0,1 => on saute zéro ligne et on en retourne une (on retourne la première)
limit 5,1 => on saute cinq lignes et on en retourne une (on retourne la sixième)
limite 5,2 => on saute cinq lignes et on en retourne deux (on retourne les sixième et septième lignes)
Par conséquent, il faut faire un rand(0,$nb_photos-1); si on veut utiliser le résultat du rand dans la requête.
3)
Code :
|
Avec MYSQL, tu peux résumer tout cet enchainement en un :
Code :
|
Attention, solution à n'utiliser que sur des tables de taille moyennes à petite (devient lent quand on a un grand nombre de lignes).
4) Le coup du array_rand proposé par macgawel est valable quand on a déjà les données dans un tableau, mais dans le cas présent, ça nécessite de récupérer toutes les données de la table (ce que tu fais déjà pour ton décompte) et de tout copier dans un tableau. Tout ça prend du temps et consomme de la mémoire.
Marsh Posté le 18-02-2009 à 15:56:17
omega2 a écrit : 4) Le coup du array_rand proposé par macgawel est valable quand on a déjà les données dans un tableau, mais dans le cas présent, ça nécessite de récupérer toutes les données de la table (ce que tu fais déjà pour ton décompte) et de tout copier dans un tableau. Tout ça prend du temps et consomme de la mémoire. |
Je suis parti de l'existant, et quitte à passer un mysql_query("SELECT..." ), et sachant qu'on aura besoin de récupérer l'image (ou son adresse), je me suis dit que tant qu'à faire...
Et au moins c'est standard, pas comme le SELECT... ORDER BY RAND() LIMIT 1
Marsh Posté le 18-02-2009 à 15:57:30
Merci omega pour toutes ces précisions, le problème semble résolu !
Marsh Posté le 18-02-2009 à 14:39:10
Salut à tous,
J'affiche sur mon site une photo aléatoire sur la page d'accueil grâce à la fonction "rand" de php.
Ça fonctionne très bien, sauf que parfois, aucune photo ne s'affiche.
De quoi cela peut-il provenir ?
Voici mon code :
Merci par avance !
Message édité par Ben-o le 18-02-2009 à 15:57:49