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 :

Fusionner colonne tableau


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Fusionner colonne tableau
    Bonjour toutes, tous,


    Je crée un tableau php via les informations contenues dans un fichier csv.
    Ces informations sont une liste de serveurs possédant un FS à plus de 80%, ou de process absent, etc...Tout est ok jusqu'à cette étape.
    Mon seul petit problème réside dans le fait que dans l'affichage de mon tableau je peux être confronté à un serveur qui revient plusieurs fois s'il a par exemple plusieurs FS au dessus du seuil. Dans ce cas j'ai plusieurs ligne concernant mon serveur, avec sur chaque ligne un des problèmes.
    Mon tableau à trois colonnes : Nom du serveur | Type de problème (FS, Process, CPU, etc) | nom de l'élément en erreur (nom du fs, nom du process, etc)

    Je voudrais que lorsque je suis dans ce cas de figure, mon tableau affiche dans la colonne 1 mon serveur, et dans la colonne 2 et 3 l'ensemble des problème sur cette machine, le tout donc sur une ligne.

    Voici mon code actuel :

    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
     
    <?php
    echo "<table border='1'>\n";
    $fichier = "patrol_auto.csv";
    $fic = fopen($fichier, 'rb');
    $nb_lignes=0;           //Init du nombre de lignes
    $nb_lignes_max=1000;    //On parametre ici le nombre max de lignes a afficher
    $nb_colonnes_max=3;     //On parametre ici le nombre max de colonnes a afficher
    for ($ligne = fgetcsv($fic, 1024, ";"); !feof($fic); $ligne = fgetcsv($fic, 1024
    , ";")
    ) {
            if($nb_lignes<$nb_lignes_max){
                    echo "<tr>";
                    $j = sizeof($ligne);
                    if($j>$nb_colonnes_max){$j=$nb_colonnes_max;} // On limite le nbr colonnes
                    for ($i = 0; $i < $j; $i++) {
                            echo "<td>".$ligne[$i]."</td>";
                    }
                    echo "</tr>";
            }
            $nb_lignes++;
     
    }
    echo "</table>\n";
    ?>
    Si vous pouvez m'aider je suis preneuse :-)
    Merci d'avance.

    Julie

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est plutôt les lignes que tu veux fusionner non ?
    Il va falloir utiliser l'attribut HTML "rowspan" en lui indiquant le nombre de lignes.

    Pour connaître le nombre de lignes a fusionner, classe d'abord tes données dans un tableau PHP quand tu lis ton CSV :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data[$ligne[0]] = $ligne;
    Ensuite tu reparcours ce tableau PHP et tu dessines ton tableau PHP.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach ($data as $serveur=>$values) {
       $nlignes = count($values);
       echo '<tr rowspan="' . $nlignes . '">';
       foreach ($values as $value) {
          echo '<td>';
          ......
          .....
       }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour,


    Merci pour ta réponse, j'ai testé ta solution, mais je suis pas trop douée je me retrouve avec une page blanche :-(

    mon code avec les ajouts :

    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
    <?php
    echo "<table border='1'>\n";
    $fichier = "patrol_auto_f3na_20140128.csv";
    $fic = fopen($fichier, 'rb');
    $data[$ligne[0] = $ligne;
    $nb_lignes=0;           //Init du nombre de lignes
    $nb_lignes_max=1000;    //On parametre ici le nombre max de lignes a afficher
    $nb_colonnes_max=3;     //On parametre ici le nombre max de colonnes a afficher
    for ($ligne = fgetcsv($fic, 1024, ";"); !feof($fic); $ligne = fgetcsv($fic, 1024
    , ";")
    ) {
            if($nb_lignes<$nb_lignes_max){
                    echo "<tr>";
                    $j = sizeof($ligne);
                    if($j>$nb_colonnes_max){$j=$nb_colonnes_max;} // On limite le nbr colonnes
                    for ($i = 0; $i < $j; $i++) {
                            echo "<td>".$ligne[$i]."</td>";
                    }
                    echo "</tr>";
            }
            $nb_lignes++;
     
    }
    foreach ($data as $serveur=>$values) {
       $nlignes = count($values);
       echo '<tr rowspan="' . $nlignes . '">';
       foreach ($values as $value) {
          echo '<td>';
     
       }
    }
    echo "</table>\n";
    ?>
    tu vois de ou viens le problème.

    J'ai mis en piece jointe une visu de mon affichage php pour te faire une idée.
    Effectivement c'est bien les lignes que je veux fusionner, mais je vois pas ou je dis l'inverse dans ma description du problème ;-)

    Merci en tout cas

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Il manque un crochet ] (ligne 5)

    + active l'affichage d'erreurs.

  5. #5
    Candidat au Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Avec le crochet c'est mieux effectivement...
    Quand j'affiche la page PHP je suis avec le même visu que précédemment, aucune modification, je me retrouve tjrs avec une ligne par serveur, meme quand ce dernier est présent sur plusieurs lignes.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand je mets ".....", ça veut dire "à compléter"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Invité
    Invité(e)
    Par défaut
    @sabotage
    Je pense que Julie n'a pas non plus compris l'intérêt de la création du tableau $data (array) intermédiaire.

    @julie78140
    Voici le code simplifié d'un tableau (<table>) avec 2 cellules fusionnées : http://codepen.io/jreaux62/pen/byeqc
    => cela te permettra de comprendre comment il faudra s'y prendre.
    Code html : 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
    table avec cellules fusionnées :<br />
    <table>
      <tr>
        <td rowspan="2">cell-11 + cell-21</td>
        <td>cell-12</td>
        <td>cell-13</td>
      </tr>
      <tr>
        <!--ici, PAS de td : déjà déclaré dans le rowspan précédent-->
        <td>cell-22</td>
        <td>cell-23</td>
      </tr>
      <tr>
        <td>cell-31</td>
        <td>cell-32</td>
        <td>cell-33</td>
      </tr>
    </table>
    On trouve un exemple de traitement dans cette discussion.
    A comprendre (d'abord), puis à adapter, bien sûr...
    Dernière modification par Invité ; 05/02/2014 à 09h45.

  8. #8
    Candidat au Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci de vos réponses, effectivement je suis pas bien douée....
    J'ai juste besoin de PHP pour cette création de tableau, je suis novice.
    J'ai réussi à me dépatouiller jusqu'à l'étape de fusion des lignes.... Mais la j'ai vraiment du mal, je vais regarder ton lien pour essayer de comprendre mais je suis pas sur d'y arriver :-(

  9. #9
    Candidat au Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je n'y arrive pas, j'ai passé ma journée dessus

Discussions similaires

  1. fonction cacher colonne tableau
    Par isa150183 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 22/07/2008, 09h47
  2. [SQL] trie colonnes tableau html avec order by
    Par digger dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/05/2007, 16h01
  3. Toutes les valeurs d'une colonne - Tableau à 2D
    Par Bridou dans le forum Langage
    Réponses: 3
    Dernier message: 30/06/2006, 16h05
  4. [Tableaux] suppression colonne tableau 2 Dimensions
    Par flydragon dans le forum Langage
    Réponses: 21
    Dernier message: 27/04/2006, 11h28
  5. [HTML] Fusionner cellule tableau dynamique
    Par gaetanc15 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 08/03/2006, 13h48

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