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.
Par exemple (je limite le nombre de colonnes à 4), si j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $tab[0][$cpt] = $nom_poste; $tab[1][$cpt] = $ip_poste; $tab[2][$cpt] = $num_switch; $tab[3][$cpt] = $num_port; $tab[4][$cpt] = $vlan; $tab[5][$cpt] = $tab_mac[$num_switch][$num_port]; $tab[6][$cpt] = $marque_po; $tab[7][$cpt] = $modele_po; $tab[8][$cpt] = $imp_poste; $tab[9][$cpt] = $port_imp; $tab[10][$cpt] = $palier; $tab[11][$cpt] = substr($nom_poste, 11, 4); $tab[12][$cpt] = substr($nom_poste, 0, 11);
---------$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
Partager