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 :

[Tableaux] Trier tableau multidimensionnel


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Points : 38
    Points
    38
    Par défaut [Tableaux] Trier tableau multidimensionnel
    Salut,

    Je cherche à ranger un tableau qui est contenu dans un autre. Ouais ca parait tout simple comme ca, mais en fait je bloque

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <?php 
    $handle = fopen("C:\\www\\AAA.txt" , "r"); //Mettra le chemin du fichier comprennant la liste des imprimantes
    $tab_temp =array("Printer name" => array(),
    		 "IP" => array(),
    		 "Driver" => array(),
    		 "Location" => array(),
    		 "Comment" => array()
    		);
    (...)
    $nb_col = count($tab_temp);
     
    //print_r($tab_temp);
    echo "<table><tr><th>Printer name</th><th>Driver</th><th>IP</th><th>Location</th><th>Comment</th></tr>" ;
    $nb_printer = count($tab_temp["Printer name"]);
     
    for($compteur_tab = 0; $compteur_tab < $nb_printer; $compteur_tab++)
    {
    	echo "<tr>";
    	for($compteur_col = 0; $compteur_col < $nb_col; $compteur_col++)
    	{
    		switch($compteur_col)
    		{
    			case 0:
    					$valeur_trie_tete = "Printer name";
    					break;
    			case 1:
    					$valeur_trie_tete = "Driver";
    					break;
    			case 2:
    					$valeur_trie_tete = "IP";
    					break;
    			case 3:
    					$valeur_trie_tete = "Location";
    					break;
    			case 4:
    					$valeur_trie_tete = "Comment";
    					break;
    		}
    		if($valeur_trie_tete == "IP")
    		{
    			echo '<td><a href="http:\\\\' .$tab_temp[$valeur_trie_tete][$compteur_tab] .'" target="_blank">' . $tab_temp[$valeur_trie_tete][$compteur_tab] . '</a></td>';
    		}
    		else
    		{
    			echo "<td>" . $tab_temp[$valeur_trie_tete][$compteur_tab] . "</td>";
    		}
    	}	
    	echo "</tr>";
    }
     
    echo "</table>" ; 
    ?>
    Donc, j'ai une liste d'imprimantes dans le fichier AAA.txt et je sais pas comment faire pour que l'on affiche le resultat en classant les données par ordre croissant de leur IP.

    Un peu d'aide s'il vous plait .

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 420
    Points : 15 789
    Points
    15 789
    Par défaut
    montre nous ce qu'il y a dans le fichier quand tu as 2 ou 3 imprimantes

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Points : 38
    Points
    38
    Par défaut
    Pour faire le fichier txt on m'a demandé d'utiliser la commande prnmngr et elle me retourne tout plein de truc inutil xD
    J'ai donc fais un trie pour prendre ce qu'il me fallait ( IP, nom, pilote, commentaires et lieu ).
    Voila un extrait du *.txt :
    Microsoft (R) Windows Script Host Version 5.6
    Copyright (C) Microsoft Corporation 1996-2001. All right reserved.

    Server name ncs-ps01
    Printer name MGGLASERAMGB1
    Share name MGGLASERAMGB1
    Driver name hp LaserJet 1320 PCL 5e
    Port name EQ_10.66.20.133
    Comment Batiment MGG - RDC
    Location Atelier MGG
    Print processor HPZPP041
    Data type RAW
    Parameters
    Attributes 10824
    Priority 1
    Default priority 0
    Status Unknown
    Average pages per minute 0

    ...
    Voila pour une imprimante, il y en a plus de 130 alors je vous épargnes le reste
    J'ai bien sortie les données du fichier, elles sont bien dans le tableau, il s'affiche correctement, mais le chef voudrais pouvoir les triers par IP ( et par nom, mais surtout par IP. )
    Je pensais en faisant un clic sur un bouton a coté de IP ( une sorte de fleche xD ).

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 420
    Points : 15 789
    Points
    15 789
    Par défaut
    ah je viens de comprendre que dans ton code le "(...)" c'est l'endroit où tu construit ton tableau $tab_temp et c'est ce bout dont j'ai besoin

    en fait au lieu de stocker plusieurs tableaux dans $tab_temp, il faudrait mieux que tu stockes une imprimante par ligne comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $tab_temp = array();
     
    $tab_temp[] = array(
       'Printer name' => 'fgdfgsdfg',
       'IP' => '...',
        ...
    );
    ensuite tu peux trier ce tableau avec la fonction http://php.net/usort

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Points : 38
    Points
    38
    Par défaut
    LOL oui ^^ désolé pour la clareté mais j'allais pas mettre 100 lignes pour rien ( c'est du classement, de la recup de données et de l'affichage alors j'ai pas mis xD )!
    J'ai réussi ^^, en cherchant le fonctionnement de natsort j'ai trouvé array_multisort() qui me permet de ranger un/des tableau(x).

    Merci pour ton aide ^^.

    PS: Je stock bien une imprimante par ligne ^^ pour la clé 0 par exemple j'ai ::
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $tab_temp["Driver"][0] = 'Driver imprimante 1' ;
    $tab_temp["Printer name"][0] = 'Nom imprimante 1' ;
    $tab_temp["IP"][0] = 'IP imprimante 1';
    ...
    Si j'ai bien compris on a pareil
    Bon maintenant je vais les classer par nom ou par IP selon le choix de l'utilisateur ^^.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2007, 16h56
  2. Réponses: 5
    Dernier message: 20/03/2007, 01h56
  3. [Tableaux] creation tableau multidimensionnel
    Par calitom dans le forum Langage
    Réponses: 4
    Dernier message: 23/11/2006, 15h31
  4. [Tableaux] Trier tableau deux dimensions
    Par dondano dans le forum Langage
    Réponses: 1
    Dernier message: 25/10/2006, 20h02
  5. Réponses: 6
    Dernier message: 17/02/2006, 15h07

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