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

Langage PHP Discussion :

[Tableaux] Trier un tableau par note moyenne


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut [Tableaux] Trier un tableau par note moyenne
    Salut !

    J'ai un tableau récapitulatif de films comprenant :
    - un numéro (initialisé à un et incrémenté de 1 pour chaque ligne affichant un film)
    - le titre du film (tiré de ma base de données)
    - le genre du film (provenant toujours de la base)
    - le pays d'origine (de la base)
    - la note moyenne du filme (je compte le nombre de votants, j'additionne toutes les notes, ensuite je divise le chiffre total par le nombre de votant)

    En ce qui concerne le tri traitant des infos récupérées dans la base de données : aucun problème. Par contre, je cherche une solution pour trier selon la note. Le problème est que la note moyenne est une donnée calculée (donc ne doit pas être présente dans la base de données). De ce fait, je ne peux pas procéder de la même manière qu'avec les données de ma base...

    Quelqu'un aurait-il une solution svp ?

    Merci d'avance...

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    utilise la fonction usort pour trier simplement un array php. Voici un exemple tiré du manuel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    function compare($a, $b)
    {
        if ($a == $b) {
          return 0;
        }
        return ($a > $b) ? -1 : 1;
    }
     
    $a = array (3, 2, 5, 6, 1);
     
    usort ($a, "compare");
     
    foreach ($a as $key => $value) {
        echo "$key: $value\n";
    }
    ?>

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Je vois deux solutions :
    1) Tu récupères toutes les données dans un tableau sans afficher, tu tries le tableau puis tu affiches (voir ci-dessus).
    2) Tu fais ton calcul de moyenne en SQL et tu tries dans la foulée dans la requête.

  4. #4
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Merci pour vos réponses.

    Le problème est que mon tableau n'est pas "en dur". Il est généré à la volée grâce à une boucle et une requête SQL. De ce fait, il faut que je trouve un moyen de remplir ma variable (en l'occurence $a) avec l'ensemble des notes affichées dans le tableau.

    Serait-ce une solution raisonnable de concaténer les notes dans une même variable (en séparant les notes par un "-" par exemple) et de les soustraire ensuite pour les comparer svp ?

    Merci d'avance...

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Tu stockes chaque note dans la bdd ? Sinon, il vaut mieux stocker la moyenne + le nombre de votants (pour calculer la nouvelle moyenne lors d'un nouveau vote).

  6. #6
    Membre éclairé Avatar de Jiraiya42
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    671
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 671
    Par défaut
    Citation Envoyé par vg33 Voir le message
    Tu stockes chaque note dans la bdd ? Sinon, il vaut mieux stocker la moyenne + le nombre de votants (pour calculer la nouvelle moyenne lors d'un nouveau vote).
    Merci pour ta réponse.

    C'était ce que je faisais avant, dans une base de données il ne doit pas y avoir de données calculées et la note moyenne en est une. C'est pour cela que je cherche une autre solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Trier un tableau par clé par ordre alphabétique
    Par pmithrandir dans le forum Langage
    Réponses: 3
    Dernier message: 20/08/2008, 14h00
  2. [Tableaux] Tableau de notes + moyenne
    Par lordbdp dans le forum Langage
    Réponses: 4
    Dernier message: 19/03/2007, 22h34
  3. [Tableaux] Trier un tableau comme avec ORDER BY DESC
    Par Anduriel dans le forum Langage
    Réponses: 28
    Dernier message: 08/12/2005, 18h50
  4. Trier un tableau par rapport à un autre tableau
    Par deaven dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 02/05/2005, 09h27
  5. Trier un tableau par ordre croissant
    Par Halleck dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 01/11/2004, 00h04

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