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

Bibliothèques et frameworks PHP Discussion :

[FPDF] Création d'un tableau dynamique


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut [FPDF] Création d'un tableau dynamique
    Bonjour,

    Je débute à peine dans la conversion de php vers PDF.

    Grâce à vos tutos, j'ai pu comprendre la structure type de ce document mais, je n'arrive pas à créer un tableau qui contiennent des données dynamiques et donc qui incrémente son nombre de ligne en fonction des données...
    Voici la partie du code qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $pro3=$_POST['projet'];
     
    $histo=mysql_query("select * from tab_histo where id_projet='$pro3'") or die (msql_error());
    		while ($data=mysql_fetch_object($histo))
    		{
     
    			$chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
    			while ($data2=mysql_fetch_object($chapitre))
    		{
    		$contenuTableau = array(
    		$data2->chap_nom, '100 %',$data->result,
    		);	
      }
      }
    $data2 et $data peuvent contenir plusieurs données et j'aimerai qu'elles soient toutes traitées or, il me traite seulement la première...

    De plus, lors de la création du PDF, mes données ne sont pas mises à jour, il faut que j'actualise... Est-ce normal ?
    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Salut, pourrais-tu préciser la librairie utilisée ?? FPDF phpToPDF ou autre ???

    Et pourrais tu donner ton code complet ??

    ++
    JC

  3. #3
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Bien sûr :

    Je travaille avec FPDF et voici mo code complet :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    <?php
    include("config_db.inc.php");
    ?>
    <?php
    include("phpToPDF.php");
    $pro3=$_POST['projet'];
    $PDF=new phpToPDF();
    $PDF->AddPage();
    $PDF->SetFont('Arial','B',12);
    
    // on écrit ce que l'on veut dans le document PDF...
    //Selection de mon projet
    		$pro=mysql_query("SELECT projet_nom from tab_projet WHERE id_projet='$pro3'") or die(mysql_error());
    		$pro2=mysql_fetch_array($pro);
    		$projet_nom=$pro2['projet_nom'];
    $analyse=mysql_query("select * from analyse where id_projet='$pro3'");
    		$PDF->Text(40,10,$projet_nom);
    		
    		while ($data=mysql_fetch_object($analyse))
    		{
    		//Selection de mon analyse type
    		$anal=mysql_query("SELECT analtype_nom from tab_analysetype WHERE id_analtype='$data->id_analtype'") or die(mysql_error());
    		$anal2=mysql_fetch_array($anal);
    		$anal3=$anal2['analtype_nom'];
    		
    		//Selection de mon Chapitre
    		$chap=mysql_query("SELECT chap_nom from tab_chap WHERE id_chap='$data->id_chap'") or die(mysql_error());
    		$chap2=mysql_fetch_array($chap);
    		$chap3=$chap2['chap_nom'];
    	
    		//Selection de ma question
    		$quest=mysql_query("SELECT quest_nom from tab_quest WHERE id_quest='$data->id_quest'") or die(mysql_error());
    		$quest2=mysql_fetch_array($quest);
    		$quest3=$quest2['quest_nom'];
    		
    		//Selection de ma réponse
    		$rep=mysql_query("SELECT rep_nom from tab_rep WHERE id_rep='$data->id_rep'") or die(mysql_error());
    		$rep2=mysql_fetch_array($rep);
    		$rep3=$rep2['rep_nom'];
    		
    		//Selection de la qualif de ma réponse
    		$qualif=mysql_query("SELECT qualif_nom from tab_qualif WHERE id_qualif='$data->id_qualif'") or die(mysql_error());
    		$qualif2=mysql_fetch_array($qualif);
    		$qualif3=$qualif2['qualif_nom'];
    		$PDF->Write(10,"$chap3 \nA la question $quest3\nJe réponds $rep3\n$qualif3\n");
    			if ($data->repOuv_nom !== '0') {
    		$PDF->Write(10,"J'ajoute $data->repOuv_nom\n");
    		}
    		if ($data->comm_nom !== '0') {
    		$PDF->Write(10,"$data->comm_nom\n\n");
    		}
    		}
    		$PDF->Write(10,"Analyse de chaque chapitre :\n\n");
    		
    // Définition des propriétés du tableau.
    $proprietesTableau = array(
    	'TB_ALIGN' => 'L',
    	'L_MARGIN' => 15,
    	'BRD_COLOR' => array(0,76,177),
    	'BRD_SIZE' => '0.3',
    	);
    
    // Définition des propriétés du header du tableau.	
    $proprieteHeader = array(
    	'T_COLOR' => array(150,10,10),
    	'T_SIZE' => 12,
    	'T_FONT' => 'Arial',
    	'T_ALIGN' => 'C',
    	'V_ALIGN' => 'T',
    	'T_TYPE' => 'B',
    	'LN_SIZE' => 7,
    	'BG_COLOR_COL0' => array(170, 240, 230),
    	'BG_COLOR' => array(170, 240, 230),
    	'BRD_COLOR' => array(0,92,177),
    	'BRD_SIZE' => 0.2,
    	'BRD_TYPE' => '1',
    	'BRD_TYPE_NEW_PAGE' => '',
    	);
    
    // Contenu du header du tableau.	
    $contenuHeader = array(
    	50, 50, 50,
    	"Chapitres", "Valeur de référence", "Valeur calculée",
    	);
    
    // Définition des propriétés du reste du contenu du tableau.	
    $proprieteContenu = array(
    	'T_COLOR' => array(0,0,0),
    	'T_SIZE' => 10,
    	'T_FONT' => 'Arial',
    	'T_ALIGN_COL0' => 'L',
    	'T_ALIGN' => 'R',
    	'V_ALIGN' => 'M',
    	'T_TYPE' => '',
    	'LN_SIZE' => 6,
    	'BG_COLOR_COL0' => array(245, 245, 150),
    	'BG_COLOR' => array(255,255,255),
    	'BRD_COLOR' => array(0,92,177),
    	'BRD_SIZE' => 0.1,
    	'BRD_TYPE' => '1',
    	'BRD_TYPE_NEW_PAGE' => '',
    	);	
    
    $histo=mysql_query("select * from tab_histo where id_projet='$pro3'") or die (msql_error());
    		while ($data=mysql_fetch_object($histo))
    		{
    						
    			$chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
    			while ($data2=mysql_fetch_object($chapitre))
    		{
    		$contenuTableau = array(
    		$data2->chap_nom, '100 %',$data->result,
    		);	
      }
      }
    // D'abord le PDF, puis les propriétés globales du tableau. 
    // Ensuite, le header du tableau (propriétés et données) puis le contenu (propriétés et données)
    $PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);
    
    $PDF->Output("test2.PDF", "F");	
    	// affiche le document test.PDF dans une iframe.
    echo "
    	<iframe src='test2.PDF' width='100%' height='100%'>
    	[Your browser does <em>not</em> support <code>iframe</code>,
    	or has been configured not to display inline frames.
    	You can access <a href='./test2.PDF'>the document</a>
    	via a link though.]</iframe>";
    ?>
    Voila je me suis aidée des tuto que j'ai trouvé en ligne...

    Je te redis juste mon pb : créer un tableau dynamique en fct du nombre de données... Je t'ai mis en gras le passage censé être dynamique !!!

    (Au passage, j'ai bien un tableau qui se forme mais seulement avec une seule ligne de données...)

    Merci d'avance !

  4. #4
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Salut, en fait quand tu passes dans ta boucle "while", tu écrase le tableau en le redéclarant..

    Tu devrais utiliser la méthode "array_push" pour ajouter à chaque passage dans le while un item à ton tableau.

    tu as le manuel ICI


    Bonne continuation
    ++
    JC

  5. #5
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Bonjour,

    J'ai essayé tant bien que mal mais cela ne fonctionne tjs pas...

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ($data=mysql_fetch_object($histo))
    		{	
    			$contenuTableau=array();				
    			$chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
    			while ($data2=mysql_fetch_array($chapitre))
    		{
    		$contenuTableau = array_push($contenuTableau ,$data2->chap_nom, '100 %',$data->result);	
     
      }
    Merci d'avance pour votre aide !

  6. #6
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Citation Envoyé par Little_flower Voir le message
    Bonjour,

    J'ai essayé tant bien que mal mais cela ne fonctionne tjs pas...

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ($data=mysql_fetch_object($histo))
    		{	
    			$contenuTableau=array();				
    			$chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
    			while ($data2=mysql_fetch_array($chapitre))
    		{
    		$contenuTableau = array_push($contenuTableau ,$data2->chap_nom, '100 %',$data2->result);	
    		
      }
    Merci d'avance pour votre aide !


    Serait-ce à cause de ce que j'ai corrigé ??? data2 ???

    Sinon, peux tu envoyer le code complet ?

    ++
    JC

    ps: peux tu aussi préciser ce qui ne marche pas...

  7. #7
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Voici mon code complet :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    <?php
    include("config_db.inc.php");
    ?>
    <?php
    include("phpToPDF.php");
    $pro3=$_GET['projet'];
    $PDF=new phpToPDF();
    $PDF->AddPage();
    $PDF->SetFont('Arial','B',12);
     
    // on écrit ce que l'on veut dans le document PDF...
    //Selection de mon projet
    		$pro=mysql_query("SELECT projet_nom from tab_projet WHERE id_projet='$pro3'") or die(mysql_error());
    		$pro2=mysql_fetch_array($pro);
    		$projet_nom=$pro2['projet_nom'];
    $analyse=mysql_query("select * from analyse where id_projet='$pro3'");
    		$PDF->Text(40,10,$projet_nom);
     
    		while ($data=mysql_fetch_object($analyse))
    		{
    		//Selection de mon analyse type
    		$anal=mysql_query("SELECT analtype_nom from tab_analysetype WHERE id_analtype='$data->id_analtype'") or die(mysql_error());
    		$anal2=mysql_fetch_array($anal);
    		$anal3=$anal2['analtype_nom'];
     
    		//Selection de mon Chapitre
    		$chap=mysql_query("SELECT chap_nom from tab_chap WHERE id_chap='$data->id_chap'") or die(mysql_error());
    		$chap2=mysql_fetch_array($chap);
    		$chap3=$chap2['chap_nom'];
     
    		//Selection de ma question
    		$quest=mysql_query("SELECT quest_nom from tab_quest WHERE id_quest='$data->id_quest'") or die(mysql_error());
    		$quest2=mysql_fetch_array($quest);
    		$quest3=$quest2['quest_nom'];
     
    		//Selection de ma réponse
    		$rep=mysql_query("SELECT rep_nom from tab_rep WHERE id_rep='$data->id_rep'") or die(mysql_error());
    		$rep2=mysql_fetch_array($rep);
    		$rep3=$rep2['rep_nom'];
     
    		//Selection de la qualif de ma réponse
    		$qualif=mysql_query("SELECT qualif_nom from tab_qualif WHERE id_qualif='$data->id_qualif'") or die(mysql_error());
    		$qualif2=mysql_fetch_array($qualif);
    		$qualif3=$qualif2['qualif_nom'];
    		$PDF->Write(10,"$chap3 \nA la question $quest3\nJe réponds $rep3\n$qualif3\n");
    			if ($data->repOuv_nom !== '0') {
    		$PDF->Write(10,"J'ajoute $data->repOuv_nom\n");
    		}
    		if ($data->comm_nom !== '0') {
    		$PDF->Write(10,"$data->comm_nom\n\n");
    		}
    		}
    		$PDF->Write(10,"Analyse de chaque chapitre :\n\n");
     
    // Définition des propriétés du tableau.
    $proprietesTableau = array(
    	'TB_ALIGN' => 'L',
    	'L_MARGIN' => 15,
    	'BRD_COLOR' => array(0,76,177),
    	'BRD_SIZE' => '0.3',
    	);
     
    // Définition des propriétés du header du tableau.	
    $proprieteHeader = array(
    	'T_COLOR' => array(150,10,10),
    	'T_SIZE' => 12,
    	'T_FONT' => 'Arial',
    	'T_ALIGN' => 'C',
    	'V_ALIGN' => 'T',
    	'T_TYPE' => 'B',
    	'LN_SIZE' => 7,
    	'BG_COLOR_COL0' => array(170, 240, 230),
    	'BG_COLOR' => array(170, 240, 230),
    	'BRD_COLOR' => array(0,92,177),
    	'BRD_SIZE' => 0.2,
    	'BRD_TYPE' => '1',
    	'BRD_TYPE_NEW_PAGE' => '',
    	);
     
    // Contenu du header du tableau.	
    $contenuHeader = array(
    	50, 50, 50,
    	"Chapitres", "Valeur de référence", "Valeur calculée",
    	);
     
    // Définition des propriétés du reste du contenu du tableau.	
    $proprieteContenu = array(
    	'T_COLOR' => array(0,0,0),
    	'T_SIZE' => 10,
    	'T_FONT' => 'Arial',
    	'T_ALIGN_COL0' => 'L',
    	'T_ALIGN' => 'R',
    	'V_ALIGN' => 'M',
    	'T_TYPE' => '',
    	'LN_SIZE' => 6,
    	'BG_COLOR_COL0' => array(245, 245, 150),
    	'BG_COLOR' => array(255,255,255),
    	'BRD_COLOR' => array(0,92,177),
    	'BRD_SIZE' => 0.1,
    	'BRD_TYPE' => '1',
    	'BRD_TYPE_NEW_PAGE' => '',
    	);	
     
    $histo=mysql_query("select * from analyse where id_projet='$pro3'") or die (msql_error());
    		while ($data=mysql_fetch_object($histo))
    		{	
    			$contenuTableau=array();				
    			$chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
    			while ($data2=mysql_fetch_array($chapitre))
    		{
    		$contenuTableau = array_push($contenuTableau ,$data2->chap_nom, '100 %',$data->result);	
     
      }
     
      }
     
    // D'abord le PDF, puis les propriétés globales du tableau. 
    // Ensuite, le header du tableau (propriétés et données) puis le contenu (propriétés et données)
    $PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);
     
    $PDF->Output("test2.PDF", "F");	
    	// affiche le document test.PDF dans une iframe.
    echo "
    	<iframe src='test2.PDF' width='100%' height='100%'>
    	[Your browser does <em>not</em> support <code>iframe</code>,
    	or has been configured not to display inline frames.
    	You can access <a href='./test2.PDF'>the document</a>
    	via a link though.]</iframe>";
    ?>
    Ce qui ne fonctionne pas : c'est le tableau...
    Il devrait pouvoir s'incrémenter en fonction du nombre de réponses de MySQL mais, il ne m'affiche aucune donnée...

    Merci d'avance

  8. #8
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Salut tu as tenté de mettre des print_r de ton tableau à différents endroits ???

    Exemple ci après

    $histo=mysql_query("select * from analyse where id_projet='$pro3'") or die (msql_error());
    while ($data=mysql_fetch_object($histo))
    {
    $contenuTableau=array();
    $chapitre=mysql_query("select * from tab_chap where id_chap='$data->id_chap'") or die(mysql_error());
    while ($data2=mysql_fetch_array($chapitre))
    {
    $contenuTableau = array_push($contenuTableau ,$data2->chap_nom, '100 %',$data->result);
    echo "<br>tableau = ";
    print_r($contenuTableau);


    }

    }

    ++
    JC

  9. #9
    Membre habitué
    Inscrit en
    Mai 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2007
    Messages : 262
    Points : 172
    Points
    172
    Par défaut
    Salut,

    J'ai tester ce que tu m'as dit mais ca ne fonctionne pas non plus.

    Pour le echo, je recois ceci :

    tableau = 3
    tableau = 3

    (J'ai 2 réponses dans ma boucle donc je le recoi 2 fois...)
    Mais il ne m'affiche absolument rien dans le tableau...

    Que faire ?

  10. #10
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Salut, peux-tu détailler les tables histo et chapitre de ta BDD ??

    Si ton tableau est vide, c'est peut-etre qu'il y a une instance de la table histo qui est vide et comme c'est la dernière instance de la table histo que avec laquelle tu remplis le contenuTaleau, c'est peut etre la raison...

    Sinon, sans voir les deux tables, je vois pas, ...

    ++
    JC

Discussions similaires

  1. [MySQL] création d'un tableau dynamique
    Par fabienfoo dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/12/2007, 14h54
  2. Création d'un tableau dynamique
    Par Stella74 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/11/2007, 15h12
  3. Création d'un tableau dynamique
    Par Faro dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 07/04/2007, 10h03
  4. Création d'un tableau dynamique avec XSL-FO
    Par lionelbrizuela dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/01/2006, 12h04

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