Variable PHP dans fichier PDF

Nouveau WRInaute
Bonjour à tous !

Pour mon site, j'ai souhaite mettre un formulaire en PHP pour les grossistes qui souhaitent commander des produits en quantité.

Je m'explique avec un exemple basic :

J'ai un champs sur la page dans lequel il faut indiquer le prix d'un article.
Le grossiste inscrit par exemple 10.
A ce moment là, je voudrais qu'un fichier PDF lui soit généré avec un bon de commande sous forme de tableau et avec le chiffre 10 dans un emplacement spécifique comme ceci :

img1nu.jpg


Cet exemple est bien plus complexe, moi je ne veux qu'un simple tableau (voir l'image en dessous).

Voici ce que j'ai :

Le script qui permet de générer un fichier PDF en passant par php (grâce à FPDF) :

Code:
<?php
include("phpToPDF.php");

$PDF=new phpToPDF();
$PDF->AddPage();
$PDF->SetFont('Arial','B',16);

// Définition des propriétés du tableau.
$proprietesTableau = array(
	'TB_ALIGN' => 'L',
	'L_MARGIN' => 15,
	'BRD_COLOR' => array(0,92,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,
	"Titre de la première colonne", "année N-1", "année N",
	);

// 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' => '',
	);	

// Contenu du tableau.	
$contenuTableau = array(
	"champ 1", 1, 2,
	"champ 2", 3, 4,
	"champ 3", 5, 6,
	"champ 4", 7, 8,
	);
	
	// 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();

?>

Et la page de mon site :

Code:
<html>
<center>
<br><br>
<FORM Method="POST" Action="test.php">
Prix : <INPUT type=text value="" size=9 name="prix">
             <INPUT type=submit value="Obtenir le bon de commande PDF">
    </FORM>

    <?php

    if(ISSET($_POST["prix"]))
    {
          $lien1 = ($_POST["prix"]);


          
          echo ' ';
    }

    ?>
</center>
</html>

Mais voilà le problème : echo ' ' permet d'afficher le resultat sous forme texte, donc deja ça ne passe pas. Et de plus, je ne sais pas comment combiner ces deux script. Je voudrais que lorsque le grossiste inscrit "10" dans le champs "prix" et clique sur "Obtenir le bon de commande PDF", un fichier PDF s'ouvre avec le tableau qui est généré par le script, qui s'affiche très bien quand j'ouvre le fichier php où se trouve ce script, je l'ai testé :

imgpl.jpg


Je veux qu'il y ai la variable "10" à la place de "champs 1" (par exemple).

Je ne sais pas si vous voyez ce que je veux dire...

Je souhaites mettre ce service en ligne au plus vite, alors merci d'avance à tous ceux qui auront la foi de tenter de m'aider ! :(

Merci encore. :wink:
 
WRInaute occasionnel
Déjà ton tableau
Code:
$contenuTableau = array(
   "champ 1", 1, 2,
   "champ 2", 3, 4,
   "champ 3", 5, 6,
   "champ 4", 7, 8,
   );
doit te retourner une erreur à cause de la virgule après le 8, il faut l'enlever car tu n'ajoutes aucun autre élément.

Sinon tu peux essayer quelque chose comme ça :
Code:
$proprietesTableau=array();
    if(ISSET($_POST["prix"]))
    {
          $lien1 = ($_POST["prix"]);
          echo $lien1; // Il faut entrer la variable à afficher
          Vu que tu as trois colonnes dans ton tableau, il te faut les deux autres variables ici $variable1 et $variable2
          array_push($proprietesTableau, $lien1, $variable1, $variable2); // Ajoute trois entrées au tableau $proprietesTableau
    }
 
WRInaute occasionnel
Bonjour,

Dans ce que tu appelles contenu du tableau, au lieu de mettre "$champs1" passe les variables "'.$ce_que_je_veux.'" et automatise la création du tableau pour avoir un nombre infini de ligne si jamais un acheteur veut une pleine page d'articles... L'idée directrice de FPDF est de changer en pdf ce que tu es capable d'afficher en html. Si tu es capable de sortir le tableau voulu en html, tu n'es pas loin de réussir en pdf.
 
Nouveau WRInaute
Bonsoir tout le monde,

tout d'abord merci pour ces réponses rapides !

mrPringle, j'ai essayé avec ce que tu m'as fourni :
Code:
<html>
<center>
<script type="text/javascript">
<!--
if (top.location.href != self.location.href)
  top.location.href = self.location.href;
//-->
</script>
<br><br>
<FORM Method="POST" Action="test.php">
MOT: <INPUT type=text value="" size=9 name="prix">
MOT: <INPUT type=text value="" size=9 name="variable1">
MOT: <INPUT type=text value="" size=9 name="variable2">
             <INPUT type=submit value="Tester">
    </FORM>

</center>
</html>


<?php
include("phpToPDF.php");

$PDF=new phpToPDF();
$PDF->AddPage();
$PDF->SetFont('Arial','B',16);

// Définition des propriétés du tableau.
$proprietesTableau=array();
    if(ISSET($_POST["prix"]))
	if(ISSET($_POST["variable1"]))
	if(ISSET($_POST["variable2"]))
    {
          $prix = ($_POST["prix"]);
		  $variable1 = ($_POST["variable1"]);
		  $variable2 = ($_POST["variable2"]);	

		  
          echo $prix; // Il faut entrer la variable à afficher
          array_push($proprietesTableau, $prix, $variable1, $variable2); // Ajoute trois entrées au tableau $proprietesTableau
    }

// 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,
	"Titre de la première colonne", "année N-1", "année N",
	);

// 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' => '',
	);	

// Contenu du tableau.	
$contenuTableau = array(
	@"$prix", 1, 2,
	"champ 2", 3, 4,
	"champ 3", 5, 6,
	"champ 4", 7, 8
	);
	
	// 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();

?>

Mais rien n'y fait, j'obtiens le message suivant :

FPDF error: Some data has already been output, can't send PDF file

J'avais lu qu'il ne fallait pas envoyer de POST avant ou après le script FPDF.

Une solution ? :roll:

@ erestrebian ==> je n'ai pas très bien compris. Afficher les variable générées dans un tableau HTML je peux me faire ça (suffit de mettre le code du tableau dans echo en y placant les variables mais comment générer ensuite un fichier PDF à partir de cette page HTML générée ? Comment transformer un page HTML (tableau) en fichier PDF en utilisant FPDF comme tu dis ? :roll:

En tout cas merci à tous les 2, c'est sympa de s'occuper de mon cas désespéré ! :(
 
WRInaute occasionnel
Essaie ça :

Code:
<?php
include("phpToPDF.php");

$PDF=new phpToPDF();
$PDF->AddPage();
$PDF->SetFont('Arial','B',16);

// Définition des propriétés du tableau.
$proprietesTableau=array();
    if(ISSET($_POST["prix"]))
   if(ISSET($_POST["variable1"]))
   if(ISSET($_POST["variable2"]))
    {
          $prix = ($_POST["prix"]);
        $variable1 = ($_POST["variable1"]);
        $variable2 = ($_POST["variable2"]);


          //echo $prix; // Il faut entrer la variable à afficher
          array_push($proprietesTableau, $prix, $variable1, $variable2); // Ajoute trois entrées au tableau $proprietesTableau
    }

// 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,
   "Titre de la première colonne", "année N-1", "année N",
   );

// 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' => '',
   );

// Contenu du tableau.
$contenuTableau = array(
   $prix, 1, 2,
   $variable1, 3, 4,
   $variable2, 5, 6,
   "champ 4", 7, 8
   );

   // 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();
exit;
?><html>
<center>
<script type="text/javascript">
<!--
if (top.location.href != self.location.href)
  top.location.href = self.location.href;
//-->
</script>
<br><br>
<FORM Method="POST" Action="test.php">
MOT: <INPUT type=text value="" size=9 name="prix">
MOT: <INPUT type=text value="" size=9 name="variable1">
MOT: <INPUT type=text value="" size=9 name="variable2">
             <INPUT type=submit value="Tester">
    </FORM>

</center>
</html>

Par contre tu devrais peut-être voir à embaucher un "vrai" développeur juste pour quelques heures afin de te faire un truc propre car avec du bricolage, tu vas te galérer sur le long en terme en ajoutant des rustines un peu partout.
Tout du moins, tu devrais faire quelques tutos PHP pour comprendre et maîtriser les bases. :)
 
Nouveau WRInaute
Ca fonctionne enfin ! Pour les $proprietesTableau, "{" n'était pas refermé d'ou une erreur php.

Merci à toi, mais en fait la boutique n'est pas la mienne, moi je n'ai que 17 ans et je peux me debrouiller en php c'est juste que PFPDF j'ai un peu de mal. J'aide un proche juste à mettre en place certaines choses en php car la personne s'occupe du marketing, etc. Mais j'y penserais, merci infiniment. :)
 
WRInaute passionné
Bonjour,

Pour ceux et celles qui ont un peu de mal avec FPDF, je recommande l'excellent TCPDF 5.0 qui est une bonne alternative, plus facile à mettre en place et toute aussi puissante (je m'en sert pour l'édition de mes factures / devis).
 
Discussions similaires
Haut