Formulaire To FPDF

Eléphant du PHP | 206 Messages

07 déc. 2005, 12:12

Bonjour à tous,

J'ai suivi un tuto pour générer des pdf à partir d'une BDD, jusque là pas de soucis. Je génère bien un pdf avec les données d'une table.

Mais le l'objectif de tout ça, est de générer un pdf après validation d'un formulaire. C'est à dire lorsque l'on valide le formulaire, 2 choses se passent :
Enregistrement des données dans la bdd
Obtenir un pdf avec uniquement les données du formulaires.

Et je bloc à ce niveau, je comprends pas comment récupérer l'id de mon formluaire et de le transmettre au générateur de pdf


code du formulaire :
      <form method="post" action="test.php?id_contact=<?php echo $id_contact;?>" enctype="multipart/form-data">
        <div align="center"><span class="texte_gras">Nom :</span><br>
          <input name="nom_col" type="texte" id="nom_col">
          <br>
          <br>
          <span class="texte_gras">Identifiant : </span><br>
          <input name="identifiant" type="texte" id="identifiant">
          <br>
          <br>
          <span class="texte_gras">T&eacute;l&eacute;phone :</span><br>
          <input type="texte"name="tel">
          <br>
          <br>
          <span class="texte_gras">Email :</span><br>
          <input type="texte"name="mail">
          <br>
          <br>
          <br>
          <input type="submit" value="Valider" name="submit">
          / <a href="contact.php" class="texte_lien"> Annuler</a>
          </p>
        </div>
      </form>
code du du fichier pdf
<?php

define('FPDF_FONTPATH','font/');
require('fpdf.php');

include("connection.inc.php");

//Select the Products you want to show in your PDF file
$result=mysql_query("select nom_col,tel,identifiant,mail from contact ORDER BY nom_col WHERE id_contact='".$_GET['id_contact']."'");
$number_of_contact = mysql_numrows($result);

//Initialize the 3 columns and the total
$column_nom_col = "";
$column_tel = "";
$column_identifiant = "";

//For each row, add the field to the corresponding column
while($row = mysql_fetch_array($result))
{
    $tel = $row["tel"];
    $nom_col = substr($row["nom_col"],0,20);
    $identifiant = $row["identifiant"];

    $column_nom_col = $column_nom_col.$nom_col."\n";
    $column_tel = $column_tel.$tel."\n";
    $column_identifiant = $column_identifiant.$identifiant."\n";

}
mysql_close();


//Create a new PDF file
$pdf=new FPDF();
$pdf->Open();
$pdf->AddPage();

//Fields Name position
$Y_Fields_Name_position = 10;
//Table position, under Fields Name
$Y_Table_Position = 16;

//First create each Field Name
//Gray color filling each Field Name box
$pdf->SetFillColor(255,25,62);
//Bold Font for Field Name
$pdf->SetFont('Arial','B',10);
$pdf->SetY($Y_Fields_Name_position);
$pdf->SetX(45);
$pdf->Cell(30,6,'Téléphone',1,0,'L',1);
$pdf->SetX(70);
$pdf->Cell(50,6,'Nom',1,0,'L',1);
$pdf->SetX(120);
$pdf->Cell(30,6,'Identifiant',1,0,'L',1);
$pdf->Ln();

//Now show the 3 columns
$pdf->SetFont('Arial','',12);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(45);
$pdf->MultiCell(25,6,$column_tel,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(70);
$pdf->MultiCell(50,6,$column_nom_col,1);
$pdf->SetY($Y_Table_Position);
$pdf->SetX(120);
$pdf->MultiCell(30,6,$column_identifiant,1,'L');

//Create lines (boxes) for each ROW (Contact)
//If you don't use the following code, you don't create the lines separating each row
$i = 0;
$pdf->SetY($Y_Table_Position);
while ($i < $number_of_contact)
{
    $pdf->SetX(45);
    $pdf->MultiCell(105,6,'',1);
    $i = $i +1;
}

$pdf->Output();
?>
 

Merci pour votre aide

Mammouth du PHP | 1029 Messages

07 déc. 2005, 12:43

Bonjour,

Il nous manque la partie où tu inséres les donées dans la bd, si d'office après avoir chargé le formulaire tu construits le pdf, alors fait un "Insert" avec les éléments avant ton "Select".

:lol:

MaitrePylos
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 206 Messages

07 déc. 2005, 12:49

Tu veux dire faire un INSERT au lieu du select dans la requête du pdf?

Mais si je fais un insert directement les données sont quand même enregistrées dans la bdd ?

voici le code d'enregistrement :
<?

include('connection.inc.php');


$query = "INSERT INTO contact(idcontact,nom_col,tel,identifiant,mail) VALUES ('','".$_POST['nom_col']."','".$_POST['tel']."','".$_POST['identifiant']."','".$_POST['mail']."')"; 

$result = mysql_query($query) or die ('Erreur SQL !<br>'.mysql_error());


header('location: test.php');
?>

Mammouth du PHP | 1029 Messages

07 déc. 2005, 13:53

Bon alors j'essaye de comprendre


Ton_Formulaire->test.php->Fichier_Fpdf.

Tu passe bien par 3 fichiers.

Si c'est le cas, le Get dans ta commande "Select", de ton pdf ne peut fonctionner.
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 206 Messages

07 déc. 2005, 14:48

oui c'est ça,

En faite, après le formulaire, les données sont traitées par test.php qui contient le script de transfomation en pdf.

Mais je n'arrive pas à récupérer les données dans le cas d'un formulaire.

Si je fais un simple appel à la base mon pdf se génère correctement.

Je n'arrive pas à lier le formulaire et le fichier qui traite le pdf.

Eléphant du PHP | 206 Messages

07 déc. 2005, 14:49

Si c'est le cas, le Get dans ta commande "Select", de ton pdf ne peut fonctionner.
Le get est censé récupérer l'id du formulaire pour le transformer en pdf. Mais ca cloche quelque part

Mammouth du PHP | 1029 Messages

07 déc. 2005, 15:41

Si tu passe par :

1- ton formulaire
2- ton fichier ou se trouve la commande "Insert"
3- ton fichier qui génére ton pdf


Je considère que tu as 3 fichiers.

Donc dans ce cas le $_get s'arrete dans la fichier 2, et il ne passe pas dans le fichier 3.

Dis moi si tu as bien 3 fichiers, sinon où setrouve quoi?

MaitrePylos
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 206 Messages

07 déc. 2005, 16:03

alors pour bien détailler :

J'ai bien 3 fichiers

Un qui contient le formulaire.
Un autre qui contient la requête sql (ajout.php)
Et mon fichier test.php qui contient le script de génération de pdf.

Je n'arrive tjs pas à faire le lien entre le fichier ajout.php et test.php, pour que le pdf généré ne contienne que les données du formulaire

Eléphant du PHP | 153 Messages

07 déc. 2005, 16:10

<? 

include('connection.inc.php'); 


$query = "INSERT INTO contact(idcontact,nom_col,tel,identifiant,mail) VALUES ('','".$_POST['nom_col']."','".$_POST['tel']."','".$_POST['identifiant']."','".$_POST['mail']."')"; 

$result = mysql_query($query) or die ('Erreur SQL !<br>'.mysql_error()); 


header('location: test.php?idcontact=<? echo $idcontact; ?>'); 
?> 

Eléphant du PHP | 206 Messages

07 déc. 2005, 16:19

Ok je vais essayer ça... Donc ca veut dire que ton code renvoi à test.php la bonne id. Mais il faut bien placer un get dans test.php pour récupérer cette id nan?

Eléphant du PHP | 153 Messages

07 déc. 2005, 16:32

oui en laissant le code pour le pdf que tu as posté au début ca marche

Eléphant du PHP | 206 Messages

07 déc. 2005, 16:39

Alors, cela enregistre bien le formulaire dans la bdd mais pour ce qui est du pdf j'ai ce message d'erreur :

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-7\www\site intranet\admin\pdf\test.php on line 9

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-7\www\site intranet\admin\pdf\test.php on line 17
FPDF error: Some data has already been output, can't send PDF file

Si je retire le WHERE le pdf se génère parfaitement. Tu crois que cela viens uniquement de la requète ?

Mammouth du PHP | 1029 Messages

07 déc. 2005, 16:50

Met le "ORDER BY" après le "WHERE"
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 206 Messages

07 déc. 2005, 16:53

on avance :)

je n'ai pas eu de message d'erreur le pdf s'est bien généré mais il est vide :/

dans ma barre d'adresse j'ai obetnu cette url un peu étrange :

test.php?idcontact=<?%20echo%20$idcontact;%20?>

Mammouth du PHP | 1029 Messages

07 déc. 2005, 17:14

bon dans les fichiers, après le début met le session_start
<?
session_start;
puis dans le fichier insert fait ceci
<?php
session_start;
include('connection.inc.php');


$query = "INSERT INTO contact(idcontact,nom_col,tel,identifiant,mail) VALUES ('','".$_POST['nom_col']."','".$_POST['tel']."','".$_POST['identifiant']."','".$_POST['mail']."')";

$result = mysql_query($query) or die ('Erreur SQL !<br>'.mysql_error());

$sql="SELECT idcontact
FROM contact
WHERE nom_col = $_POST['nom_col']";
$soluce = mysql_query($sql);

$_SESSION['idcontact'] = $soluce;


header('location: test.php); 
enfin dans le fpdf


//Select the Products you want to show in your PDF file
$result=mysql_query("select nom_col,tel,identifiant,mail from contact ORDER BY nom_col WHERE id_contact='".$_SESSION['id_contact']."'");
$number_of_contact = mysql_numrows($result);
Ne pas oublier le
session_start
dans chaque fichier.

MaitrePylos
L'expérience est la somme de toutes nos erreurs.