Fichier pdf crée via php

Résolu
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 16 févr. 2006 à 17:31
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 20 févr. 2006 à 08:22
Salut,

Je voudrais donner une taille prédéfinie à mes colonnes, j'ai vu que je pouvvais faire qque chose comme ajouter =>50 apres le titre de chaque colonne, mais ca me donne une erreur concernant l'offset.

Est ce que c'est juste une histoire de mauvais placement de cette ligne dans mon code ou autre chose?

Ensuite, je ne comprends pas pouruoi mes entêtes de colonnes n'apparaissent que sur la première page???

Merci d'avance!!

Code pour info :

<?php


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



$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');

$pdf->SetFont('Arial','B',12);
$pdf->AddPage();
$pdf->SetFillColor(220,130,130);
$pdf->SetTextColor(255,255,255);


//Titres des colonnes


$header = array();
$header[] = 'Nom - Prénom';
for ($m=0;$m<count($_POST['choix']);$m++){
switch($_POST['choix'][$m]){
case 'Societe': $header[] = 'Site';
break;
case 'Fixe': $header[] = 'N° Téléphone fixe';
break;
case 'Fax': $header[] = 'N° fax';
break;
case 'Portable': $header[] = 'N° Portable';
break;
case 'Mail': $header[] = 'Adresse e-mail';
break;
default: break;
}
}


$pdf->cell(4.7,1,$header[0],1,0,'C',1);// Le nom dans tous les cas


for($i=0;$i<count($_POST['choix']);$i++)
{
if(isset($_POST['choix'][$i]))
$pdf->cell(4.7,1,$header[$i+1],1,0,'C',1);// les autres postes si cases cochées
}


if (isset($_POST['choix'])){
$addInQuery = implode(',', $_POST['choix']);
$addInQuery = ','.$addInQuery;
}
else $addInQuery = '';

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


$pdf->SetFillColor(0xdd,0xdd,0xdd);
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',8);
$pdf->SetXY(1,$pdf->GetY()+1);
$fond=0;
while( $row = odbc_fetch_array( $resultat ) ) //tant que c pas la fin de la table
{
$pdf->cell(4.7,0.7,$row['Nom'],1,0,'C',$fond);
for ($m=0;$m<count($_POST['choix']);$m++){
if(isset($_POST['choix'][$m]))
$pdf->cell(4.7,0.7,$row[$_POST['choix'][$m]],1,0,'C',$fond);
}


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

}


?>
<html>
<head>
</head>


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


Site

N° téléphone fixe

N° fax

N° portable

Adresse e-mail


</form>

</html>

30 réponses

flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
17 févr. 2006 à 14:14
Quelq'un a t il une idee please...?????
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 févr. 2006 à 14:27
Elle est où l'érreur undefined index ? Sur quoi ?
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
17 févr. 2006 à 14:29
Si je décoche l'une des cases N°Téléphone fixe, N° fax, ou N° portable, ca me sort undefined index de la case décoché sur la ligne :

$pdf->cell(4.7,1,$header[$val],1,0,'C',1);// les autres postes si cases cochées
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
17 févr. 2006 à 14:31
Et avec le code que j'ai mis ci dessus, au lieu d'avoir les bon noms dans les entêtes des colonnes, j'ai la valeur que je voulais donner a leur largeur c'est à dire 5 5 3 3 3 5
0

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

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 févr. 2006 à 14:39
Attends attends, là, tu veux les clefs de header, et pas sa valeurs ? alors tu le remplaces par $val
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
17 févr. 2006 à 14:43
Comment ça, je comprends pas ce que tu veux dire?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 févr. 2006 à 14:44
Tu comprends le code qu'on est entrain d'essayer d'écrire ?
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
17 févr. 2006 à 14:45
Là j'y suis plus, je mélange, c'est pour ca que je capte plus ce que tu me dis là...?
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
17 févr. 2006 à 15:10
OK
Alors, j'ai donc ma base de données access, je veux la récupérer dans un fichier pdf.
Pour cela, l'utilisateur a le choix de récupérer les informations qu'il souhaite, sauf le nom que je ne mets pas dans le formulaire car il faut qu'il apparraisse systématiquement.

<?php


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


Connexion à la bdd
$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');
Infos concernant le doc pdf qui va être crée


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

$pdf->SetFont('Arial','B',12);
$pdf->AddPage();
$pdf->SetFillColor(220,130,130);
$pdf->SetTextColor(255,255,255);

//Titres des colonnes
Création des entêtes des colonnes du doc pdf


$header = array();
$header[] = 'Nom - Prénom';
for ($m=0;$m<count($_POST['choix']);$m++){
switch($_POST['choix'][$m]){
case 'Societe': $header[] = 'Site';
break;
case 'Fixe': $header[] = 'N° Téléphone fixe';
break;
case 'Fax': $header[] = 'N° fax';
break;
case 'Portable': $header[] = 'N° Portable';
break;
case 'Mail': $header[] = 'Adresse e-mail';
break;
default: break;
}
}
L'entête 'Nom - Prénom' apparait systématiquement puisque l'utilisateur n'a pas la possibilité de l'enlever


$pdf->cell(4.7,1,$header[0],1,0,'C',1);// Le nom dans tous les cas
Selon les cases cochées par l'utilisateur, on fait apparaitre ou non la colonne


for($i =0;$i<count($_POST['choix']);$i++)
{
if(isset($_POST['choix'][$i]))
$pdf->cell(4.7,1,$header[$i+1],1,0,'C',1);// les autres postes si cases cochées
}
Selon les cases cochées par l'utilisateur, j'adapte la requete qui va etre faite dans ma bdd grace à l'implode


if (isset($_POST['choix'])){
$addInQuery = implode(',', $_POST['choix']);
$addInQuery = ','.$addInQuery;
}
else $addInQuery = '';

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


$pdf->SetFillColor(0xdd,0xdd,0xdd);
$pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',8);
$pdf->SetXY(1,$pdf->GetY()+1);
$fond=0;
while( $row = odbc_fetch_array( $resultat ) ) //tant que c pas la fin de la table
{
$pdf->cell(4.7,0.7,$row['Nom'],1,0,'C',$fond);
for ($m=0;$m<count($_POST['choix']);$m++){
if(isset($_POST['choix'][$m]))
$pdf->cell(4.7,0.7,$row[$_POST['choix'][$m]],1,0,'C',$fond);
}


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

}


?>
<html>
<head>
</head>


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

Ici donc mon "formulaire" qui permet à l'utilisateur de sélectionner les informations qu'il va récupérer sur le doc pdf.Par défaut, je coche toutes les cases.


Site

N° téléphone fixe

N° fax

N° portable

Adresse e-mail


</form>

</html>
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
20 févr. 2006 à 08:22
Bonjour, est ce que qq'un peut m'aider sur ce soucis svp...??

Désolé d'insister mais j'en ai vraiment besoin...

Merci d'avance!!
0
Rejoignez-nous