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

Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- 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 

Votre réponse

55 réponses

Meilleure réponse
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Dernière intervention
18 octobre 2012
- 15 févr. 2006 à 15:23
3
Merci
$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

Merci sidf 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de sidf
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Dernière intervention
18 octobre 2012
- 15 févr. 2006 à 09:44
0
Merci
$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
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- 15 févr. 2006 à 09:48
0
Merci
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
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Dernière intervention
18 octobre 2012
- 15 févr. 2006 à 09:56
0
Merci
$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
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Dernière intervention
18 octobre 2012
- 15 févr. 2006 à 09:57
0
Merci
c'est peut être $pdf qui est indéfini
Commenter la réponse de sidf
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- 15 févr. 2006 à 09:58
0
Merci
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
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Dernière intervention
18 octobre 2012
- 15 févr. 2006 à 10:01
0
Merci
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
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- 15 févr. 2006 à 10:15
0
Merci
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
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Dernière intervention
18 octobre 2012
- 15 févr. 2006 à 10:19
0
Merci
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
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- 15 févr. 2006 à 10:22
0
Merci
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
Messages postés
1218
Date d'inscription
mardi 20 décembre 2005
Dernière intervention
18 octobre 2012
- 15 févr. 2006 à 10:24
0
Merci
oui mais ça n'a plus rien à voir
supprime le ou les echo
Commenter la réponse de sidf
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- 15 févr. 2006 à 10:26
0
Merci
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
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- 15 févr. 2006 à 10:47
0
Merci
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
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Dernière intervention
15 août 2009
- 15 févr. 2006 à 10:52
0
Merci
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
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Dernière intervention
15 août 2009
- 15 févr. 2006 à 10:53
0
Merci
oops, tire croisé ;)

*****
THINK -> SEEK -> ASK
Commenter la réponse de malik7934
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- 15 févr. 2006 à 10:55
0
Merci
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
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- 15 févr. 2006 à 11:05
0
Merci
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
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Dernière intervention
15 août 2009
- 15 févr. 2006 à 11:18
0
Merci
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
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- 15 févr. 2006 à 11:28
0
Merci
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
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Dernière intervention
6 mars 2009
- 15 févr. 2006 à 11:30
0
Merci
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.