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 complexe dans un tableau


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut affichage complexe dans un tableau
    Bonjour

    je suis bloqué sur une affichage des données venant de la base de donnée.
    Je m'explique

    Les colonnes du tableau sont stockés en ligne dans une table(colonnes) :
    je les récupères et j'obtient les tableaux suivants :

    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
    [_data:protected] => Array
            (
                [0] => Array
                    (
                        [id] => 1
                        [libelle_column] => Client id
                        [id_table_cible] => 1
                    )
     
                [1] => Array
                    (
                        [id] => 2
                        [libelle_column] => Last name
                        [id_table_cible] => 1
                    )
     
                [2] => Array
                    (
                        [id] => 3
                        [libelle_column] => First name
                        [id_table_cible] => 1
                    )
    )
    Je récupère aussi les valeurs correspondantes aux colonnes depuis une autre table et j'obtient le tableau de la forme suivant :

    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
    [_data:protected] => Array
            (
                [0] => Array
                    (
                        [id_value] => 1
                        [id_enreg] => 1
                        [id_column] => 1
                        [text_value] => 007
                    )
     
                [1] => Array
                    (
                        [id_value] => 2
                        [id_enreg] => 1
                        [id_column] => 2
                        [text_value] => jean 
                    )
     
                [2] => Array
                    (
                        [id_value] => 3
                        [id_enreg] => 1
                        [id_column] => 3
                        [text_value] => dubois
                    )
     
                [3] => Array
                    (
                        [id_value] => 4
                        [id_enreg] => 2
                        [id_column] => 1
                        [text_value] => 008
                    )
     
                [4] => Array
                    (
                        [id_value] => 5
                        [id_enreg] => 2
                        [id_column] => 2
                        [text_value] => francois 
                    )
     
                [5] => Array
                    (
                        [id_value] => 6
                        [id_enreg] =>2
                        [id_column] => 3
                        [text_value] => pierre
                    )
     
    )
    Dans cette tableau de valeur l'indice id_column correspond à l'id de la colonne de la table colonnes
    c'est a dire id_column=>3 correspond au First name et ce sera placé en deuxieme ligne pour l'affichage dans le tableau id_enreg =2

    Si c'est id_enreg = 1 l'affichage est en première ligne et ainsi de suite






    Et un autre table pour référence les lignes de résultats
    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
    Array
    (
        [0] => Array
            (
                [id_enreg] => 1
                [description] => first recording
            )
     
        [1] => Array
            (
                [id_enreg] => 2
                [description] => second recording
            )
     
    )
    Ce que je voudrais faire c'est de pouvoir faire comme ceci à l'affichage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Client id   First name     Last name 
    007            jean             dubois       
    008           francois          pierre

    Ma question est que est ce que je doit construire un tableau finale qui regroupe le colonne avec les valeurs correspondants avant de faire un foreach ou à partir des ces tableaux la je peux déjà faire un affichage comme dessus

    j'ai tenté avec le boucle foreach mais sans succès, merci pour votre aide et conseil

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    déjà pour les données tu peux les réorganiser dans un autre tableau comme ça :
    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
    $listeDonnee = array (
      array (
        'id_value' => 1,
        'id_enreg' => 1,
        'id_column' => 1,
        'text_value' => '007',
      ),
      array (
        'id_value' => 2,
        'id_enreg' => 1,
        'id_column' => 2,
        'text_value' => 'jean',
      ),
      array (
        'id_value' => 3,
        'id_enreg' => 1,
        'id_column' => 3,
        'text_value' => 'dubois',
      ),
      array (
        'id_value' => 4,
        'id_enreg' => 2,
        'id_column' => 1,
        'text_value' => '008',
      ),
      array (
        'id_value' => 5,
        'id_enreg' => 2,
        'id_column' => 2,
        'text_value' => 'francois ',
      ),
      array (
        'id_value' => 6,
        'id_enreg' => 2,
        'id_column' => 3,
        'text_value' => 'pierre',
      ),
    );
     
    $tabDonnee = array();
     
    foreach ($listeDonnee as $donnee) {
        $id_enreg = $donnee['id_enreg'];
     
        if (!isset($tabDonnee[$id_enreg])) {
            $tabDonnee[$id_enreg] = array();
        }
     
        $tabDonnee[$id_enreg][$donnee['id_column']] = $donnee['text_value'];
    }
    ensuite pour les listes de lignes et de colonnes , j'ai pris ça pour faire mes tests :
    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
    $listeLigne = array (
      array (
        'id_enreg' => 1,
        'description' => 'first recording',
      ),
      array (
        'id_enreg' => 2,
        'description' => 'second recording',
      ),
    );
     
    $listeColonne = array (
      array (
        'id' => 1,
        'libelle_column' => 'Client id',
        'id_table_cible' => 1,
      ),
      array (
        'id' => 2,
        'libelle_column' => 'Last name',
        'id_table_cible' => 1,
      ),
      array (
        'id' => 3,
        'libelle_column' => 'First name',
        'id_table_cible' => 1,
      ),
    );
    et avec ça, tu peux obtenir ton tableau de résultats comme ça :
    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
    <table border="1">
     
        <?php foreach ($listeLigne as $ligne) {?>
     
            <tr>
     
                <?php foreach ($listeColonne as $colonne) {?>
                    <td>
                        <?php echo $tabDonnee[$ligne['id_enreg']][$colonne['id']];?>
                    </td>
                <?php }?>
     
            </tr>
     
        <?php }?>
     
    </table>
    GNAP !

  3. #3
    Membre régulier Avatar de stomerfull
    Inscrit en
    Septembre 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 307
    Points : 122
    Points
    122
    Par défaut
    Bonjour ,

    Une derniere question

    je voudrais générer un pdf avec les données affichées

    j'utilise fdpdf et dedans il y aune fonction que j'ai mis tous les tableaux en paramètre comme ça

    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
    public function ColoredTable($header,$data,$data1,$data3)
    {
         $tabDonnee = array();
         foreach ($data3 as $donnee) 
         {
    	    //id de ligne 
    	   $id_enreg = $donnee['id_enreg'];
     
    	   //Création de tableau de ligne et colonne 
    	  if (!isset($tabDonnee[$id_enreg])) 
    	  {
    	               $tabDonnee[$id_enreg] = array();
    	  }
     
    	   //Les valeurs correspondra à un tableau à indice ligne et colonne
    	 $tabDonnee[$id_enreg][$donnee['id_column']] = $donnee['text_value'];
          }
     
       foreach($data as $row) {
          	foreach($data1 as $row1){
     
                       $this->Cell($w[0],6, $tabDonnee[$row['id_enreg']][$row1['id']], 'LR', 0, 'L', $fill);
                           /*$this->Cell($w[1],6, 'test2', 'LR', 0, 'L', $fill);
                           $this->Cell($w[2],6, 'test3', 'LR', 0, 'R', $fill);
                           $this->Cell($w[3],6, 'test4', 'LR', 0, 'R', $fill);
    			$this->Cell($w[4],6, 'test5', 'LR', 0, 'R', $fill);
    			$this->Cell($w[5],6, 'test6', 'LR', 0, 'R', $fill);
    			$this->Cell($w[6],6, 'test7', 'LR', 0, 'R', $fill);
    			$this->Cell($w[7],6, 'test8', 'LR', 0, 'R', $fill);*/
                            $this->Ln();
                            $fill=!$fill;
     
            	}
            }
    }
    avec cette code , dans le fichier pdf généré tous les données s'affiche tous sur la première colonne

    si je commente $this->ln() et $fill!$fill , là il s'affiche mais tous sur la première ligne

    je vous remerci tous de votre conseil

Discussions similaires

  1. [MySQL] Affichage dynamique dans un tableau
    Par runcafre91 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 28/04/2009, 01h14
  2. Probleme affichage données dans un tableau
    Par spider_sup dans le forum NetBeans
    Réponses: 0
    Dernier message: 15/08/2008, 11h10
  3. affichage requete dans un tableau
    Par Pr0pHeT dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/10/2007, 18h41
  4. [MySQL] Affichage requête dans un tableau
    Par neoboy dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 04/09/2007, 12h24
  5. [VB.NET] - affichage dynamique dans un tableau
    Par karibouxe dans le forum ASP.NET
    Réponses: 8
    Dernier message: 20/06/2005, 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