Génération d'un fichier pdf

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 à 09:36
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 16 févr. 2006 à 14:33
Bonjour, j'ai un formulaire avec des checkboxs qui permet à l'utilisateur de sélectionner les données qu'il veut exporter de la bdd au document pdf.
Je suis coincé lorsque je décoche les cases 2, 3 ou 4 car ca me sort undefined index....etc...

Comment faire SVP???????

Voici mon code :

<?php


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


echo $_POST['choix'][0];
echo $_POST['choix'][1];

$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('Nom - Prénom','Site','N° Téléphone fixe','N° fax','N° Portable','Adresse e-mail');
//$header = Array(
//Array( 'Nom - Prénom',4.7),
//Array( 'Site',4.7),
//Array( 'N° Téléphone fixe',4.7),
//Array( 'N° fax',4.7),
//Array( 'N° Portable',4.7),
//Array( 'Adresse e-mail',4.7)
//);


$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);
if(isset($_POST['choix'][0]))
$pdf->cell(4.7,0.7,$row['Societe'],1,0,'C',$fond);
if(isset($_POST['choix'][1]))
$pdf->cell(4.7,0.7,$row['Fixe'],1,0,'C',$fond);
if(isset($_POST['choix'][2]))
$pdf->cell(4.7,0.7,$row['Fax'],1,0,'C',$fond);
if(isset($_POST['choix'][3]))
$pdf->cell(4.7,0.7,$row['Portable'],1,0,'C',$fond);
if(isset($_POST['choix'][4]))
$pdf->cell(4.7,0.7,$row['Mail'],1,0,'C',$fond);

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

}


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


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


Site

N° téléphone fixe

N° fax

N° portable

Adresse e-mail


</form>

</html>

14 réponses

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
16 févr. 2006 à 14:24
ouais, comme ça j'aurai fait tout ton code... t'as essayé de comprendre quelque chose au moins????





un truc genre...

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

}

}

*****
THINK -> SEEK -> ASK
3
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
16 févr. 2006 à 09:47
C'est la xème fois que tu poses la question dis donc...



http://www.commentcamarche.net/faq/sujet-1391-php-notice-undefined-index


*****
THINK -> SEEK -> ASK
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
16 févr. 2006 à 09:50
Je sais je suis désolé mais je sèche complètement là.....

Je ne sais plus comment m'y prendre là, si tu regardes mon code, j'utilise bien "if (isset($_POST['truc']))".....
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
16 févr. 2006 à 09:54
donne la ligne de l'erreur et le message au complet...

*****
THINK -> SEEK -> ASK
0

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

Posez votre question
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
16 févr. 2006 à 09:58
Ca marche si je laisse toutes les cases cochées ou si je laisse cochées la première (Societe) et dernière case (Mail).

Ce sort une erreur si je décoche l'une des cases 2 (Fixe) 3 (Fax) ou 4 (Portable).

L'erreur, c'est undefined index "case décochée" on line ....

Le numéro de la ligne dépend de la case décochée mais est toujours située dans ce pavé là :

$pdf->cell(4.7,0.7,$row['Nom'],1,0,'C',$fond);
if(isset($_POST['choix'][0]))
$pdf->cell(4.7,0.7,$row['Societe'],1,0,'C',$fond);
if(isset($_POST['choix'][1]))
$pdf->cell(4.7,0.7,$row['Fixe'],1,0,'C',$fond);
if(isset($_POST['choix'][2]))
$pdf->cell(4.7,0.7,$row['Fax'],1,0,'C',$fond);
if(isset($_POST['choix'][3]))
$pdf->cell(4.7,0.7,$row['Portable'],1,0,'C',$fond);
if(isset($_POST['choix'][4]))
$pdf->cell(4.7,0.7,$row['Mail'],1,0,'C',$fond);
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
16 févr. 2006 à 10:10
t'as fait un print_r($row) dans le cas où tout n'est pas coché pour voir si c'est pas ça le problème?

*****
THINK -> SEEK -> ASK
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
16 févr. 2006 à 10:13
Non j'ai pas essayé ça...
Par contre, j'ai fait :

echo $_POST['choix'][0];
echo $_POST['choix'][1];

Lorsque je fais ça en laissant cochées la première et dernière case, ca me répond SocieteMail.
En fait, au lieu de prendre la valeur ['choix'][4]; la dernière case prend la valeur ['choix'][1];
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
16 févr. 2006 à 12:20
ah c'est bien ce qu'il me semblait

$pdf->cell(4.7,0.7,$row['Nom'],1,0,'C',$fond);
if(isset($_POST['choix'][0]))
$pdf->cell(4.7,0.7,$row['Societe'],1,0,'C',$fond);
if(isset($_POST['choix'][1]))
$pdf->cell(4.7,0.7,$row['Fixe'],1,0,'C',$fond);
if(isset($_POST['choix'][2]))
$pdf->cell(4.7,0.7,$row['Fax'],1,0,'C',$fond);
if(isset($_POST['choix'][3]))
$pdf->cell(4.7,0.7,$row['Portable'],1,0,'C',$fond);
if(isset($_POST['choix'][4]))
$pdf->cell(4.7,0.7,$row['Mail'],1,0,'C',$fond);

donc ça ne peut pas marcher comme ça
désolé, il faut faire autrement
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
16 févr. 2006 à 13:45
Oui apparemment, mais comment???? Là je suis dépassé moi....
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
16 févr. 2006 à 13:55
J'ai compris! Enfin, je crois ...
dans ton formulaire du début, tu utilises choix[] donc si tu ne coches
pas une option qui irait en position 3 par exemple, c'est celle qui
serait allé en 4 qui va en 3!



Le remède (bourrin):

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

}



à la place de



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

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

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

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

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

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

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

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

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

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

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



Essaie et dis moi ce que ça donne!


*****
THINK -> SEEK -> ASK
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
16 févr. 2006 à 14:14
Merci, la solution approche je pense!!
Maintenant, les données de la colonne concernée disparraissent bien, par contre, l'entête de la colonne reste systématiquement, c'est toujours l'entête Adresse mail qui est supprimée...
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
16 févr. 2006 à 14:16
Ben c'est normal, le problème étant le même. Donc à toi d'adapter la nouvelle méthode au header. C'est tout bête.

*****
THINK -> SEEK -> ASK
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
16 févr. 2006 à 14:18
La je suis réellement perdu, peux tu m'expliquer comment faire stp?
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
16 févr. 2006 à 14:33
C'est parfait, ça fonctionne, je te remercie mille fois pour toute ton aide!!

Là je vais me repencher sur tout ça car j'ai pas tout suivi sur la fin...

Par contre, 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?
0
Rejoignez-nous