Export base de données en fichier pdf [Résolu]

flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 15 févr. 2006 à 09:31 - Dernière réponse :  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>
Afficher la suite 

55 réponses

Répondre au sujet
sidf 1218 Messages postés mardi 20 décembre 2005Date d'inscription 18 octobre 2012 Dernière intervention - 15 févr. 2006 à 15:23
+3
Utile
$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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de sidf
sidf 1218 Messages postés mardi 20 décembre 2005Date d'inscription 18 octobre 2012 Dernière intervention - 15 févr. 2006 à 09:44
0
Utile
$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é !?
Commenter la réponse de sidf
flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 15 févr. 2006 à 09:48
0
Utile
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);
...?
Commenter la réponse de flopad
sidf 1218 Messages postés mardi 20 décembre 2005Date d'inscription 18 octobre 2012 Dernière intervention - 15 févr. 2006 à 09:56
0
Utile
$pdf=new FPDF('L','cm','A4');
tu es sûr de ça

moi j'aurais mis
$pdf=new PDF();
Commenter la réponse de sidf
sidf 1218 Messages postés mardi 20 décembre 2005Date d'inscription 18 octobre 2012 Dernière intervention - 15 févr. 2006 à 09:57
0
Utile
c'est peut être $pdf qui est indéfini
Commenter la réponse de sidf
flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 15 févr. 2006 à 09:58
0
Utile
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??
Commenter la réponse de flopad
sidf 1218 Messages postés mardi 20 décembre 2005Date d'inscription 18 octobre 2012 Dernière intervention - 15 févr. 2006 à 10:01
0
Utile
alors definis la requete à part et regarde ce qu'il y a dedans

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

SELECT Nom,'.Societe, Fixe, Fax, Portable, Mail.' FROM Annuaire ORDER BY Nom
Commenter la réponse de flopad
sidf 1218 Messages postés mardi 20 décembre 2005Date d'inscription 18 octobre 2012 Dernière intervention - 15 févr. 2006 à 10:19
0
Utile
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";
Commenter la réponse de sidf
flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 15 févr. 2006 à 10:22
0
Utile
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
Commenter la réponse de flopad
sidf 1218 Messages postés mardi 20 décembre 2005Date d'inscription 18 octobre 2012 Dernière intervention - 15 févr. 2006 à 10:24
0
Utile
oui mais ça n'a plus rien à voir
supprime le ou les echo
Commenter la réponse de sidf
flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 15 févr. 2006 à 10:26
0
Utile
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>
Commenter la réponse de flopad
flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 15 févr. 2006 à 10:47
0
Utile
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????
Commenter la réponse de flopad
malik7934 1162 Messages postés mardi 9 septembre 2003Date d'inscription 15 août 2009 Dernière intervention - 15 févr. 2006 à 10:52
0
Utile
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
Commenter la réponse de malik7934
malik7934 1162 Messages postés mardi 9 septembre 2003Date d'inscription 15 août 2009 Dernière intervention - 15 févr. 2006 à 10:53
0
Utile
oops, tire croisé ;)

*****
THINK -> SEEK -> ASK
Commenter la réponse de malik7934
flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 15 févr. 2006 à 10:55
0
Utile
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????
Commenter la réponse de flopad
flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 15 févr. 2006 à 11:05
0
Utile
Comment est ce que je peux dire que si le champ décoché est null, je ne dois pas le prendre en compte??
Commenter la réponse de flopad
malik7934 1162 Messages postés mardi 9 septembre 2003Date d'inscription 15 août 2009 Dernière intervention - 15 févr. 2006 à 11:18
0
Utile
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
Commenter la réponse de malik7934
flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 15 févr. 2006 à 11:28
0
Utile
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
Commenter la réponse de flopad
flopad 531 Messages postés mercredi 28 septembre 2005Date d'inscription 6 mars 2009 Dernière intervention - 15 févr. 2006 à 11:30
0
Utile
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
Commenter la réponse de flopad

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Export base de données en fichier pdf - page 2