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 :

Afficher une liste de résultats triés et dédoublonnée


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Par défaut Afficher une liste de résultats triés et dédoublonnée
    Bonjour,

    Je cherche à créer une liste déroulante (capacité d'hébergement) à partir d'un foreach.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach($this->listProduct as $produit)
    {
    	$capacite = $produit['nbrecapacite'];
    	echo '<option value="'.$capacite.'">'.$capacite.' personnes</option>';
    }
    Je n'arrive pas à dédoublonner et à trier les résultats. Soit je crée un array dans le foreach et il me crée autant d'array que de $capacite, soit je sors du foreach et je n'ai qu'une seule donnée. C'est surement tout bête mais je n'y arrive pas.
    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tes données proviennent d'une base de données, il serait peut être plus intéressant d'obtenir la liste unique à ce niveau là.

    Sinon il y a toujours moyen de recomposer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach($this->listProduct as $value) {
            $arCapacite[] = $value['nbrecapacite'];
    }
    $arCapacite = array_unique($arCapacite);
     
    foreach($arCapacite as $capacite) {
    	echo '<option value="'.$capacite.'">'.$capacite.' personnes</option>';
    }
    Je ne sais pas si array_unique est plus ou moins performant par rapport à d'autre écriture qu'on peut imaginer.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Par défaut
    C'est nikel, merci beaucoup. A la relecture du code, c'est logique.
    Par contre, le dédoublonnage a parfaitement fonctionné, mais comment maintenant trier mes résultats. J'essaie avec sort mais je n'y arrive pas non plus :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <option value="4">4 personnes</option>
    <option value="4/6">4/6 personnes</option>
    <option value="2">2 personnes</option>
    <option value="6">6 personnes</option>
    <option value="5">5 personnes</option>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    J'ai fais des mesures, array_unique est trop lent.
    Il vaut mieux faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach($this->listProduct as $value) {
            $arCapacite[$value['nbrecapacite']] = TRUE;
    }
    $arCapacite = array_keys($arCapacite);
    sort($arCapacite);
     
    foreach($arCapacite as $value) {
    	echo '<option value="'.$value.'">'.$value.' personnes</option>';
    }
    Par contre pour le tri, avec des entrées comme "4/6" tu vas avoir des surprises.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Par défaut
    C'est clair que je vais avoir des surprises. Peut-être que je ne garderai que le premier ou que le dernier. De toutes façons pour un gite, c'est 4 ou 6 personnes, c'est pas les 2. Enfin...

    Par contre, j'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <b>Warning</b>:  Illegal offset type in <b>.../default.php</b> on line <b>171</b><br />
    C'est au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $arCapacite[$value['nbrecapacite']] = TRUE;

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($this->listProduct as $value) {
            var_dump($value['nbrecapacite']);
            $arCapacite[$value['nbrecapacite']] = TRUE;
    }
    et me donner le retour que tu as avant l'erreur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. tri sur une liste de résultats calculés
    Par pierrickgosselin dans le forum Excel
    Réponses: 2
    Dernier message: 11/04/2014, 20h52
  2. Quel objet utiliser pour afficher une liste de plusieurs résultats
    Par jlachapelle dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/08/2008, 20h33
  3. Afficher une liste, avec 2 résultats par ligne
    Par toutoune60 dans le forum JSF
    Réponses: 5
    Dernier message: 12/02/2007, 15h49
  4. Réponses: 4
    Dernier message: 10/11/2006, 15h33
  5. [VB]Ja'imerais afficher une liste d'éléments...
    Par STRUFIELD dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/01/2006, 18h49

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