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] problème tableau FPDF en PHP/MySQL


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur réseaux
    Inscrit en
    Février 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 45
    Points : 101
    Points
    101
    Par défaut [FPDF] problème tableau FPDF en PHP/MySQL
    Bonjour,
    Je cherche depuis longtemps comment corriger mon problème que voici

    je fais une requête SQL sur ma base de données pour sélectionner les données afin de les afficher dans un tableau à l'aide de l'outil FPDF. Jusqu'à là, tout va bien.

    Le problème c'est que les données sélectionnées sont mis dans une seule colonne et non dans chacun des colonnes correspondantes. J'ai déjà bien entendu rechercher des solutions sur Google mais cela ne résout pas mon problème.

    Voici le code source :
    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
    130
    131
    132
    133
    134
    135
    136
    137
    <?php
    session_start();
     
    try
    {
    	$bdd = mysqli_connect('localhost', '<user>', '<password>', '<nom_base>');
    }
    catch(Exception $e)
    {
    	die('Erreur : '. mysqli_error());
    }
    $Type = $_SESSION['type'];
    $req = 'SELECT * FROM '.$Type.'';
    if($result = mysqli_query($bdd, $req))
    {
    	$champs = array();
    	$iCpt = 0;
    	while($infos = mysqli_fetch_field($result))
    	{
    		$NomChamp = $infos -> name;
    		$iCpt++;
    		$champs[$iCpt] = $NomChamp;
    	}
    }
     
    require('fpdf.php');
    class PDF extends FPDF
    {
    	function LoadData($file)
    	{
    		$lines = file($file);
    		$data = array();
    		foreach($lines as $line)
    		{
    			$data[] = explode(':', trim($line));
    		}
    		return $data;
    	}
     
    	function BasicTable($header)
    	{
    		$this -> SetX(82);  //espace entre la gauche de la page et l'entête du tableau
    		$this->SetFillColor(192,192,192); //cellule de l'entête en gris
    		$this->SetTextColor(0); //texte en noir
    		$this->SetFont('Arial', '', 16); //Arial 16
    		// En-tête
    		foreach($header as $col)
    			$this->Cell(40,7,$col,1,0,'C',true); //true pour afficher la couleur
    		$this->Ln(); //saut de ligne
    		$this->SetFont('Arial', '', 12); //remettre en Arial 12
    	}
     
    	function Table($data)
    	{
    		// Données
    		foreach($data as $row) 
    		{
    			$this -> SetX(82);
    			foreach($row as $col)
    			{
    				$this->Cell(40,7,$col,1,0,'C');
    			}
    			$this->Ln();
    		}
    	}
     
    	function Header()
    	{
    		//variable de sessions
    		$type = $_SESSION['type'];
    		$titre = "Outils de type ".$type."";
    		$user = $_SESSION['user'];
     
    		$this -> Image('Pibomulti.jpg', 10, 6, 40); //image
    		$this -> SetFont('Arial', '', 12); //Arial 12
    		$this -> Cell(0, 10, 'Utilisateur : '.$user.'', 0,1, 'R'); //afficher tout à droite le nom d'utilisateu
    		$this->SetFont('Arial', 'bu',22); //Arial gras souligné en taille 22
    		// Décalage à droite
    		// Titre
    		$this->Cell(0,10,utf8_decode($titre),0,1,'C'); //titre au centre
    		// Saut de ligne
    		$this -> Ln();
    	}
     
    	function Footer()
    	{
    		$date = date("d.m.Y"); //format de la date
    		$heure = date("H:i"); //format de l'heure
    		$this -> SetY(-15); //coordonnées de l'axe Y
    		$this -> SetFont('Arial', 'I', 12); //texte Arial 12 en italique
    		$this -> Cell(0, 10, 'Page '.$this -> PageNo(),0,0,'C'); //texte centré au milieu
    		$this -> SetY(-15);
    		$this -> SetFont('Arial', 'I', 12);
    		$this -> Cell(0, 10, $date.' / '.$heure,0,0,'L'); //affichage de la date à gauche
    		$this -> SetY(-15);
    		$this -> SetFont('Arial', 'I', 12);
    		$this -> Cell(0, 10, 'Copyright PiboTools, Pibomulti',0,0,'R'); //affichage du texte à droite
    	}
     
    	function AddCol($field=-1,$width=-1,$caption='',$align='L')
    	{
    		//Ajoute une colonne au tableau
    		if($field==-1)
    			$field=count($this->aCols);
    		$this->aCols[]=array('f'=>$field,'c'=>$caption,'w'=>$width,'a'=>$align);
    	}
    }
    // Instanciation de la classe dérivée
    $pdf = new PDF('L'); //nouveau document en paysage
    $header = array();
    for($i = 2; $i <= $iCpt; $i++)
    {
    	array_push($header, ''.$champs[$i].'');
    }
    //$data = $pdf -> LoadData('essai_tableau.txt');
    $pdf->AddPage(); //nouvelle page
    $pdf->BasicTable($header);
    $pdf->SetFont('Arial','',12); //police style et taille
    $data = array();
    for($i = 2; $i <= 3; $i++)
    {
    	$req2 = "SELECT ".$champs[$i]." FROM ".$Type."";
    	$result2 = mysqli_query($bdd, $req2);
    	$flux = fopen('essai_tableau.txt', 'a+');
    	while($donnees = mysqli_fetch_assoc($result2))
    	{
    		fwrite($flux, $donnees[''.$champs[$i].'']);
    		fwrite($flux, "\r\n");
    		$data = $pdf -> LoadData('essai_tableau.txt');
    		$pdf -> Table($data);
    		$pdf -> AddCol(''.$champs[$i + 1].'');
    		ftruncate($flux, 0);
    	}
     
    }
    $pdf->Output(); //faire sortir le document dans le navigateur
    ?>
    Et voici le résultat :Nom : Capture1.PNG
Affichages : 1386
Taille : 11,0 Ko

    Quelle est la correction à faire dans mon code s'il vous plaît?

    PHP : 5.5.12
    MySQL : 5.6.17

    utilise Wamp version Apache : 2.4.9
    Version FPDF : 1.7
    Windows 7 et Firefox 36.0.1

    Merci pour vos réponses.

  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
    Fiou j'ai rarement vu autant de bazare dans un seul code
    Il faut faire plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    session_start();
     
    $bdd = mysqli_connect('localhost', '<user>', '<password>', '<nom_base>');
     
    $result  = mysqli_query($bdd, 'SELECT * FROM '. $_SESSION['type']);
    $data = mysqli_fetch_all($result));
     
    $pdf = new PDF('L');
    $pdf->AddPage();
    $pdf->SetFont('Arial','',12);
    $pdf->BasicTable(array_keys($data[0]));
    $pdf->Table($data);
    $pdf->Output();

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur réseaux
    Inscrit en
    Février 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 45
    Points : 101
    Points
    101
    Par défaut
    Bonjour sabotage,
    Merci beaucoup pour ce code source je le teste plus tard et je te confirme s'il marche bien avec mon projet.

    Oui je sais que c'est le bazar dans mon code

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

Discussions similaires

  1. [MySQL] Problème d'incrément avec PHP - mySQL
    Par gilouu dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/10/2009, 13h22
  2. Problème d'installation de php-mysql sur RedHat.
    Par maldoror34 dans le forum Linux
    Réponses: 7
    Dernier message: 22/09/2009, 22h19
  3. [MySQL] problème remplissage liste dynamique php mysql
    Par jeinny dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 25/05/2009, 18h32
  4. [MySQL] Tableau financier en PHP/MySQL
    Par 512banque dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 13/10/2008, 16h03
  5. Problème antre ancienne version php/mysql et nouvelle
    Par yannicketolga dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 30/03/2006, 18h06

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