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

PHP & Base de données Discussion :

Fichier PDF avec PHP et MySQL


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 3
    Par défaut Fichier PDF avec PHP et MySQL
    Bonjour chers frères et soeurs,

    j'aimerais générer une facture en PDF avec PHP et MySQL et j'utilise FPDF. Il est vrai je ne suis pas assez bon en orienté objet, mais j'y vois mieux.

    Au fait mon soucis, c'est l'erreur là : 
    ( ! ) Notice: Undefined offset: 1 in C:\wamp\www\siteSTA\testfacture\index.php on line 87
    Call Stack
    # Time Memory Function Location
    1 0.0280 160152 {main}( ) ..\index.php:0
    2 0.0980 563416 PDF->FancyTable( ) ..\index.php:103
    qui vient à chaque fois. Sinon que je voudrais avoir, un fichier PDF (Facture : Nom produit, Qté, PU, P HT, PTTC), dont les données sont prises directement dans ma base de données.

    Voici mon code :

    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
      //////////////////////////////////////////////////////////////////////
        //Récupération des données de la base et création du fichier.txt /////
        /////////////////////////////////////////////////////////////////////
    try
    {
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        include("../config/config.php");
        $bdd = new PDO($Hote_BD_PDO, $user_PDO, $PW_PDO, $pdo_options);
     
        $file = fopen ("fichier.txt" , "w+");
        $req = $bdd->query("SELECT * FROM licence ORDER BY id_licence DESC ");
        while($donnees = $req->fetch())
        {
            $_xml = $donnees['nomproduit'].";".$donnees['quantite_licence'].";".$donnees['prix']." \r\n";
            fputs ($file , $_xml);
            fputs ($file , "\n");
        }
        fclose($file);
        $req->closeCursor();
     
     
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
     
     
        ///////////////////////////////////////////
        // Génération du fichier PDF /////////////
        /////////////////////////////////////////
     
     
        require('fpdf.php');
     
        class PDF extends FPDF
        {
        //Chargement des données
        function LoadData($file)
        {
            //Lecture des lignes du fichier
            $lines=file($file);
            $data=array();
            foreach($lines as $line)
                $data[]=explode(';',chop($line));
            return $data;
        }
     
        //Tableau Données
        function FancyTable($header,$data)
        {
            //Couleurs, épaisseur du trait et police grasse
            $this->SetFillColor(255,0,0);
            $this->SetTextColor(255);
            $this->SetDrawColor(128,0,0);
            $this->SetLineWidth(.3);
            $this->SetFont('','B');
            //En-tête
            $w=array(40,35,45);
            for($i=0;$i<count($header);$i++)
                $this->Cell($w[$i],7,$header[$i],1,0,'C',1);
            $this->Ln();
            //Restauration des couleurs et de la police
            $this->SetFillColor(224,235,255);
            $this->SetTextColor(0);
            $this->SetFont('');
            //Données
            $fill=false;
            foreach($data as $row)
            {
                $this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
                $this->Cell($w[1],6,$row[1],'LR',0,'R',$fill);
                $this->Cell($w[2],6,utf8_decode($row[2]),'LR',0,'R',$fill);
                $this->Ln();
                $fill=!$fill;
            }
            $this->Cell(array_sum($w),0,'','T');
        }
        }
     
        $pdf=new PDF();
        //Titres des colonnes
        $header=array('Nom produit','Quantité','Prix');
        //Chargement des données
        $data=$pdf->LoadData('fichier.txt');
        $pdf->SetFont('Arial','',14);
        $pdf->AddPage();
        $pdf->FancyTable($header,$data);
        $pdf->Output();
        //}
    J'ai vraiment besoin de votre aide SVP. Merci pour tous ce que vous ferai pour m'aider.

    Cordialement

  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
    Par défaut
    Tu pourrais nous dire à quelles lignes correspondent les erreurs ?

    En regardant rapidement, cette ligne me gêne :
    En effet tu as déjà un retour à la ligne mis juste avant.
    Ca laisserait que ton fichier de données à des lignes vides.
    Mais de toute façon ce passage par un fichier est complètement inutile.

    Tu peux faire simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = $bdd->query("SELECT * FROM licence ORDER BY id_licence DESC ");
    $data = $req->fetchAll(PDO::FETCH_ASSOC);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 3
    Par défaut
    Bonsoir sabotage, content de te lire

    En ce qui concerne mes erreurs, ce sont les lignes 72 et 73 de mon code.

    Lorsque j'ai fait comme vous m'avez recommandé, j'ai eu encore une erreur
    Notice: Undefined index: nomproduit in C:\wamp\www\siteSTA\testfacture\index.php on line 53
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $file = fopen ("fichier.txt" , "w+");
    	$req = $bdd->query("SELECT * FROM licence ORDER BY id_licence DESC ");
    	$data = $req->fetchAll(PDO::FETCH_ASSOC);
     
    	$_xml = $data['nomproduit'].";".$data['quantite_licence'].";".$data['prix']." \r\n";
    	fputs ($file , $_xml);
    	fputs ($file , "\n");
     
    	fclose($file);
    	$req->closeCursor();
    Cordialement

  4. #4
    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
    Par défaut
    Il ne faut garder que les lignes 2 et 3.
    Cette ligne s'en va aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $data=$pdf->LoadData('fichier.txt');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 3
    Par défaut
    Bonjour sabotage, je n'ai pas compris. Tu veux bien m'expliquer.

    Cordialement

  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
    Par défaut
    Dans le bout de code que tu as remis, il ne faut garder que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = $bdd->query("SELECT * FROM licence ORDER BY id_licence DESC ");
    $data = $req->fetchAll(PDO::FETCH_ASSOC);
    et plus bas il faut supprimer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $data=$pdf->LoadData('fichier.txt');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. création d'un fichier pdf avec php
    Par crati dans le forum Langage
    Réponses: 3
    Dernier message: 12/03/2009, 10h55
  2. [MySQL] creation Fichier pdf avec php
    Par toulousain3117 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 14/11/2008, 14h48
  3. [FPDF] Créer un fichier pdf avec PHP
    Par picoloto dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 24/09/2008, 22h05
  4. [FPDF] Génération de fichiers PDF avec PHP
    Par deY! dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 10/04/2006, 17h06
  5. [FPDF] Cherche informations pour afficher un fichier pdf avec PHP
    Par Hans_B dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 22/03/2006, 11h57

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