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 :

Comment ordonner un tableau ?


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut Comment ordonner un tableau ?
    Bonjour,

    je désire ordonner alphanumériquement les éléments qui seront plubliés par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php foreach ($this->searchareas['search'] as $val => $txt) :
    J'ai bien essayé de glisser maladroitement un sort() mais ça n'a pas marché...

    Un conseil ?

  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
    Comment as-tu utilisé sort() ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Mal visiblement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php foreach (sort($this->searchareas['search']) as $val => $txt) :

  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
    C'etait audacieux comme syntaxe, mais sort() renvoit TRUE et non pas un tableau trié.
    Il faut donc faire le sort() avant.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    J'ai essayé avant en cherchant autour de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    		//Set the search areas
    		$areas = JRequest::getVar('areas');
    		$this->setAreas($areas);
    Mais je n'ai rien trouvé...

  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
    il est ou ton sort() la ?
    Quand je dis "avant", une ligne au dessus suffit hein.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    J'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $tri = $this->searchareas['search'];
    		sort($tri);
     
    		foreach ($tri as $val => $txt) :
    			$checked = is_array( $this->searchareas['active'] ) && in_array( $val, $this->searchareas['active'] ) ? 'checked="checked"' : '';
    		?>
    		<input type="checkbox" name="areas[]" value="<?php echo $val;?>" id="area_<?php echo $val;?>" <?php echo $checked;?> />
    			<label for="area_<?php echo $val;?>">
    				<?php echo JText::_($txt); ?>
    			</label>
    		<?php endforeach; ?>
    Ça trie effectivement
    Mais il n'y a plus aucun résultat à la recherche !

  8. #8
    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
    C'est quoi "la recherche" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    En fait ce bout de code correspond aux checkboxes (cf image) pour restreindre la recherche Joomla. Ce sont elles que je souhaite classer.
    Images attachées Images attachées  

  10. #10
    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
    Et qu'est ce que tu n'as plus ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Je n'ai plus aucun résultat de recherche…
    (une recherche infructueuse alors qu'il devrait y avoir des résultats)

  12. #12
    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
    Ta recherche est basée sur la "value" des case à cocher ?
    Si oui est-ce que tes cases à cocher ont la "value" attendue ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Oui effectivement les valeurs sont modifiées :
    Il y a une valeur numérique qui remplace celle attendue...

    Recherche fructueuse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.aaa.com/index.php?searchword=medi&ordering=newest&searchphrase=all&limit=20&areas[0]=vmxsearch&areas[1]=elevents&areas[2]=elcategories&option=com_search&lang=fr
    Recherche infructueuse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.aaa.com/index.php?searchword=medi&ordering=newest&searchphrase=all&limit=20&areas[0]=1&areas[1]=2&areas[2]=3&option=com_search&lang=fr

  14. #14
    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
    Il faudrait que tu contrôles au niveau de ta requête ce qui est executé.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    J'ai trouvé ici que sort() ne maintient pas la corrélation entre les clés et les valeurs. Je l'ai remplacé par asort() et ça me retourne des résultats cohérents.

    Par contre le tri est effectué sur la valeur. J'aurais préféré que cela se fasse sur le texte, $txt, car on a l'impression que le tri n'est pas ordonné :
    Articles Types d'activités Activités Catalogue Liens web

  16. #16
    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
    C'est bien le texte la valeur de ton tableau non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Ben non, ça aurait été trop simple

    Array ( [content] => Articles [elcategories] => EVENTLIST CATEGORIES [elevents] => EVENTS [vmxsearch] => Products [weblinks] => Weblinks )

    Affiche :
    - en US : Articles Event categories Events Catalog Web Links
    - en FR : Articles Types d'activités Activités Catalogue Liens web
    - en SP : Artículos Tipos de actividades Actividades Catálogo Enlaces web

    J'aimerais bien que ça soit ordonné en fonction de ces intitulés

    Chaque extension de recherche (les checkboxes) charge son fichier de traduction comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Load the Plugin language file out of the administration
    JPlugin::loadLanguage( 'plg_search_eventlist' );
    et derrière ily a des fichiers texte en .ini

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut juste les données de base
    Bonjour,

    tu peux juste print_ré ou dumpé les données non triées du résultat de recherche
    et le tableau que tu attends en résultat avant affichage SVP ?

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    749
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 749
    Par défaut
    Euh...
    j'ai peut-être raté quelque chose, mais ce n'est pas le résultat que je cherche à ordonner mais les checkboxes des filtres de recherche.

    print_r ($tri); donnait ça :
    Array ( [content] => Articles [elcategories] => EVENTLIST CATEGORIES [elevents] => EVENTS [vmxsearch] => Products [weblinks] => Weblinks )

    C'est ça que je cherche à ordonner en fonction des valeurs textes que ces éléments prennent.

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut Si c'est bien ta question
    heu ...

    asort($tri, SORT_STRING) ;

    trier un tableau sur des valeurs considérées comme des chaines en conservant les clés, je ne vois pas d'autres réponses

    C'était bien ça ta question ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2010, 10h51
  2. Comment parcourir un tableau
    Par petitsims dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/01/2005, 14h33
  3. [CR] comment faire un tableau croisé
    Par yoyothebest dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 29/08/2004, 18h32
  4. [plpgsql] comment retourner un tableau
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/06/2004, 21h09
  5. comment creer un tableau "stable"
    Par gaut dans le forum C
    Réponses: 16
    Dernier message: 23/07/2003, 16h20

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