IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Un algorithme d'affichage (en php/mysql)


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Par défaut Un algorithme d'affichage (en php/mysql)
    Bonjour,

    Mon problème concerne la construction d'un algorithme. Comme il doit être fait en PHP et MySQL j'ai posté ici.

    Je cherche un algorithme pour afficher deux images parmi un nombre indéfini d'images, sachant que toutes les images doivent se "rencontrer" le même nombre de fois. Je sais qu'à la fin, en fonction du nombre d'affichage simultané, il y en aura peut-être qui auront été affichées une fois ou deux de moins que les autres, mais ce n'est pas grave.

    Cet algorithme doit me permettre de gérer un petit concours : les utilisateurs s'inscrivent au concours en proposant une image. Moi, je voudrais, pour déterminer le gagnant, les afficher deux par deux. Les utilisateurs ont trois choix : je préfère l'image 1, je préfère l'image 2 ou égalité.
    Pour que le système soit équitable, il faut donc que toutes les images se rencontrent les unes avec les autres.

    Si je me contente de compter le nombre d'affichage d'une image, je suis sûr que les images seront évaluées le même nombre de fois, mais ça ne me garantit pas qu'elles se rencontreront toutes.

    Quelqu'un aurait-il une idée ?

    Merci d'avance

    Nico

  2. #2
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Essaye de faire une requete du type : 'SELECT * FROM `images` WHERE nb_affichages IN (SELECT MIN(nb_affichages) FROM `images`) LIMIT 2';

    Ensuite tu récupère les 2 id des images, tu les affiches et tu incrémente le nombre d'affichages par un UPDATE, ainsi il t'affichera toujours les images qui ont été le moins affichés

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Par défaut
    Salut Amoiraud,

    Avec ta solution, je suis sûr que toutes les images seront affichées le même nombre de fois, mais pas qu'elles se "rencontreront" toutes.
    Il me faudrait un système supplémentaire de tri dans le cas où plus de deux images auraient le même nombre d'affichage.

    Un exemple avec 4 images :
    1. image 1 affichage = 0
    2. image 2 affichage = 0
    3. image 3 affichage = 0
    4. image 4 affichage = 0

    Tour 1 :
    Si on ajoute un tri sur l'id ASC, on affiche image 1 et image 2

    1. image 1 affichage = 1
    2. image 2 affichage = 1
    3. image 3 affichage = 0
    4. image 4 affichage = 0


    Tour 2 :
    on affiche image 3 et image 4

    1. image 1 affichage = 1
    2. image 2 affichage = 1
    3. image 3 affichage = 1
    4. image 4 affichage = 1

    Tour 3 :
    On retombe sur le cas du tour 1 : on réaffiche image 1 et image 2

    Tour 4 :
    idem tour 2

    etc... je n'aurais eu que 2 sortes d'affichage : (1 et 2) et (3 et 4), au lieu de 6 (1 et 2) et (1 et 3) et (1 et 4) et (2 et 3) et (2 et 4) et (3 et 4)

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 62
    Par défaut
    Bonjour,

    Je pense que je vais devoir générer à l'avance toutes les combinaisons possibles, les insérer dans ma base de données avec un champs supplémentaire qui serait un compteur d'affichage. Comme ça je suis sûr de toutes les utiliser.

    Les combinaisons seraient faites ainsi :

    . dans un tableau les identifiants des images à afficher
    . deux boucles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for ($i = 0; $i<count($tabIdImages); $i++) {
         for ($j=$i+1; $j<count($tabIdImages); $j++) {
              array_push($tabResultat, array($tabIdImages[$i],$tabIdImages[$j]));
         }
    }
    2 points tout de même :
    . voir s'il n'y a pas erreur à la fin du tableau (quand $j = $i+1 >count($tabIdImages)
    . voir s'il n'est pas possible de "mélanger" le tableau avant l'insertion en base car ici, dans le cas de 12 images, l'image id=1 sera plus vue que l'image id=12.

    Je vous remercie par avance si vous avez des suggestions pour améliorer ceci !

    Nico

Discussions similaires

  1. [MySQL] problème affichage donnée php mysql
    Par tondeuz dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 22/06/2007, 12h16
  2. [Apache - Php -MySQL] Affichage incomplet des pages
    Par Tidalf dans le forum Apache
    Réponses: 8
    Dernier message: 29/09/2006, 17h13
  3. Affichage complexe(?) PHP-MySQL
    Par Lypertrophie dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/09/2006, 10h05
  4. [PHP/MySQL] Solution d'affichage image et vidéo
    Par cnguyen dans le forum Administration
    Réponses: 6
    Dernier message: 16/08/2006, 13h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo