Sur mon site, j'ai un menu qui contient les liens vers les sites de mes partenaires.
J'aimerai afficher ces liens en ordre aléatoire, mais influencé par le nombre de visiteurs que ces sites m'envoie.
J'ai donc, sur ma base de données, une table partenaires avec les champs suivants:
-nom (nom du partenaire)
-url (adresse du site du partenaire)
-nbrentrees (le nombre de visiteurs envoyés par le partenaire)
-place (la place aléatoire dans le menu)
A chaque fois que le menu est affiché: une requête change la valeur du champ place en une valeur aléatoire comprise entre 0 et nbrentrees pour chaque ligne de la table partenaires.
Puis j'affiche les liens du menu en ordre croissant du champ place.
Mais je me demande si cette façon de procéder n'est pas trop gourmande en requêtes.
Si oui, y a t'il une autre façon de faire?
J'espère avoir réussi à bien expliquer ma question.
En vous remerciant par avance
Effectivement la méthode sera peut-être un peu trop gourmande en requêtes, surtout si tu fais une mise à jour de la table chaque fois que la page est affichée (un petit malin pourrait garder le doigt appuyé sur F5 et surcharger ton SGBD ).
Une solution plus simple serait de placer le calcul de la place directement dans le SELECT qui va chercher les partenaires lors de l'affichage de la page :
SELECT nom, url, nbrentrees, (nbrentrees * RAND() ... etc) AS place
FROM partenaires
Tu évites de faire des mises à jour répétées (et tu gagne une colonne dans ta table)
A+,
"'But I don't want to go among mad people,' said Alice. 'Oh, you can't help that,' said the cat. 'We're all mad here.'" Lewis Carroll
mysql_query("SELECT nom, url, nbrentrees, nbrentrees*RAND() AS place FROM partenaires WHERE nbrentrees >= 1 ORDER BY place);
Merci Misterdi
Affichage de champs en ordre aléatoire
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
"'But I don't want to go among mad people,' said Alice. 'Oh, you can't help that,' said the cat. 'We're all mad here.'" Lewis Carroll