[PHP] restrictions de la fonction Rand
12 messages • Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
[PHP] restrictions de la fonction Rand
en gros, je vais essayer de mettre des liens textes tradedoubler, cibleclick etc, en ciblant un max
pour me facilite la vie et mieux jongler avec les liens, j'ai cree une table sql, avec dans chaque rangée un ID et un champs CODE qui contient le code tradedoubler. Ensuite je remplis la table des differents codes que je veux afficher, et je fais appel a eux sur le site.
c'est la que ca coince.
je vais mettre par exemple 10 enregistrements, et, a l'aide de la fonction RAND, je n'en appelle que 3 (avec une boucle for)
la galere, c'est que les 2 memes pubs peuvent sortir! je voudrais ajouter une restriction qui dit que si l'enregistrement "n" est tiré au sort par la fonction rand, il ne doit pas l'etre une deuxiemen fois
quelqun a une idée?
A+!
.
pour me facilite la vie et mieux jongler avec les liens, j'ai cree une table sql, avec dans chaque rangée un ID et un champs CODE qui contient le code tradedoubler. Ensuite je remplis la table des differents codes que je veux afficher, et je fais appel a eux sur le site.
c'est la que ca coince.
je vais mettre par exemple 10 enregistrements, et, a l'aide de la fonction RAND, je n'en appelle que 3 (avec une boucle for)
la galere, c'est que les 2 memes pubs peuvent sortir! je voudrais ajouter une restriction qui dit que si l'enregistrement "n" est tiré au sort par la fonction rand, il ne doit pas l'etre une deuxiemen fois
quelqun a une idée?
A+!
J'ai eu le même idée de programme mais je l'ai jamais fini (enfin c'était un peu plus complet).
Pour te répondre la seule solution c'est une boucle while dans laquelle tu examine les choix déjà pris : attention si tu n'as que 2 bannières....ça tourne à l'infini !!
Pour te répondre la seule solution c'est une boucle while dans laquelle tu examine les choix déjà pris : attention si tu n'as que 2 bannières....ça tourne à l'infini !!
ke je comprenne bien, tu récupère dans la base 10 enregistrement, et ensuite avec php, tu veut en tirer 3 au sort ?
pas besoin de PHP, ni de while ni de truc partout
une seule requette MySql, et tu aura tes 3 enregistrements au hazard, sans doublon :
SELECT * FROM table ORDER BY RAND() LIMIT 3
pas besoin de PHP, ni de while ni de truc partout
une seule requette MySql, et tu aura tes 3 enregistrements au hazard, sans doublon :
SELECT * FROM table ORDER BY RAND() LIMIT 3
alors: ca fonctionne, mais, decidement, je trouve que le random n'est pas "logique"...trop souvent les memes repetitions pour pouvoir etre qu'une coincidence!
je sais qu'il y a une fonction srand ou un truc comme ca, pour initialiser la fonction hasard et qu'elle marche vraiment? mais comment l'utiliser dans une requete sql?
je sais qu'il y a une fonction srand ou un truc comme ca, pour initialiser la fonction hasard et qu'elle marche vraiment? mais comment l'utiliser dans une requete sql?
Bizarre en effet, car rien qu'en choisissant 3 éléments parmi 10, y'a déjà 120 combinaisons...
Perso, la fonction rand() de php a tjs fonctionné correctement chez moi, par contre je l'ai jamais utilisé dans une requête. Cela dit, il me semble me souvenir avoir vu une astuce pour contrer le phénomène que tu décris, mais je ne retrouve pas
Perso, la fonction rand() de php a tjs fonctionné correctement chez moi, par contre je l'ai jamais utilisé dans une requête. Cela dit, il me semble me souvenir avoir vu une astuce pour contrer le phénomène que tu décris, mais je ne retrouve pas
-

mahefarivony - WRInaute accro

- Messages: 11405
- Inscription: Lun Oct 14, 2002 10:00
Bobez a écrit:Perso, la fonction rand() de php
de php ou de mysql ?
doc MySql a écrit:Notez que la fonction RAND() dans une clause WHERE sera réévaluée à chaque fois que WHERE sera exécuté. RAND() n'est pas un générateur de nombres aléatoires parfait, mais reste une manière rapide de produire des nombres aléatoires ad hoc portables selon les différentes plate-formes pour une même version de MySQL.
autrement, tu peut toujour select tes 10 enregistrements comme avant
mais plutot ke ton system de boucle, utilise array_rand()
$result = array_rand($input, 3);
Ça y est, j'ai retrouvé ce dont je parlais, peut-être que cela résoudra ton problème (pas testé) :
- Code: Tout sélectionner
("SELECT * FROM table ORDER BY rand(" . time() . " * " . time() . ") LIMIT 3");
12 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- [PHP niveau facile] $agents[rand(0, count($agents))] !!!!
- Fonction PHP qui faut editer dans php.ini
- Restrictions extension .be?
- ajouter un rand
- function rand()
- [Résolu] RAND et Mysql
- prob avec les restrictions aux fichiers
- [MySQL] tirage aléatoire via ORDER BY rand()
- fonction en PHP
- fonction php
- fonction php : syntaxe
- Fonction substr PHP
- Fonction SUM PHP
- Fonction PHP : checkdnsrr
- [php] Fonction plus rapide ?
Consultez la description détaillée des produits ou services de Google suivants : Google Related Links
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités





le forum