|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : juin 2006 Messages : 49 ![]() |
Bonjour,
Je modifie un site qu'un ancien collègue a réalisé, j'ai commencé dans le php/mysql réellement il y a 3 jours, et je bloque. En fait, j'extraie de la MIB de plusieurs switchs les adresses MAC et les ports correspondants que je stocke dans des tableaux. A partir des adresses MAC relevées, et suivant le port correspondant, je fait une requête dans une table mysql qui me donne toutes les infos comme le nom du poste, son adresse IP, le modèle, la marque, l'imprimante qui y est connectée... Déjà là, les adresses MAC arrivent dans l'ordre croissant, et les n° des ports dans le désordre... J'ai "rusé" en me servant du n° de port comme index dans un 3ème tableau ($tab_mac[$num_switch][$num_port] = $mac_address Mais le problème n'est pas là!!! après pas mal d'heures de recherche et d'arrachage de cheveux, je n'arrive pas à trier un simple tableau à 2 dimensions selon 2 paramètres précis. En effet, je souhaite classer d'abord par VLAN ( ou $tab_desordre[4][$cpt] ) de façon croissante, et ensuite que tous les NOM_POSTE ( ou $tab_desordre[0][$cpt] ) apparraissent dans l'ordre alphabétique Jusqu'à présent, toutes les fonctions que j'ai essayé classaient effectivement ces 2 colonnes, mais sans influer sur les autres $tab_desordre[x][$cpt] et les laissaient telles que... Petite précision, vlan est obtenu par un snmpget sur chaque port où une adresse MAC existe. Voici mon tableau, $cpt étant un compteur allant de 0 à 300. Code :
---------$tab[0][$cpt]---$tab[4][$cpt]--$tab[6][$cpt]---$tab[7][$cpt] ---------nom_poste------vlan-----------marque---------modèle $cpt=0--P008------------11-------------Dell------------Optiplex 170L $cpt=1--P016------------10-------------Acer-----------Veriton 3900 Pro $cpt=2--P005------------10 ------------Dell------------Optiplex 210L $cpt=3--P002------------11-------------Nec------------Powermate ML1 Avec les fonctions que j'ai trouvé et utilisé, seules les colonnes 0 et 4 étaient triées, et les reste intouché... Ca donnait ça: ---------$tab[0][$cpt]---$tab[4][$cpt]---$tab[6][$cpt]---$tab[7][$cpt] ---------nom_poste------vlan------------marque---------modèle $cpt=0--P002------------10--------------Dell------------Optiplex 170L $cpt=1--P005------------10--------------Acer-----------Veriton 3900 Pro $cpt=2--P008------------11--------------Dell------------Optiplex 210L $cpt=3--P016------------11--------------Nec------------Powermate ML1 Dans ce cas, plus rien ne correspond à rien, j'ai une autre fonction qui arrive à garder une correspondance entre nom_poste et vlan, mais le reste... Et voilà le résultat que je recherche ---------$tab[0][$cpt]---$tab[4][$cpt]---$tab[6][$cpt]---$tab[7][$cpt] ---------nom_poste------vlan------------marque---------modèle $cpt=0--P005------------10--------------Dell------------Optiplex 210L $cpt=1--P016------------10--------------Acer-----------Veriton 3900 Pro $cpt=2--P002------------11--------------Nec------------Powermate ML1 $cpt=3--P008------------11--------------Dell------------Optiplex 170L Si une âme charitable veut bien se donner la peine de me donner une petite explication!! Merci pour tout |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
déjà inverse les indices du tableau comme ça par exemple
à partir de là tu auras dans "$tab" une liste de tableaux que tu pourras trier avec la fonction http://php.net/usort
__________________
Modérateur PHP |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Directeur technique Inscription : mars 2007 Messages : 192 ![]() |
Si ton tableau est a 2 dimensions il te faut 2 boucle pour pouvoir le classer non ?
Car la tu as l'air de faire qu'un seul traitement, essayer aussi d'organiser tes données dans la requete sql, tu peux rajouter plusieurs parametres dans ton order by, et aussi utiliser la fonction group by pour te permettre de regrouper certaines données.
__________________
Mon Blog sur le developpement, la stratégie et les performances web |
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : juin 2006 Messages : 49 ![]() |
Merci pour vos réponses, mais en fait, je m'en suis sorti en créant une table dans laquelle je transfère les données, et que j'efface complètement au besoin!!!
Je fais le tri au moment de l'appel des données, avec un classique ORDER BY... De plus, ça m'a divisé par 10 le temps de traitement de la fonction!!! Donc c'est tout bénef!! Merci encore |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com