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

Signaler
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009
-
 soumboula -
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>
A voir également:

55 réponses

Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
$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
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
$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é !?
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

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);
...?
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
$pdf=new FPDF('L','cm','A4');
tu es sûr de ça

moi j'aurais mis
$pdf=new PDF();
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
c'est peut être $pdf qui est indéfini
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

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??
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
alors definis la requete à part et regarde ce qu'il y a dedans

$requete = "SELECT Nom,'.$addInQuery.' FROM Annuaire ORDER BY Nom";
echo $requete;
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

Ca me donne ceci si je fais un echo de ma requete :

SELECT Nom,'.Societe, Fixe, Fax, Portable, Mail.' FROM Annuaire ORDER BY Nom
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
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";
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

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
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
4
oui mais ça n'a plus rien à voir
supprime le ou les echo
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

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

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????
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
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
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
oops, tire croisé ;)

*****
THINK -> SEEK -> ASK
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

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

Comment est ce que je peux dire que si le champ décoché est null, je ne dois pas le prendre en compte??
Messages postés
1162
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
14
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
Messages postés
531
Date d'inscription
mercredi 28 septembre 2005
Statut
Membre
Dernière intervention
6 mars 2009

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

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