Export base de données en fichier pdf

Résolu
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 15 févr. 2006 à 09:31
 soumboula - 26 mai 2008 à 16:41
Bonjour tout le monde, j'ai un soucis que je n'arrive pas à régler et qui devient assez urgent pour moi, j'ai une base de données Access qui contient l'annuaire interne de ma société, je veux l'exporter en fichier pdf en donnant le choix à l'utilisateur les données qu'il veut exporter.J'ai l'erreur undefined variable etc... sur les lignes :
$pdf->cell(5,0.7,$row['Societe'],1,0,'C',$fond);

$pdf->cell(5,0.7,$row['Fixe'],1,0,'C',$fond);

$pdf->cell(5,0.7,$row['Fax'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Portable'],1,0,'C',$fo
nd);
$pdf->cell(5,0.7,$row['Mail'],1,0,'C',$fond);

Voici mon code :

<html>


<head>


</head>


<form action="convert_pdf.php" method="POST">


Site

N° téléphone fixe

N° fax

N° portable

Adresse e-mail


</form>



<?php


$base="D:\\Qualite\Annuaire\Annuaire.mdb";
$Annuaire="Annuaire";


//connection au serveur:
$cnx = odbc_connect( "DSN_Annuaire","" ,"") or die ("Impossible de se connecter à la base de donnée") ;

//PDF


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


$pdf=new FPDF('L','cm','A4');

//Titres des colonnes
$header=array('Nom - Prénom','Site','N° Téléphone fixe','N° fax','N° Portable','Adresse e-mail');

$pdf->SetFont('Arial','B',14);
$pdf->AddPage();
$pdf->SetFillColor(96,96,96);
$pdf->SetTextColor(255,255,255);


if (isset ($_POST['submit']) && $_POST['submit'] === 'Valider') {


$addInQuery = implode (', ', $_POST['choix']);
echo "$addInQuery";

$resultat = odbc_exec( $cnx, "SELECT Nom,'.$addInQuery.' FROM Annuaire ORDER BY Nom");


$pdf->SetXY(3,3);
for($i=0;$i<sizeof($header);$i++)
$pdf->cell(5,1,$header[$i],1,0,'C',1);

$pdf->SetFillColor(0xdd,0xdd,0xdd);
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',10);
$pdf->SetXY(3,$pdf->GetY()+1);
$fond=0;
while( $row = odbc_fetch_array( $resultat ) ) //tant que c pas la fin de la table
{
$pdf->cell(5,0.7,$row['Nom'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Societe'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Fixe'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Fax'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Portable'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Mail'],1,0,'C',$fond);

$pdf->SetXY(3,$pdf->GetY()+0.7);
$fond=!$fond;
}
$pdf->output();

}


?>




</html>

55 réponses

sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
15 févr. 2006 à 15:23
$pdf->SetXY(3,3); tu as oublié cette ligne

mais bon, c'est le mauvais côté du copier coller
et puis 'n'importe quoi' ça ne m'eclaire pas
3
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
15 févr. 2006 à 09:44
$pdf->cell(5,0.7,$row['Nom'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Societe'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Fixe'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Fax'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Portable'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Mail'],1,0,'C',$fond);

a mon avis ça marche si tu sélectionnes tous les champs mais
si on ne coche que le nom --> $row['societe'] n'est pas récupéré !?
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
15 févr. 2006 à 09:48
Non, ça ne marche pas si je coche tout non plus. On dirait que les variables ne sont pas reconnues sur les lignes
$pdf->cell(5,0.7,$row['Societe'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Fixe'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Fax'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Portable'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Mail'],1,0,'C',$fond);
...?
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
15 févr. 2006 à 09:56
$pdf=new FPDF('L','cm','A4');
tu es sûr de ça

moi j'aurais mis
$pdf=new PDF();
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
15 févr. 2006 à 09:57
c'est peut être $pdf qui est indéfini
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
15 févr. 2006 à 09:58
Oui je suis sur de ca, je définis les propriétés du fichier pdf.
La, on dirait que suite à l'implode, après il ne reconnait plus mes variables Societe, Fixe, Fax, Portable, Mail??
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
15 févr. 2006 à 10:01
alors definis la requete à part et regarde ce qu'il y a dedans

$requete = "SELECT Nom,'.$addInQuery.' FROM Annuaire ORDER BY Nom";
echo $requete;
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
15 févr. 2006 à 10:15
Ca me donne ceci si je fais un echo de ma requete :

SELECT Nom,'.Societe, Fixe, Fax, Portable, Mail.' FROM Annuaire ORDER BY Nom
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
15 févr. 2006 à 10:19
SELECT Nom,'.Societe, Fixe, Fax, Portable, Mail.' FROM Annuaire ORDER BY Nom

ça te parait normal ??

$requete = "SELECT Nom,".$addInQuery." FROM Annuaire ORDER BY Nom";
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
15 févr. 2006 à 10:22
Exact, c'est moyen comme requête... ;-))

Par contre, même après modif j'ai une erreur :

Warning: Cannot modify header information - headers already sent by (output started at D:\qualite\convert_pdf.php:16) in D:\qualite\fpdf\fpdf.php on line 1022
FPDF error: Some data has already been output to browser, can't send PDF file
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
15 févr. 2006 à 10:24
oui mais ça n'a plus rien à voir
supprime le ou les echo
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
15 févr. 2006 à 10:26
Rahhhhhhh c'est pareil c'est chiant!!

Voici mon code modifié :

<html>


<head>


</head>


<form action="convert_pdf.php" method="POST">


Site

N° téléphone fixe

N° fax

N° portable

Adresse e-mail


</form>



<?php


$base="D:\\Qualite\Annuaire\Annuaire.mdb";
$Annuaire="Annuaire";


//connection au serveur:
$cnx = odbc_connect( "DSN_Annuaire","" ,"") or die ("Impossible de se connecter à la base de donnée") ;

//PDF


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


$pdf=new FPDF('L','cm','A4');

//Titres des colonnes
$header=array('Nom - Prénom','Site','N° Téléphone fixe','N° fax','N° Portable','Adresse e-mail');

$pdf->SetFont('Arial','B',14);
$pdf->AddPage();
$pdf->SetFillColor(96,96,96);
$pdf->SetTextColor(255,255,255);


if (isset ($_POST['submit']) && $_POST['submit'] === 'Valider') {


$addInQuery = implode (', ', $_POST['choix']);

$resultat = odbc_exec( $cnx, "SELECT Nom,".$addInQuery." FROM Annuaire ORDER BY Nom");


$pdf->SetXY(3,3);
for($i=0;$i<sizeof($header);$i++)
$pdf->cell(5,1,$header[$i],1,0,'C',1);

$pdf->SetFillColor(0xdd,0xdd,0xdd);
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',10);
$pdf->SetXY(3,$pdf->GetY()+1);
$fond=0;
while( $row = odbc_fetch_array( $resultat ) ) //tant que c pas la fin de la table
{
$pdf->cell(5,0.7,$row['Nom'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Societe'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Fixe'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Fax'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Portable'],1,0,'C',$fond);
$pdf->cell(5,0.7,$row['Mail'],1,0,'C',$fond);

$pdf->SetXY(3,$pdf->GetY()+0.7);
$fond=!$fond;
}
$pdf->output();

}


?>




</html>
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
15 févr. 2006 à 10:47
Ca y est j'ai trouvé la cause de cette erreur, en fait, il ne faut pas qu'il y ait de balises html.
J'ai donc mis mon formulaire avec les cases à cocher sur une page html, et le code pour transformer en pdf sur une page php.
Par contre, lorsque toutes les cases sont cochées, ca fonctionne, mais lorsque je décoche une ou plusieurs cases, j'ai une erreur undefined variable concernant les cases décochées....

Comment remédier à ça????
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
15 févr. 2006 à 10:52
Qu'est-ce qu'on parie que dans
fpdf/fpdf.php des headers sont envoyés?! Du coup, comme tu affiches tes
checkbox, ben ça peut pas jouer! Fais l'inverse: d'abord le code php:



<?php

$base="D:\\Qualite\Annuaire\Annuaire.mdb";

$Annuaire="Annuaire";




//connection au serveur:

$cnx = odbc_connect( "DSN_Annuaire","" ,"") or die ("Impossible de se connecter à la base de donnée") ;



//PDF




define('FPDF_FONTPATH','font/');

require('fpdf/fpdf.php');




$pdf=new FPDF('L','cm','A4');



//Titres des colonnes

$header=array('Nom - Prénom','Site','N° Téléphone fixe','N° fax','N° Portable','Adresse e-mail');



$pdf->SetFont('Arial','B',14);

$pdf->AddPage();

$pdf->SetFillColor(96,96,96);

$pdf->SetTextColor(255,255,255);





if (isset ($_POST['submit']) && $_POST['submit'] === 'Valider') {




$addInQuery = implode (', ', $_POST['choix']);



$resultat = odbc_exec( $cnx, "SELECT Nom,".$addInQuery." FROM Annuaire ORDER BY Nom");




$pdf->SetXY(3,3);

for($i=0;$i<sizeof($header);$i++)

$pdf->cell(5,1,$header[$i],1,0,'C',1);



$pdf->SetFillColor(0xdd,0xdd,0xdd);

$pdf->SetTextColor(0,0,0);

$pdf->SetFont('Arial','',10);

$pdf->SetXY(3,$pdf->GetY()+1);

$fond=0;

while( $row = odbc_fetch_array( $resultat ) ) //tant que c pas la fin de la table

{

$pdf->cell(5,0.7,$row['Nom'],1,0,'C',$fond);

$pdf->cell(5,0.7,$row['Societe'],1,0,'C',$fond);

$pdf->cell(5,0.7,$row['Fixe'],1,0,'C',$fond);

$pdf->cell(5,0.7,$row['Fax'],1,0,'C',$fond);

$pdf->cell(5,0.7,$row['Portable'],1,0,'C',$fond);

$pdf->cell(5,0.7,$row['Mail'],1,0,'C',$fond);



$pdf->SetXY(3,$pdf->GetY()+0.7);

$fond=!$fond;

}

$pdf->output();



}




?>




<html>
<head>



</head>




<form action="convert_pdf.php" method="POST">



Site



N° téléphone fixe



N° fax



N° portable



Adresse e-mail










</form>


</html>

*****
THINK -> SEEK -> ASK
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
15 févr. 2006 à 10:53
oops, tire croisé ;)

*****
THINK -> SEEK -> ASK
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
15 févr. 2006 à 10:55
Ouais pas grave ;-))

Par contre donc :

lorsque toutes les cases sont cochées, ca fonctionne, mais lorsque je décoche une ou plusieurs cases, j'ai une erreur undefined variable concernant les cases décochées....

Comment remédier à ça????
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
15 févr. 2006 à 11:05
Comment est ce que je peux dire que si le champ décoché est null, je ne dois pas le prendre en compte??
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
15 févr. 2006 à 11:18
Remplace

if (isset ($_POST['submit']) && $_POST['submit'] === 'Valider') {



$addInQuery = implode (', ', $_POST['choix']);

echo "$addInQuery";



$resultat = odbc_exec( $cnx, "SELECT Nom,'.$addInQuery.' FROM Annuaire ORDER BY Nom");



par

if (isset ($_POST['submit']) && $_POST['submit'] === 'Valider') {

if (isset($_POST['choix'])){

$addInQuery = implode(',', $_POST['choix']);

$addInQuery = ','.$addInQuery;

}

else $addInQuery = '';

echo "$addInQuery";

$resultat = odbc_exec( $cnx, "SELECT Nom'.$addInQuery.' FROM Annuaire ORDER BY Nom");




*****
THINK -> SEEK -> ASK
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
15 févr. 2006 à 11:28
Ca me donne l'erreur :

Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Dans l'instruction SELECT, un mot réservé ou un argument est mal orthographié ou absent, ou la ponctuation est incorrecte., SQL state 37000 in SQLExecDirect in D:\qualite\convert_pdf.php on line 39

Warning: odbc_fetch_array(): supplied argument is not a valid ODBC result resource in D:\qualite\convert_pdf.php on line 52

Warning: Cannot modify header information - headers already sent by (output started at D:\qualite\convert_pdf.php:39) in D:\qualite\fpdf\fpdf.php on line 1022
FPDF error: Some data has already been output to browser, can't send PDF file
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
15 févr. 2006 à 11:30
J'avais viré le echo, si je le remets, ca donne ca :

,Societe,Fixe,Fax,Portable,Mail
Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression 'Nom'.,Societe,Fixe,Fax,Portable,Mail.''., SQL state 37000 in SQLExecDirect in D:\qualite\convert_pdf.php on line 39

Warning: odbc_fetch_array(): supplied argument is not a valid ODBC result resource in D:\qualite\convert_pdf.php on line 52

Warning: Cannot modify header information - headers already sent by (output started at D:\qualite\convert_pdf.php:38) in D:\qualite\fpdf\fpdf.php on line 1022
FPDF error: Some data has already been output to browser, can't send PDF file
0