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] Afficher Table de la base de données


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 12
    Par défaut [FPDF] Afficher Table de la base de données
    Bonjour ,
    Je souhaite faire afficher dans mon PDF tout le contenu de ma table et ses titres j'utilise la fonction FPDF .
    Dans mon tp l'utilisateur choisit une comission qu'il souhaite faire afficher , puis le pdf ce génère .
    j'ai réussit à les faire afficher mais mon problème est que les valeurs de ma base de données s'affiche en double ce qui me décale tout .
    Pouvez-vous m'aider à faire en sorte que mes valeurs ne s'affiche qu'une seule fois et dans la bonne colonne .

    Table que je souhaite afficher :

    Nom : table.PNG
Affichages : 820
Taille : 12,0 Ko

    PDF avec problème :
    Nom : pdf.PNG
Affichages : 857
Taille : 15,1 Ko


    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
     
    <?php
    require_once("/include/class_pdo_equipe10.php");
    require('/fpdf/fpdf.php');
    if(isset($_POST['PDF'])){
    class PDF extends FPDF
    {
        function BasicTable($header, $data)
    {
        // En-tête
        foreach($header as $col)
            $this->Cell(40,7,$col,1);
        $this->Ln();
        // Données
        foreach($data as $row)
        {
            foreach($row as $col)
                $this->Cell(40,6,$col,1);
            $this->Ln();
        }
    }
    }
    $pdf = new PDF();
    $pdf->AddPage('L');
    $pdf->SetFont('Arial','B',12);
    $action = $pdo->get_actionComission($_POST['comission']);
    //var_dump($action);
    /*foreach($action as $act){
    	$numAction = $act[0];
        $numAmis = $act[1];
        $numComission = $act[2];
        $nomAction = $act[3];
        $dateDebutAction = $act[4];
        $dureeAction = $act[5];
        $montantTotalAction = $act[6];*/
     
      //  $text = sprintf("%s  %s  %s \n%s  %s",$nomAction );
      $header = array('NumAction', 'numAmis', 'nomComission', 'nomAction','dateDebutAction','dureeAction','montantTotalAction');
      $pdf->BasicTable($header,$action);
     
      //$pdf->Cell(40,10,utf8_decode($nomAction),1);
     
    $pdf->Output();
    }
    ob_start();
    $title="PDF action";
    $css="";
    $bureauComission = $pdo->get_commission();
     
    ?>
    <form method="post" action="">
        <div class="form-group col-md-4">
     
            <label for="inputState" class="col-sm-2 col-form-label">Comission</label>
            <div class="col-sm-10">
                <select id="inputState" class="form-control form-control-sm" name="comission">
                    <option selected="" disabled="" required="">Choisir...</option>
                    <?php
     
            foreach($bureauComission as $unBureau){?>
                    <option value=<?php echo $unBureau['NUMCOMISSION'];?>><?php echo $unBureau['NOMCOMISSION']; ?></option>
                    <?php } ?>
                </select>
            </div>
        </div>
        <div class="col-sm-10">
            <button type="submit" class="btn btn-primary" class="form-control form-control-sm" name="PDF"
                value="PDF">Afficher le PDF</button>
        </div>
    </form>
    <?php
    $content = ob_get_clean();
    require_once('vue/_template/template.php');
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
               function get_actionComission($comission){
                       $req4="SELECT * FROM action where NUMCOMISSION = '$comission'";
                       $res4 = $this->monPdo->query($req4);
                       $connect = $res4->fetchAll();
                       return $connect;
               }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
               function get_commission(){
                $reqGetCommission = 'select * from comission';
                $getCommission = $this->monPdo->query($reqGetCommission);
                $ligneComission = $getCommission->fetchAll();
                return $ligneComission;
            }

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Par défaut
    re-salut Robert-Dev,

    tout s'affiche en double car tu fetch tes infos (recuper en bdd) via fetchall(), du coup tu recuperes un tableau associatif+un tableau numeric.
    regarde cet exemple :

    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
    $q = $db->query('SELECT * FROM BilletComments.News ORDER BY id DESC LIMIT 2');
    $data = $q->fetchall();
     
    echo '<pre>';echo print_r($data);
     
    /*affiche
    Array
    (
        [0] => Array
            (
                [id] => 71
                [0] => 71
                [pseudo] => jh
                [1] => jh
                [title] => question
                [2] => question
                [textN] => ;kjhlkjh
                [3] => ;kjhlkjh
                [quand] => 2019-05-13 16:11:46
                [4] => 2019-05-13 16:11:46
            )
     
        [1] => Array
            (
                [id] => 70
                [0] => 70
                [pseudo] => anna
                [1] => anna
                [title] => comment
                [2] => comment
                [textN] => helle i am anna
                [3] => helle i am anna
                [quand] => 2019-05-10 13:50:24
                [4] => 2019-05-10 13:50:24
            )
    )*/

    alors que tu dois utiliser $q->fetch(PDO::FETCH_ASSOC) si tu desirs recuperer un tableau associatif. ou encore $q->(PDO::FETCH_NUM ) pour un tableau numeric. Mais il y a encore d'autres options, vois la doc php https://www.php.net/manual/fr/pdostatement.fetch.php
    exemple avec fetch(PDO::FETCH_ASSOC)

    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
    $q = $db->query('SELECT * FROM BilletComments.News ORDER BY id DESC LIMIT 2');
     
    while($data = $q->fetch(PDO::FETCH_ASSOC))//ATTENTION, dans le cas de fetch() tu dois boucler ton $data pour recuperer toutes les infos
    {
    	echo '<pre>';echo print_r($data);
    }
     
    /*afficheArray
    (
        [id] => 71
        [pseudo] => jh
        [title] => question
        [textN] => ;kjhlkjh
        [quand] => 2019-05-13 16:11:46
    )
    1
    Array
    (
        [id] => 70
        [pseudo] => anna
        [title] => comment
        [textN] => helle i am anna
        [quand] => 2019-05-10 13:50:24
    )
    */

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 12
    Par défaut
    J'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
               function get_actionComission($comission){
                       $req4 = $this->monPdo->query("SELECT * FROM action WHERE NUMCOMISSION = '$comission'");
                       while ($data = $req4 -> fetch(PDO::FETCH_ASSOC))
                       {
                        return $data;
                       }
               }
    sauf que j'ai l'erreur suivante :

    Warning: Invalid argument supplied for foreach() in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\ppe33w2018_equipe10\vue\v_pdfComission.php on line 16



    Fatal error: Uncaught exception 'Exception' with message 'FPDF error: Some data has already been output, can't send PDF file' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\ppe33w2018_equipe10\fpdf\fpdf.php:271
    Stack trace:
    #0 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\ppe33w2018_equipe10\fpdf\fpdf.php(1063): FPDF->Error('Some data has a...')
    #1 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\ppe33w2018_equipe10\fpdf\fpdf.php(999): FPDF->_checkoutput()
    #2 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\ppe33w2018_equipe10\vue\v_pdfComission.php(42): FPDF->Output()
    #3 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\ppe33w2018_equipe10\controleur\c_pdf.php(7): include('C:\Program File...')
    #4 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\ppe33w2018_equipe10\index_equipe10.php(16): include('C:\Program File...')
    #5 {main}
    thrown in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\ppe33w2018_equipe10\fpdf\fpdf.php on line 271


  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Par défaut
    isole ta fonction ''get_actionComission($comission)'' de ton script, test la separement afin de t'assurer qu elle fonctionne (mais normalement ca doit etre bon).

    ton probleme vient de ton pdf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Uncaught exception 'Exception' with message 'FPDF error: Some data has already been output, can't send PDF file' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\projects\ppe33w2018_equipe10\fpdf\fpdf.php:271
    Stack trace:
    ton $data renvoye par ta fonction ''get_actionComission($comission)'' est un array. Du coup ton $action est egualement un array (mais plus le meme qu'avec fetchall(), en effet fetchall() renvoie un array dans un array, alors que fetch() renvoie un simple array, vois mon exemple).

    fait voir ta fonction : BasicTable($header,$action).

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Par défaut
    tiens encore une idee, sans rien changer a ton script, ecrit la fonction comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function get_actionComission($comission){
                       $tab =[];
                       $req4 = $this->monPdo->query("SELECT * FROM action WHERE NUMCOMISSION = '$comission'");
                       while ($data = $req4 -> fetch(PDO::FETCH_ASSOC))
                       {
                        $tab[] = $data;
                       }
                       return $tab;
               }
    on remets dans la meme configuration : des array dans un array. donc si ton script fonctionnait (meme si les infos doublais) la ca devrait etre bon sans rien changer.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 12
    Par défaut
    Juste dernière question sais-tu comment je pourrais faire afficher dans mon pdf le nom de la comission à la place du numéro ?
    Nom : pdf2.PNG
Affichages : 801
Taille : 16,5 Ko


    Autre petit soucis quand mon pdf ce génère si le texte et trop long sa déborde de la colonne .
    Nom : pdf3.PNG
Affichages : 797
Taille : 16,4 Ko

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Par défaut
    je devine que ta commission apparait sous forme de numero (son id) car tu passes via une table de liaison (qui t'associe deux autres table) n'est ce pas ? si c'est le cas, dans ta request, fait une jointure sur l'id de ta commission et recuperes son nom. dis moi si je me trompes ??

    pour ton pdf, desole je ne connait pas trop.

Discussions similaires

  1. Afficher les nom des tables d'une base de donnée
    Par newmar dans le forum Administration
    Réponses: 4
    Dernier message: 02/04/2008, 16h40
  2. Afficher la liste des Tables d'un Base de Donnée.
    Par faressam dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/03/2008, 05h36
  3. Réponses: 5
    Dernier message: 10/01/2008, 08h47
  4. [VB.NET]afficher les tables d'une base de donnée
    Par amine_sh dans le forum Windows Forms
    Réponses: 6
    Dernier message: 06/11/2006, 11h00
  5. [MySQL] Afficher les tables d'une base de données ?
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/08/2006, 21h25

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