Roation de bannière avec MYSQL et PHP

Eléphant du PHP | 75 Messages

01 déc. 2007, 16:54

Bonjour à tous et à toutes,

Je viens aujourd'hui vous demander un peu d'aide pour la création d'un de mes scripts.

J'ai une table dans ma base de donnée qui s'appelle banniere_tbl et où son stockées toutes les bannières de mes membres.

Ce que j'aimerais faire c'est un script que j'inclus dans le header et qui choisirait dans la table banniere_tbl une bannière au hasard afin de l'afficher.

Et ça, je sais pas faire!

^^

Merci de votre aide...

Le site où la bannière doit s'afficher, en haut dans le header (j'y ai mis une bannière quelconque pour vous montrer où cela doit s'afficher):

http://www.volkteam.powa.fr/vkxadvert/

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 déc. 2007, 17:00

Une simple requête basée sur ... ORDER BY RAND() LIMIT 1 ferait l'affaire.

Je déplace dans un forum plus approprié => "SQL"

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 881 Messages

01 déc. 2007, 17:04

Ce me semble assez simple:
Tu comptes combien t'as d'enregistrements mysql_numrows ,
puis tu choisis une valeur alétoire: rand (0, nb_dEnreg)
Tu fais ensuite un SELECT ... .... LIMIT valeur_choisie, 1
Puis tu affiches.


Ces liens peuvent t'aider

http://ca3.php.net/manual/fr/function.rand.php
http://ca3.php.net/manual/fr/function.msql-num-rows.php
Soyez artisans de paix

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

01 déc. 2007, 17:07

N'utilise pas num_rows() pour connaitre le nombre d'enregistrement, ça revient à lire tout un livre pour savoir combien il a de pages ! Pour connaître le nombre d'enregistrements il faut utiliser un COUNT(*) tout simple

Code : Tout sélectionner

SELECT COUNT(*) AS total FROM matable
Je déconseille également d'utiliser de grosse valeur pour LIMIT/OFFSET, parce que ça force MySQL à lire les enregistrements précédents.

ORDER BY RAND() a le meilleur rapport simplicité/performance.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

01 déc. 2007, 17:11

Et c'est également très évolutif puisque dans tous les scripts d'affichage de publicités que j'ai vu utilisent cette manière de faire, même en cas de capping (limite d'affichage de publicité pour un visiteur pour une période)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 75 Messages

01 déc. 2007, 17:46

Merci à tous pour vos réponses très pertinentes. Celles-ci m'aideront sans nul doute à créer mon script.

Bonne journée.

:P