Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1269 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] Tableau php, multi colonne?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Tableau php, multi colonne?

n°1429191
mule_panda
Posté le 22-08-2006 à 11:26:55  profilanswer
 

Bonjour, je voudrai savoir, s'il était possible de rassemblée plusieur tableaux pour pouvoir le trié par rapport à une colonne.
 
Mes tableaux sont du style :
 
$mc1[]
$mc2[]
$mc3[]
$comptpert[] (colonne qui sert au trie)
 
j'ai trouver cette méthode array_multisort, mais je n'arrive pas à m'en servir, j'ai pourtant regarder le site php.net, mais j'ai du loupé quelque chose, Merci d'avance


Message édité par mule_panda le 23-08-2006 à 12:01:10
mood
Publicité
Posté le 22-08-2006 à 11:26:55  profilanswer
 

n°1429196
skeye
Posté le 22-08-2006 à 11:37:45  profilanswer
 

array_multisort ne te servira pas à grand chose, ou alors je n'ai pas bien compris la question.
 
Créer un tableau multidimensionnel regroupant tes tableaux ne devrait pas te poser de problème, non?
Une fois que c'est fait tu devrais t'en sortir en utilisant usort(), je pense...

n°1429212
mule_panda
Posté le 22-08-2006 à 11:53:04  profilanswer
 

Enfaite, je ne voi pas trop comment crer le tableaux multidimensionnel regroupand des tableau deja existant, il faut utilisé une boucle FOR, car sinon pour creer un tableau multidimensionnel je pense savoir faire:
 

Code :
  1. $table['motcles']['0']['mc1]='chose';

n°1429227
skeye
Posté le 22-08-2006 à 12:07:42  profilanswer
 

Ca dépend de ce sont les tableaux que tu veux regrouper, en fait...et du sens que ça a de les regrouper...
 
Mais bon par exemple tu peux sans problème créer un tableau avec une boucle du style :

Code :
  1. foreach($comptpert as $key=>$val){
  2. $monbotablo[$val]= array($mc1[$key], $mc2[$key], $mc3[$key]);
  3. }

n°1429274
mule_panda
Posté le 22-08-2006 à 13:40:30  profilanswer
 

Si tu veut je voudrai avoir un tableau recemplant a ceci
 
MC1      | MC2      | MC3       | COMPTPERT
-------------------------------------------
debian   |linux      |logo         |2
yeux     |maron    |logo         |4
boite     |ferme    |carton      |4
windows |os        |faille        |3
php       |prog      |web        |1
 
Désolé, il est pas trés beau mon tableau :( , mais il montre en gros le résultat  
Et aprés je souhaite simplement trié les lignes du tableau par ordre croissant en ce bassant sur la derniére colonne

n°1429275
skeye
Posté le 22-08-2006 à 13:45:47  profilanswer
 

c'est représentatif tes colonnes?
Tu as une des colonnes qui est utilisable comme indice?
Si c'est pas le cas il suffit de modifier mon exemple précédent comme ceci :
 

Code :
  1. foreach($comptpert as $key=>$val){
  2. $monbotablo[$key]= array($mc1[$key], $mc2[$key], $mc3[$key], $val);
  3. }


 
Ensuite tu écris simplement ta fonction de comparaison, et usort()...


Message édité par skeye le 22-08-2006 à 13:46:00
n°1429325
mule_panda
Posté le 22-08-2006 à 14:13:17  profilanswer
 

Je suis un peu perdu, la fonction comparation va enfaite comparé la colonne indice a la colonne $comptpert?
 
Mais je ne comprend la fonction de la premiére ligne??  :??:  
 
Ensuiste comment faire pour affiché une ligne du tableau?

n°1429328
skeye
Posté le 22-08-2006 à 14:14:50  profilanswer
 

http://fr3.php.net/manual/fr/function.usort.php
 
print_r($monbotablo) si tu vois pas comment il est fait...


Message édité par skeye le 22-08-2006 à 14:15:54
n°1429383
mule_panda
Posté le 22-08-2006 à 14:54:59  profilanswer
 

Code :
  1. foreach($comptpert as $key=>$val){
  2.       $table[$key]= array($mc1[$key], $mc2[$key], $mc3[$key], $val);
  3.  
  4.       }


 

Code :
  1. Array ( [0] => Array ( [0] => debian [1] => linux [2] => os [3] => 1 ) [1] => Array ( [0] => debian [1] => linux [2] => os [3] => 1 ) [2] => Array ( [0] => debian [1] => linux [2] => os [3] => 1 ) )


 
Je pense avoir tout comprix sauf comment affiché par exemple le premier enregistrement de mon tableau : "debian"


Message édité par mule_panda le 22-08-2006 à 14:55:58
n°1429386
skeye
Posté le 22-08-2006 à 14:56:53  profilanswer
 

$table[0][0]

mood
Publicité
Posté le 22-08-2006 à 14:56:53  profilanswer
 

n°1429400
mule_panda
Posté le 22-08-2006 à 15:01:23  profilanswer
 

J'avai essayer mais il me marque "Array[0]"

n°1429412
skeye
Posté le 22-08-2006 à 15:05:17  profilanswer
 

hein? [:autobot]
Comme c'est fait là, tu as un tableau appelé $table, qui contient 3 éléments aux indices 0, 1 et 2.
Ces éléments sont eux-mêmes des tableaux, contenant de nouveaux éléments aux indices 0, 1 et 2
Donc $table[0][0] devrait te donner le premier élément du premier élément de ton tableau $table... [:urd]

n°1429419
mule_panda
Posté le 22-08-2006 à 15:08:06  profilanswer
 

Voiçi  le bout de code qui devrai affiché la valeur
 

Code :
  1. echo ("Mot clé 1 : $table[0][0]" );


 
[EDIT]=je l'ai supprimé sans le faire expret  :whistle:


Message édité par mule_panda le 22-08-2006 à 15:10:30
n°1429424
skeye
Posté le 22-08-2006 à 15:09:15  profilanswer
 

manque un " :D
 
tu veux pas filer un peu du code que tu as avant ça, que je comprenne ce qui ne va pas?

n°1429436
mule_panda
Posté le 22-08-2006 à 15:12:52  profilanswer
 

Je previen d'avance mon code n'est pas beau, et loin d'etre au point  :lol:
 
Je n'ai pas mi le tout debut de mon code (trop long, je pourrai le mettre si besoin) donc il manquera des { et des variables non déclaré
 

Code :
  1. // ####################################################################################
  2. // *********************************************
  3. // === Création requete sql, pour la recherche SQL ===
  4. // *********************************************
  5. //requete SQL du premier mot clé en fontion de $as
  6. $sql = "SELECT m.Mot_cle_1, m.Mot_cle_2, m.Mot_cle_3, m.Mot_cle_4, m.Mot_cle_5, m.idNom, t.idNom, t.Descriptif, i.idNom, i.Nom, i.Dossier
  7. FROM mot_cle m, texte t, image i
  8. WHERE  m.idNom=t.idNom
  9. AND m.idNom=i.idNom
  10. AND (Mot_cle_1 LIKE '$as[1]$motsCles[1]$as[1]'";
  11. // On rajoute les autre mot clé
  12. for($i=1;$i<=5;$i++){
  13.  $mot_cle="m.Mot_cle_".$i;
  14.  for($j=1;$j<=$nombreMotsCles;$j++){
  15.   $sql .= " OR $mot_cle LIKE '$as[$j]$motsCles[$j]$as[$j]'";
  16.  }
  17. }
  18. //On ferme le paenthése regroupant les OR
  19. $sql.=" )";
  20. //Affichage de la variable SQL (requete pour le controle des résultats
  21. print  ($sql."<br>" );
  22. //Exécution de la requete
  23. $result = mysql_query($sql);
  24. //Comptage du nombre de résultat trouvé
  25. $nb_result=mysql_num_rows($result);
  26. // On recupère les données trouvés et on les met dans des tableau variables
  27.     while ($data = mysql_fetch_array($result)) {
  28.  $mc1[]=$data['Mot_cle_1'];
  29.  $mc2[]=$data['Mot_cle_2'];
  30.  $mc3[]=$data['Mot_cle_3'];
  31.  $mc4[]=$data['Mot_cle_4'];
  32.  $mc5[]=$data['Mot_cle_5'];
  33.  $des[]=$data['Descriptif'];
  34.  $idNom[]=$data['idNom'];
  35.  $nom[]=$data['Nom'];
  36.  $dos[]=$data['Dossier'];
  37.       }
  38. for($g=0;$g<$nb_result;$g++){
  39.  $comptpert[$g]=0;
  40.  if(isset($motsCles[5])){
  41.   if($mc1[$g]==$motsCles[1]&&$mc2[$g]==$motsCles[2]&&$mc3[$g]==$motsCles[3]&&$mc4[$g]==$motsCles[4]&&$mc5[$g]==$motsCles[5]){
  42.   $comptpert[$g]=$comptpert[$g]+5;}
  43.  }
  44.  if(isset($motsCles[4])){
  45.   if($mc1[$g]==$motsCles[1]&&$mc2[$g]==$motsCles[2]&&$mc3[$g]==$motsCles[3]&&$mc4[$g]==$motsCles[4]){
  46.   $comptpert[$g]=$comptpert[$g]+4;}
  47.  }
  48.  if(isset($motsCles[3])){
  49.   if($mc1[$g]==$motsCles[1]&&$mc2[$g]==$motsCles[2]&&$mc3[$g]==$motsCles[3]){
  50.   $comptpert[$g]=$comptpert[$g]+3;}
  51.  }
  52.  if(isset($motsCles[2])){
  53.   if($mc1[$g]==$motsCles[1]&&$mc2[$g]==$motsCles[2]){
  54.   $comptpert[$g]=$comptpert[$g]+2;}
  55.  }
  56.  for($k=0;$k<=$nombreMotsCles;$k++){
  57.   if($mc1[$g]==$motsCles[$k]){
  58.   $comptpert[$g]=$comptpert[$g]+1;}
  59.   }
  60.  for($k=0;$k<=$nombreMotsCles;$k++){
  61.   if($mc2[$g]==$motsCles[$k]){
  62.   $comptpert[$g]=$comptpert[$g]+1;}
  63.   }
  64.  for($k=0;$k<=$nombreMotsCles;$k++){
  65.   if($mc3[$g]==$motsCles[$k]){
  66.   $comptpert[$g]=$comptpert[$g]+1;}
  67.   }
  68.  for($k=0;$k<=$nombreMotsCles;$k++){
  69.   if($mc4[$g]==$motsCles[$k]){
  70.   $comptpert[$g]=$comptpert[$g]+1;}
  71.   }
  72.  for($k=0;$k<=$nombreMotsCles;$k++){
  73.   if($mc5[$g]==$motsCles[$k]){
  74.   $comptpert[$g]=$comptpert[$g]+1;}
  75.   }
  76. }
  77. print ("nombre de point de pertinence : ".$comptpert[0]."<br>" );
  78.       foreach($comptpert as $key=>$val){
  79.       $table[$key]= array($mc1[$key], $mc2[$key], $mc3[$key], $val);
  80.  
  81.       }
  82.   print_r($table);
  83. //*********************
  84. // On affiche les resultats
  85. //*********************
  86. echo ("<br>Le moteur de recherche à trouvée : ".$nb_result." résultats.<br>" );
  87.  
  88. print ("Mot clé 1 : $table[0][0]<br>" );
  89.  
  90. for($h=0;$h<$nb_result;$h++){
  91. echo ("Mot clé 1 : $table[0][0]<br>" );
  92. echo ("Mot clé 2 : $mc2[$h]<br>" );
  93. echo ("Mot clé 3 : $mc3[$h]<br>" );
  94. echo ("Mot clé 4 : $mc4[$h]<br>" );
  95. echo ("Mot clé 5 : $mc5[$h]<br>" );
  96. echo ("Descriptif : $des[$h]<br>" );
  97. echo ("Id nom : $idNom[$h]<br>" );
  98. echo ("nom image : $nom[$h]<br>" );
  99. echo ("dossier : $dos[$h]<br/>" );
  100.  
  101. $chemin="/mini/$dos[$h]/";
  102. $nomc="$nom[$h]"."mini.jpg";
  103. echo "<img src=$chemin$nomc>";
  104.  
  105. // On sépare les resultats
  106. echo '<hr size="1" width="100">';
  107. }
  108. }


 
A la ligne 100 j'ai mi le PRINT en dehor du FOR pour tester, avec ECHO ou PRINT


Message édité par mule_panda le 22-08-2006 à 15:14:25
n°1429443
skeye
Posté le 22-08-2006 à 15:17:54  profilanswer
 

J'ai un doute sur l'interprétation du $table[0][0] dans les "" dans un print, là...s'il affiche Array[0][0] c'est qu'il essaye d'afficher $table, puis [0][0] comme du texte simple on dirait...[:joce]
 
essaie plutôt ça pour voir:

Code :
  1. echo 'Mot clé 1 :', $table[0][0], '<br>'

n°1429445
mule_panda
Posté le 22-08-2006 à 15:20:59  profilanswer
 

C'est bon cela marche trés bien, merci beaucoup, il me reste plus cas le trié, j'espére que sa ira , merci de m'avoir aider  :jap:

n°1429486
mule_panda
Posté le 22-08-2006 à 16:07:41  profilanswer
 

Je suis arrivé a trié mon tableau en partie car en faite cela me trie que la premiére colonne et donc sa me mélange tout, donc je ne voit pas le d'ou vient le probléme
 

Code :
  1. function cmp1($a,$b) {
  2.     if ($a[3] == $b[3])
  3.         return 0;
  4.     return ($a[3] > $b[3]) ? -1 : 1;
  5. }
  6. usort($table, "cmp1" );
  7. print_r($table);


Message édité par mule_panda le 22-08-2006 à 18:38:05
n°1429587
mule_panda
Posté le 22-08-2006 à 18:50:33  profilanswer
 

:??:

n°1429600
skeye
Posté le 22-08-2006 à 19:12:30  profilanswer
 

grumpf...je vois pas trop ce qui cloche, là...[:urd]


---------------
Can't buy what I want because it's free -
n°1429663
mule_panda
Posté le 22-08-2006 à 21:26:38  profilanswer
 

En faite je ne sai pas trop s'il cela vien de ce bout de code ou du reste, je verrai sa demain, se soir dodo (enfin)

n°1429837
mule_panda
Posté le 23-08-2006 à 12:00:49  profilanswer
 

en faite je m'excuse mais l'erreur venai d'ailleur, en faite j'utilisé mais ancien tableau séparé pour afffiché et non le tableau multidimensionnel et le trie fonctionne parfaitement. Merci beaucoup skeye tu m'as été d'une aide présieuse

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] Tableau php, multi colonne?

 

Sujets relatifs
[RESOLU]Condition de variable[résolu] L'ID de session change de page en page
Optimiser une fonction [RESOLU][RESOLU] recherche sql, tableau php
[resolu]comment couper une ligne de requete proprement?[résolu] pb ticket a gratter
[Résolu] Affichage à partir de mysql[c#] [résolu]problème FolderBrowserDialog
[resolu]creation de dossiers/fichiers a la volee - problemes de droits 
Plus de sujets relatifs à : [RESOLU] Tableau php, multi colonne?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR