Bonjour, désolé d'insister et de revenir à la charge mais j'ai un gros soucis avec mon code que je n'arrive pas à résoudre et dont j'ai vraiment besoin.
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.
Mon code tel qu'il est ci-dessous fonctionne parfaitement, le seul problème est que je ne sais pas comment faire pour donner une largeur prédéfinie à chaque colonne; par exemple dire que la colonne 'Nom - prénom' doit faire 5cm, etc...
<?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>
<body>
<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.
<input type = "checkbox" name = "choix[]" value = "Societe" checked = "checked" /> Site
<br>
<input type = "checkbox" name = "choix[]" value = "Fixe" checked = "checked" /> N° téléphone fixe
<br>
<input type = "checkbox" name = "choix[]" value = "Fax" checked = "checked" /> N° fax
<br>
<input type = "checkbox" name = "choix[]" value = "Portable" checked = "checked" /> N° portable
<br>
<input type = "checkbox" name = "choix[]" value = "Mail" checked = "checked" /> Adresse e-mail
<br>
<br>
<br>
<input type="submit" value="Valider" name="submit"/>
</form>
</body>
</html>