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 :

Affichage d'un tableau avec les valeurs regroupées


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut Affichage d'un tableau avec les valeurs regroupées
    Bonjour,

    Je récupère un tableau dans lequel j'ai toutes les nom colonnes d'une table ou a été trouvé une valeur recherchée.

    Ma table a pour colonnes:
    HOSTNAME,OSVERSION,KERNEL,SERVERTYPE
    Je fais une recherche sur tous les champs pour la valeur like "%sun%".
    Dans un tableau je récupère a chaque fois le nom de la colonne ou a été trouvé la valeur sun.
    J'obtiens un tableau de ce style:

    Code php : 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
    Array
    (
        [0] => Array
            (
                [SERVERTYPE] => Sun Microsystems sun4u Sun Fire 15000
            )
        [1] => Array
            (
                [SERVERTYPE] => Sun Microsystems sun4u Sun Enterprise 420R
            )
        [2] => Array
            (
                [SERVERTYPE] => Sun Microsystems sun4u Sun Enterprise 420R
            )
    etc... jusqu'à:
    [404] => Array
            (
                [OSVERSION] => SunOS 5.10
            )
        [405] => Array
            (
                [OSVERSION] => SunOS 5.10
            )

    J'aimerai afficher tous les résultats contenu dans ce tableau mais regroupé par valeur.
    Par exemple dans le tableau aux valeur 1 et 2 au lieu d'afficher deux fois la ligne, afficher qu'une ligne avec le nombre entre parenthèse (2).
    Comment regrouper les valeurs dans un tableau? J'ai beau chercher dans les fonctions proposées j'ai pas trouvé...

    Si quelqu'un a une idée je suis preneur

    Merci d'avance!

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Montres nous ton code pour qu'on puisse t'aider

    tu devras peut être faire une requête avec group by pour regrouper les données

    http://dev.mysql.com/doc/refman/5.0/...functions.html

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    si t'as PDO ca se fait avec FETCH_GROUP

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    Voici la partie de mon code qui récupère les données dans le tableau:

    Code php : 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
     
    while ($myrow_fixe_inf_serveur=$Cnx_fixe->row())
    {
        if($pos = stristr($myrow_fixe_inf_serveur["HOSTNAME"], $chaine) !== false) {
    	$nb_fixe_inf_serveur++;
    	$tab_fixe_infserveur_detail[] = $myrow_fixe_inf_serveur;
    	$tab_fixe_infserveur[] = array("HOSTNAME" => $myrow_fixe_inf_serveur["HOSTNAME"]);
        }
    	else if($pos = stristr($myrow_fixe_inf_serveur["SERVERTYPE"], $chaine) !== false) {
    	$nb_fixe_inf_serveur++;
    	$tab_fixe_infserveur_detail[] = $myrow_fixe_inf_serveur;
    	$tab_fixe_infserveur[] = array("SERVERTYPE" => $myrow_fixe_inf_serveur["SERVERTYPE"]);
        }
    	else if($pos = stristr($myrow_fixe_inf_serveur["PROCTYPE"], $chaine) !== false) {
    	$nb_fixe_inf_serveur++;
    	$tab_fixe_infserveur_detail[] = $myrow_fixe_inf_serveur;
    	$tab_fixe_infserveur[] = array("PROCTYPE" => $myrow_fixe_inf_serveur["PROCTYPE"]);
        }
    	else if($pos = stristr($myrow_fixe_inf_serveur["OSVERSION"], $chaine) !== false) {
    	$nb_fixe_inf_serveur++;
    	$tab_fixe_infserveur_detail[] = $myrow_fixe_inf_serveur;
    	$tab_fixe_infserveur[] = array("OSVERSION" => $myrow_fixe_inf_serveur["OSVERSION"]);
        }
     
    }

    La tableau $tab_fixe_infserveur contient donc l'exemple de mon premier message:
    Code php : 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
    Array
    (
    [0] => Array
    (
    [SERVERTYPE] => Sun Microsystems sun4u Sun Fire 15000
    )
    [1] => Array
    (
    [SERVERTYPE] => Sun Microsystems sun4u Sun Enterprise 420R
    )
    [2] => Array
    (
    [SERVERTYPE] => Sun Microsystems sun4u Sun Enterprise 420R
    )
    etc... jusqu'à:
    [404] => Array
    (
    [OSVERSION] => SunOS 5.10
    )
    [405] => Array
    (
    [OSVERSION] => SunOS 5.10
    )
    J'aimerais afficher
    Sun Microsystems sun4u Sun Fire 15000 (1) - SERVERTYPE
    Sun Microsystems sun4u Sun Enterprise 420R (2) - SERVERTYPE
    Et non avoir:
    Sun Microsystems sun4u Sun Fire 15000 - SERVERTYPE
    Sun Microsystems sun4u Sun Enterprise 420R - SERVERTYPE
    Sun Microsystems sun4u Sun Enterprise 420R - SERVERTYPE
    J'ai deux fois la même ligne...
    Le group by ne fonctionne que sur une colonne or dans mon cas je peux avoir deux fois la même valeur sur la colonne SERVERTYPE ou sur la colonne OSVERSION...

    Si j'ai PDO? Qu'est-ce que PDO?

    Merci d'avance pour vos réponses

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    affiche aussi ta requête avec le group by

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    La voici mais je pense pas que ça vienne de la requête...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select HOSTNAME,OSVERSION,KERNEL,SERVERTYPE,MEMORY,PROCTYPE,NBPROC,NBTHREAD,ZONEDAD from ECONTROLE.INFO_SERVER 
    where lower(HOSTNAME) like lower('%$chaine%') or lower(OSVERSION) like lower('%$chaine%') or lower(SERVERTYPE) like lower('%$chaine%')
    or lower(PROCTYPE) like lower('%$chaine%') ORDER BY HOSTNAME, SERVERTYPE, PROCTYPE, OSVERSION
    Merci d'avance!

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 145
    Points : 77
    Points
    77
    Par défaut
    Re bonjour,

    Je vais m'y prendre autrement et j'aimerais savoir comment afficher toutes les valeurs d'un tableau ayant la même clé?

    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
    Array
    (
        [0] => Array
            (
                [SERVERTYPE] => Sun Microsystems sun4u Sun Fire 15000
            )
        [1] => Array
            (
                [SERVERTYPE] => Sun Microsystems sun4u Sun Enterprise 420R
            )
        [2] => Array
            (
                [SERVERTYPE] => Sun Microsystems sun4u Sun Enterprise 420R
            )
    [3] => Array
            (
                [OSVERSION] => SunOS 5.10 
            )
    Comment dans mon cas afficher toutes les valeurs ayant la clé "SERVERTYPE" et ensuite toutes les valeurs ayant la clé "OSVERSION"?

    Voici mon code qui ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for($i=0; $i<sizeof($tabcible); $i++) {
     foreach($tabcible[$i]["SERVERTYPE"] as $cle => $val) {
     echo "<tr><td>$val</td></tr>";
     }
    }
    Merci d'avance à tous!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/01/2013, 18h31
  2. Créer un champ enum avec les valeurs d'un tableau
    Par Ralfman68 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 14/08/2007, 10h10
  3. Réponses: 2
    Dernier message: 15/12/2006, 14h22
  4. Problème avec les valeurs par défaut
    Par Steph Ace dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/12/2005, 09h55
  5. Réponses: 13
    Dernier message: 14/10/2003, 14h31

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