trie sur tableau a plusieurs colonne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : trie sur tableau a plusieurs colonne

Re: trie sur tableau a plusieurs colonne

par niuxe » 08 févr. 2010, 12:14

Hello,
Bonjour,
j'extrais juste les données de ma base, et je l'ai met dans un tableau, quand je fais un print_r, mon tableau s'affiche bien comme il faut, sauf qu'il faut que je trie selon 2 colonnes. Je ne peux pas le faire auparavant dans ma requête, car j'extrais selon des critères bien particulier.
[...]
Hum, je suis curieux de voir ta requête.
SELECT * FROM une_table WHERE un_champ > 1 OR un_autre_champ = "une valeur" ORDER BY un_champ, un_autre_champ; 
#un_autre_champ sera trier en fonction de un_champ.
Et en php :
$donnees = array(
    array("prenom" => "Ginette" , "taille" => 155),
    array("prenom" => "Olga" , "taille" => 185),
    array("prenom" => "Marcel" , "taille" => 175),
    array("prenom" => "Thérèse" , "taille" => 170),
    array("prenom" => "Susanne" , "taille" => 170),
    array("prenom" => "Charlotte" , "taille" => 171),
);
foreach($donnees as $k => $v){
    $prenom[$k] = $v["prenom"];
    $taille[$k] = $v["taille"];
}

array_multisort($prenom,SORT_ASC,$taille,SORT_ASC,$donnees);
        echo "<pre>";
        print_r($donnees);
        echo "</pre>";

Re: trie sur tableau a plusieurs colonne

par Invité » 08 févr. 2010, 10:32

Bonjour,
j'extrais juste les données de ma base, et je l'ai met dans un tableau, quand je fais un print_r, mon tableau s'affiche bien comme il faut, sauf qu'il faut que je trie selon 2 colonnes. Je ne peux pas le faire auparavant dans ma requête, car j'extrais selon des critères bien particulier.


voici un extrait de que cela m'affiche :
Array ( [mat] => AD101 [dat] => 2010-01-01 [charg] => Vanessa [com] => 2 ) Array ( [mat] => AD111 [dat] => 2010-01-01 [charg] => Jessie [com] => 3 ) Array ( [mat] => AD112 [dat] => 2009-11-01 [charg] => Jessie [com] => 3 ) Array ( [mat] => AD113 [dat] => 2010-01-01 [charg] => Jessie [com] => 3 ) 
donc j'ai tester pour trier :
array_multisort(charg, SORT_ASC,  com, SORT_ASC);
ou
array_multisort($tab["charg"], SORT_ASC,  $tab["com"],  SORT_ASC);
mais cela ne change rien à mon affichage.

Re: trie sur tableau a plusieurs colonne

par niuxe » 06 févr. 2010, 09:02

Hello,

Avec si peu de données, pas facile de t'aider. Cependant, je pense savoir pourquoi tu n'as pas le résultat attendu.

<mode hypothese="on">
Simple erreur de logique et de syntaxe... Je crois que tu veux dire ceci :
array_multisort($tab["charg"], SORT_ASC,  $tab["com"],  SORT_ASC);
ou
array_multisort($tab, SORT_ASC);
Logiquement, $tab devrait plutôt être comme cela et ne devrait pas être dans une boucle :
$tab = array(
'mat'=>$mat,
'dat'=>$dat,
'charg'=>$charg,
'com'=>$com, );
</mode>

À moins que tu gardes secrètement l'application que tu es en train de faire, je crois qu'il serait intéressant de mettre un peu plus sur le forum. Je crois que ton script est bancal.

Bonne journée à toi

trie sur tableau a plusieurs colonne

par Invité » 05 févr. 2010, 17:38

Bonjour,

je fais un tableau de cette manière :
$tab[$i] = array( 
'mat'=>$ree[0], 
'dat'=>$ree[1], 
'charg'=>$ree[2], 
'com'=>$ree[3], );
}
je souhaite faire un trie, mais lorsque je fais :
array_multisort(charg, SORT_ASC,  com, SORT_ASC);
rien ne change ?

Y a t il un autre moyen ?

merci