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

AJAX Discussion :

Transmettre le nom d'une fonction vers PHP


Sujet :

AJAX

  1. #1
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    janvier 2018
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : janvier 2018
    Messages : 196
    Points : 45
    Points
    45
    Par défaut Transmettre le nom d'une fonction vers PHP
    Bonjour,
    Je souhaiterai faire passer une fonction php à travers un système AJAX, avec cette configuration :
    fichier1.php
    Code php : 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
    <?php
         function fetch_data()  
         {  
                    $output = ''; 
                    ...
                    des choses sur l'output
                    ...
             }  
             return $output;
        } ?>
    <a type="button" class="btn btn-primary" onclick="executePDF()">Exporter en PDF</a>
            <script>
            function executePDF{
                $.ajax({
                    url: 'test.php',
                    type: 'post',
                    data: { "fetch_data" },
                    success: function(response) { console.log(response); }
                });
            }
            </script>
    Et ensuite du côté du fichier qui reçoit, j'ai quelque chose comme ceci:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
          $content .= 'le resultat passee';  
          $content .= fetch_data();  
          echo $content;
    Je pense que je m'y prends mal au niveau de l'ajax.
    Au passage, si il faut envoyer directement $output (le return de la function), plutôt que la function elle-même, ça me va très bien aussi.
    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    16 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 16 031
    Points : 32 835
    Points
    32 835
    Par défaut
    Bonjour,

    Citation Envoyé par Zarkoffe Voir le message
    ...Et ensuite du côté du fichier qui reçoit, ...
    J'ai l'impression que tu n'as toujours pas compris :
    • ni le principe d'Ajax,
    • ni le principe de côté serveur / côté client

    Dans le "fichier qui reçoit", il n'y a plus de PHP, puisque c'est la page affichée par le navigateur !!

    Donc, il faut transmettre la donnée reçue via Ajax, à un AUTRE fichier PHP externe, qui la traitera.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  3. #3
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    janvier 2018
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : janvier 2018
    Messages : 196
    Points : 45
    Points
    45
    Par défaut
    Merci pour ta réponse. Tu as raison, je m'y prenais très mal. Je n'ai pas du tout besoin d'AJAX, seulement d'un POST.
    J'ai construit mon post, petite question : est-il possible de passer une fonction PHP dans un POST?
    Le code ci-dessous de cette fonction dans mon POST:
    post.php
    Code php : 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
         <form action="test.php" method="post">
            <?php
            function fetch_data()  
            {  
                foreach($devisPDF as $PDFdevis) { 
                        $output = ''; 
                        $output .= '<tr>  
                                <td>'.$PDFdevis['article_ref'].'</td> 
                                <td>'.$PDFdevis['article_designationarticle'].'</td> 
                                <td>'.$PDFdevis['article_pu'].'</td> 
                                <td>'.$PDFdevis['article_unite'].'</td> 
                                <td>'.$PDFdevis['article_quantite'].'</td> 
                                <td>'.$PDFdevis['article_pu'].'</td> 
                                <td>'.$PDFdevis['article_total'].'</td> 
                            </tr>
                                ';  
                }  
                return $output;
            }         fetch_data(); ?>
     
             <p><input type="text" name="nom" value="<?php $output ?>" /></p>
            <input type="submit" class="btn btn-primary" value="Exporter en PDF">
        </form>
    J'execute ma fonction, donc je $output devrais récupérer la valeur de mes <td>, puis un input récupère sa valeur et enfin, j'ai un submit pour l'envoyer. J'ai déjà 3 warning/notices :
    Notice: Undefined variable: devisPDF in /opt/lampp/htdocs/Contact/Atelier/modal_header/Actions/etatdevis_load.php on line 19

    Warning: Invalid argument supplied for foreach() in /opt/lampp/htdocs/Contact/Atelier/modal_header/Actions/etatdevis_load.php on line 19

    Notice: Undefined variable: output in /opt/lampp/htdocs/Contact/Atelier/modal_header/Actions/etatdevis_load.php on line 32
    Le fichier censé récupérer la fonction :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
          require_once('../Include/TCPDF/tcpdf.php'); 
          $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);  
          ...
          //$content .= fetch_data(); 
          $content .=  $_POST['nom'];
          $content .= '</table>';  
          $obj_pdf->writeHTML($content);  
          $obj_pdf->Output('sample.pdf', 'I');  
    ?>
    Si quelqu'un a une idée du comment je vais m'y prendre pour passer ma fonction en POST pour la récupérer proprement du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          //$content .= fetch_data();
    je suis preneur à 200%.
    Merci d'avance

  4. #4
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    16 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 16 031
    Points : 32 835
    Points
    32 835
    Par défaut


    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  5. #5
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    janvier 2018
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : janvier 2018
    Messages : 196
    Points : 45
    Points
    45
    Par défaut
    On ne doit pas parler la même langue, je pose des questions très précises, je fournis tout le code nécessaire, j'explique le déroulé de mon code.
    Si tu ne comprends pas, pose à ton tour une question précise, la condescendance illégitime ne m'affecte pas, ne m'aide pas et ne fait rire que toi
    est-il possible de passer une fonction PHP dans un POST?
    Je sais pas, c'est pas assez clair? => https://parlez-vous-french.com/repon...ermee-oui-non/

  6. #6
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    16 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 16 031
    Points : 32 835
    Points
    32 835
    Par défaut
    OK.

    1- Réponse courte :
    Non, on ne peut pas "transmettre une fonction"...
    ...mais pourquoi diable aurait-on besoin de le faire ????

    2- réponse longue :

    Déjà, l'utilisation de la fonction PHP est fausse...

    2a- On n'est pas obligé de mettre la fonction PHP au sein du code HTML.
    Généralement, on met les fonctions PHP en tout début de script (ou mieux : dans un fichier externe, inclus).

    2b-
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function fetch_data()  
    {  
    	foreach($devisPDF as $PDFdevis) { 
    ...
    Le 1er message d'erreur indique "devisPDF non défini", et pour cause : $devisPDF n'est pas défini DANS la fonction
    -> il faut lui passer en paramètre (en supposant que $devisPDF soit défini en amont : à priori, c'est un array...).
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function fetch_data( $parametre )  
    ...

    2c-
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    	return $output;
    }
    fetch_data();
    Ici, le fetch_data();... ne sert à rien... puisque dans récupéré dans une variable !
    Il faudrait écrire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $output = fetch_data( $devisPDF );

    2d- Il faut donc écrire :
    Code php : 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
    <?php
    // 1- Fonction
    function fetch_data( $rowAll )  
    {  
    	$output = ''; 
    	if( !empty($rowAll) && is_array($rowAll) )
    	{
    		foreach($rowAll as $row) { 
    			$output .= '<tr>  
    					<td>'.$row['article_ref'].'</td> 
    					<td>'.$row['article_designationarticle'].'</td> 
    					<td>'.$row['article_pu'].'</td> 
    					<td>'.$row['article_unite'].'</td> 
    					<td>'.$row['article_quantite'].'</td> 
    					<td>'.$row['article_pu'].'</td> 
    					<td>'.$row['article_total'].'</td> 
    				</tr>
    					';  
    		}  
    	}
    	return $output;
    }
    ?>
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    // 2- UTILISATION
    $devisPDF = [....]; // (défini AILLEURS, EN AMONT.... )
     
    $output = fetch_data( $devisPDF ); 
    ?>

    2e- Ensuite, OUI, on pourrait transmettre le résultat ($output) dans un <input> (type="hidden").

    En l'occurrence, il s'agit d'une chaine : on utilisera htmlspecialchars() :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="nom" value="<?php echo htmlspecialchars($output); ?>" />


    3- MAIS, à mon avis, si tu es obligé de faire ça, c'est certainement une erreur de CONCEPTION...

    Généralement, on transmet juste un identifiant de ligne d'une table de BDD, dans laquelle on a enregistré le données.
    Et la requête se fait dans le fichier de traitement.


    Cela dit, on ne sait rien de plus que le code que tu donnes...

    Donc, je confirme : JE NE COMPRENDS RIEN à ce que tu racontes...
    ... et je doute que tu comprennes toi-même.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  7. #7
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    janvier 2018
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : janvier 2018
    Messages : 196
    Points : 45
    Points
    45
    Par défaut
    Merci pour ta réponse.
    Je vais t'expliquer de A à Z ce que je veux faire.
    Je cherche à produire un PDF en ce code là : https://www.webslesson.info/2016/10/...df-in-php.html
    La seule petite différence, est que moi j'utilise un tableau dynamique chargé par une liste AJAX. Je vais te mettre l'intégralité de mon code pour que tu ais vraiment tout le merdier.
    fichier etatdevis.php : fenêtre modale qui contient ma liste déroulante ajax (fonctionnel bien sûr).
    Code html : 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
    <?php if(isset($_POST['client_id'])) { include '../../../Include/connect.php'; ?>
     
    <div id="etatdevis_ajax">
        <div id="etatdevis" class="modal fade bd-example-modal-lg" role="dialog">
            <div class="modal-dialog modal-dialog-centered" role="document" style="width:1200px;">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal">&times;</button>
                        <h3 class="modal-title">
                        <img src="../Assets/favicon.png" style="width: 60px; height: 60px;">Exporter le devis en PDF</h3>        
                    </div>
                    <div class="container">
                        <div class="row">
                             //  $_POST fait en amont, ne t'y attarde pas cela fonctionne
                            <?php $varsociete  = isset($_POST['client_id'])? $_POST['client_id']:'null'; ?>
                            <div class="pull-left form-group col-md-6" style="padding-left:5%; padding-top:1%; text-align:center;">
                                <label for="title">Sélectionnez la référence de votre devis</label><br />
                                <select class="form-control col-lg-3" onchange="devisPdf(this.value)">
                                    <?php
                                    $client = $bdd->prepare('SELECT DISTINCT article_devis, devis_ref
                                        FROM article, devis, client
                                        WHERE article_devis  = devis_id
                                            AND client_contact = :client_contact
                                            AND client_id   = :devis_client
                                        ORDER BY article_devis ASC');
                                    $client->execute([
                                        ':client_contact' => $_SESSION['Contact_id'],
                                        ':devis_client'   => $varsociete
                                    ]);
                                    
                                    $nb = $client->rowCount();
                                    if ($nb == 0) 
                                    { ?>
                                        </select><div class="alert alert-danger">
                                            <?php echo '<span style="text-align:center; font-size:12px;"> Vous n\'avez pas de devis pour ce client. Créez-en un pour pouvoir le sortir en PDF. </span> '; ?>
                                        </div><?php 
                                    } 
                                    else { 
                                    echo "<option></option>";
                                        while ($data = $client->fetch(PDO::FETCH_ASSOC)) {
                                            echo "<option value=\"{$data['article_devis']}\">
                                                {$data['devis_ref']}
                                            </option>";
                                        } 
                                    }
                                    
                                    $client->closeCursor();
                                    ?>
                                </select>
                            </div>
                            <div class="pull-right col-md-4">
                                <div class="alert alert-success">
                                    <?php $show_client = $bdd->query('SELECT client_societe FROM client WHERE client_id = "'.$varsociete.'"');
                                    $code = $show_client->fetch(); 
                                    echo 'Client sélectionné :  <strong> ' .($code[0]). '</strong>'; ?>
                                </div>
                            </div>
                        </div>
                        <div id="devisToPDF">
                            <div class="alert alert-info" style="text-align:center;">
                                <strong>Info:</strong> Choisissez un devis pour pouvoir l'exporter en PDF.
                            </div>
                        </div>
                    </div>
            <script>
            function devisPdf(article_devis)
            {
                if (article_devis == "") {
                    $("#devisToPDF").html("");
                } else {
                    //getuser.php (fiche client)
                    $.ajax({
                        method: "POST",
                        url: "modal_header/Actions/etatdevis_load.php",
                        data: { article_devis : article_devis }
                    })
                    .done(function( retour_html ) {
                        $("#devisToPDF").html( retour_html );
                    })
                    .fail(function() {
                        alert( "error devis article loading" );
                    });
                }
            }
            </script>
     
            <?php } 
            else { ?>
                <div id="etatdevis_ajax">
                    <div id="etatdevis" class="modal fade bd-example-modal-lg" role="dialog">
                        <div class="modal-dialog modal-lg">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                                    <img src="../Assets/favicon.png" style="width: 60px; height: 60px;">Exporter le devis en PDF</h3> 
                                </div>
                                <div class="alert alert-info">
                                    <?php echo '<span style="text-align:center; font-weight:bold;">Veuillez choisir un client</span> '; ?>
                                </div>
                            </div>
                        </div>
                    </div>	
                </div>	
                <?php   } ?>
            </div>
        </div>
    </div>
    etatdevis_load.php : fichier viser par l'ajax, qui me sort le tableau d'articles lié à mon devis. (fonctionnel aussi).
    Code html : 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
    <?php include '../../../Include/connect.php' ;
     
        $req_devis = "SELECT * FROM article, devis, client WHERE UPPER(article_devis) = :article_devis AND article_devis  = devis_id 
        AND devis_client = client_id ORDER by article_devis DESC";
        $stmt = $bdd->prepare($req_devis);
        $stmt->bindValue('article_devis',strtoupper(trim($_POST['article_devis'])),PDO::PARAM_STR);
        $stmt->execute(); 
     
        $messages = array();
            while ($PDFdevis = $stmt->fetch()){
              $devisPDF[] = $PDFdevis;
         } 
         ?>
         <!--
         <form action="test.php" method="post">
            </php
            function fetch_data()  
            {  
                foreach($devisPDF as $PDFdevis) { 
                        $output = ''; 
                        $output .= '<tr>  
                                <td>'.$PDFdevis['article_ref'].'</td> 
                                <td>'.$PDFdevis['article_designationarticle'].'</td> 
                                <td>'.$PDFdevis['article_pu'].'</td> 
                                <td>'.$PDFdevis['article_unite'].'</td> 
                                <td>'.$PDFdevis['article_quantite'].'</td> 
                                <td>'.$PDFdevis['article_pu'].'</td> 
                                <td>'.$PDFdevis['article_total'].'</td> 
                            </tr>
                                ';  
                }  
                return $output;
            }         fetch_data(); ?>
     
             <p><input type="text" name="nom" value="</php $output ?>" /></p>
            <input type="submit" class="btn btn-primary" value="Exporter en PDF">
        </form> -->
     
            <div class="col-xs-12">
                <div id="content" style="background-color:white">
                    <?php foreach($devisPDF as $PDFdevis) { ?>
     
                        <h4><?php echo $PDFdevis['client_societe'] ?></h4>
                        <p><?php echo $PDFdevis['client_adresse'] ?></p>
                        <p><?php echo $PDFdevis['client_codepostal'].  '   ' .$PDFdevis['client_ville']; ?></p>
                    <?php  break; } ?>
     
                    <table id="demo" class="table table-bordered" style="width:1100px;">
                        <thead> 
                            <tr class='warning'>
                                <th width="10%">Ref Article</th>
                                <th width="10%">Désign Article</th>
                                <th width="10%">Unite</th>        
                                <th width="10%">Prix Unitaire</th>
                                <th width="10%">Quantité</th>
                                <th width="10%">Prix Net U</th>
                                <th width="10%">Total</th>
                            </tr> 
                        </thead>
                        <tbody>
                            <?php foreach($devisPDF as $PDFdevis) { ?>
                            <tr>
                                <td type="text" name="article_ref" value="<?php $PDFdevis['article_ref'] ?>"><?php echo $PDFdevis['article_ref'] ?></td>
                                <td><?php echo $PDFdevis['article_designationarticle'] ?></td>
                                <td><?php echo $PDFdevis['article_pu'] ?></td>
                                <td><?php echo $PDFdevis['article_unite'] ?></td>
                                <td><?php echo $PDFdevis['article_quantite'] ?></td>
                                <td><?php echo $PDFdevis['article_pu'] ?></td>
                                <td><?php echo $PDFdevis['article_total'] ?></td>
                            </tr>
                            <?php } ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
    Ce fichier contient mon bouton qui, je voudrai, appelera test.php, qui produira un fichier PDF avec l'aide de la librairie TCPDF, tout en utilisant mon tableau d'article chargé par l'AJAX bien évidemment.
    Code php : 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
    <?php
        require_once('../Include/TCPDF/tcpdf.php'); 
        $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);  
        $obj_pdf->SetCreator(PDF_CREATOR);  
        $obj_pdf->SetTitle("Export HTML Table data to PDF using TCPDF in PHP");  
        $obj_pdf->SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING);  
        $obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));  
        $obj_pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));  
        $obj_pdf->SetDefaultMonospacedFont('helvetica');  
        $obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER);  
        $obj_pdf->SetMargins(PDF_MARGIN_LEFT, '5', PDF_MARGIN_RIGHT);  
        $obj_pdf->setPrintHeader(false);  
        $obj_pdf->setPrintFooter(false);  
        $obj_pdf->SetAutoPageBreak(TRUE, 10);  
        $obj_pdf->SetFont('helvetica', '', 12);  
        $obj_pdf->AddPage();  
        $content = '';  
        $content .= '  
        <h3 align="center">Export HTML Table data to PDF using TCPDF in PHP</h3><br /><br />  
        <table border="1" cellspacing="0" cellpadding="5">  
            <tr>  
                <th width="10%">Ref Article</th>
                <th width="10%">Désign Article</th>
                <th width="10%">Unite</th>        
                <th width="10%">Prix Unitaire</th>
                <th width="10%">Quantité</th>
                <th width="10%">Prix Net U</th>
                <th width="10%">Total</th>
            </tr>  
        ';  
        $content .= fetch_data();  
        $content .= '</table>';  
        $obj_pdf->writeHTML($content);  
        $obj_pdf->Output('sample.pdf', 'I');  
     
    ?>
    Ici donc, j'appele ma fonction fetch_data(), qui aurait récupéré ce que l'AJAX lui aura balancé, et qui aura à son tour été envoyé à test.php pour produire le PDF.
    Voilà je ne pense pas avoir oublié d'éléments, si tu as des questions sur mon code n'hésite pas (il est loin d'être parfait, notamment au niveau de la requête SQL de etatdevis_load.php).
    Mon client choisis sont devis dans une liste, le tableau se charge. Tout cela fonctionne. C'est l'étape de création de PDF lorsque l'on clique sur le bouton (tout en y incluant mes articles générés par l'ajax) qui pose problème.

    Merci d'avance

  8. #8
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    16 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 16 031
    Points : 32 835
    Points
    32 835
    Par défaut
    Bonjour,

    Ce que tu veux faire n'a rien de sorcier.
    Tu n'es pas le premier non plus.
    Donc : ne va pas chercher de solution "exotique" et "tarabiscotée" !

    Pour générer le fichier PDF (via le fichier test.php) :
    • la SEULE chose à lui transmettre est ... l'identifiant/index auto-incrément du devis, enregistré en BDD !
      ET C'EST TOUT !

    Par conséquent, le bouton/formulaire sera :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action="test.php" method="post">
      <input type="hidden" name="devis_id" value="<?php echo $PDFdevis['devis_id'] ?>" />
      <input type="submit" class="btn btn-primary" value="Exporter en PDF">
    </form>

    DANS le fichier test.php :
    • tu récupères devis_id
    • tu (re)fais la requête qui va bien et tu (re)construis ton tableau (COMME dans etatdevis_load.php !)
    • tu génères le PDF.

    Il n'y a rien de compliqué.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  9. #9
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    janvier 2018
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : janvier 2018
    Messages : 196
    Points : 45
    Points
    45
    Par défaut
    Parfait, ça tourne! J'ai fais le tour et testé plusieurs choses, tout semble ok.
    Sujet résolu, merci à toi et bonne semaine.

  10. #10
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    16 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 16 031
    Points : 32 835
    Points
    32 835
    Par défaut
    Même pas un petit ?
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

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

Discussions similaires

  1. Réponses: 17
    Dernier message: 06/03/2008, 11h47
  2. Réponses: 0
    Dernier message: 26/01/2008, 16h06
  3. php et google AJAX Search API
    Par anis_el_madani dans le forum Langage
    Réponses: 2
    Dernier message: 21/06/2007, 23h11
  4. [Conception] checkbox in php function
    Par ibtisss dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/04/2006, 18h01
  5. Function dans AJAX ?
    Par shadowbob dans le forum Langage
    Réponses: 6
    Dernier message: 22/01/2006, 01h49

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