Bonjour,
je m'excuse si mon titre n'est pas très clair, je m'explique :
j'ai une page qui permet de generer le PDF via un bouton..., je récupère un paramètre de l'URL avec $_GET[] qui me sert d'indentifiant ( pr BD)
pour récupérer les les informations de la base de données, qui seront affichés dans le pdf, j'utilise la valeur contenue dans $_GET[]
ensuite je les insère dans le code HTML correspondant au contenu du PDF , ex:
contenu='<page backtop="10mm" backbottom="30mm" backleft="10mm" backright="10mm">
....
<p>'.$variable1.'</p>
<p>'.$variable2.'</p>
....
</page>';
alors le problème c'est que quand j'utilise une variable $_SESSION['id'] pour récupérer pour récupérer les variables ou une autre valeur, ça ne pose aucun problème, le PDF est généré correctement et les variables sont bien affichés.
lorsque j'utilise l'identifiant contenu dans le $_GET[], les variables ne sont pas affichées dans le PDF, j'ai essayé d'afficher ces variable en HTML uniquement, et elles sont bien affichées...
donc je ne comprend pas pourquoi ça ne marche pas lorsque j'utilise le $_GET. j'utilise également les fonctions ob_start() et ob_get_clean(), et je me demande si le bug ne vient pas de ces fonctions là , ou de HTML2PDF.
j'espère que j'ai été assez clair (dsl si ce n'es pas le cas :$). Avez vous déjà rencontré ce problème ? Avez vous une idée s'il vous plait?
Merci d'avance pour votre aide.
Spipu Le 19/05/2010 à 13:58 normalement, il n'y a pas de raison que ca ne marche pas. quelle est exactement la procédure que vous suivez ?
Merci pour votre réponse, je vais essayer d'être plus claire :
fichier: page.php
url:...page.php?param=1
<?php
ob_start()
...
?>
code HTML (mise en forme de la page --> sans rapport avec le pdf)
...
<?php
$id=$_GET['param'] (paramètre passé à l'url
$pdf = '<....code HTML, partie fixe...>'
$sql="select nom,prénom from personne where id='$id'';
....
//stockage des résultats de la requête dans un tableau à double dimension $data
.....
//récupération des variables
$nom=data[$i][0];
$prénom=data[$i][1];
//affichage dans la page HTML
echo '<table style="width:100%;">
<tr style="width:100%;">
<td style="width:25%;"> </td>
<td style="width:50;" align="left">Nom: '.$nom.'</td>
<td style="width:25%;"> </td>
</tr>
<tr style="width:100%;">
<td style="width:25%;"> </td>
<td style="width:50%;" align="left">Prenom: <span style="font-weight:bold;">'.$prenom.'</span></td>
<td style="width:25%;"> </td>
</tr>
</table><br><br>';
'
//renseignement du contenu du PDF (les variables sont affichés dans la page HTML)
$pdf .='<table style="width:100%;">
<tr style="width:100%;">
<td style="width:25%;"> </td>
<td style="width:50;" align="left">Nom: '.$nom.'</td>
<td style="width:25%;"> </td>
</tr>
<tr style="width:100%;">
<td style="width:25%;"> </td>
<td style="width:50%;" align="left">Service: <span style="font-weight:bold;">'.$prenom.'</span></td>
<td style="width:25%;"> </td>
</tr>
</table><br><br>';
$pdf.='<...code HTML..contenu qui ne dépend pas de la base de donnée >'
//Click sur bouton qui permet de générer le PDF
if ($_GET['pdf']!=""){
//Generation du Fichier PDF
ob_get_clean();
$html2pdf = new HTML2PDF('P','A4', 'fr', false, 'ISO-8859-15');
$html2pdf->WriteHTML($pdf);
//Forcer le téléchargement du PDF par le navigateur internet, avec un nom spécifique
$html2pdf->Output('fichier.pdf', 'D');
}
//--> le PDF est géneré correctement, mais les valeurs des variables $nom et $prenom ne sont pas affichés
<... code HTML..
<form>
<input name="pdf" type=submit value="recup pdf"/>
</forme>
...code HTML
>
?>
Lorsque j'affecte une valeur à $id, ou je lui affecte une variable de session le problème ne se pose pas, le pdf est generé correctement et les variable sans bien affichées. le problème se pose uniquement avec le $_GET[''].
voila, et merci d'avance.
Spipu Le 20/05/2010 à 10:57 heu, juste comme ca, pourquoi tu fais toute ta table en double ??? le but d'utilise ob_start et ob_get_clean est de récuperer tout ce qui est en echo... là tu fais le travail pleins de fois inutilement.
tu ferais mieux d'utiliser ton paramètre get "pdf", et suivant si il est présent ou non, faire une sortie html différente, ca sera plus propre
de plus, faire $_GET['pdf']!="" n'est pas bon, il faut faire isset($_GET['pdf']) pour savoir si le paramètre est présent... là tu n'as pas d'erreurs, car tu as désactivé dans ta config de PHP les erreurs de type notice...
de meme, utiliser directement le paramètre id dans ta requete est hyper dangereux, tu ne le protèges pas => une sql injection est hyper facile à réaliser... là, tu te repose sur le fait que ton PHP a peut etre les magic quotes d'activé... un utilisateur mal vaillant pourrait faire n'importe quoi dans ta base de donnée sans difficulté si ce n'est pas le cas...
enfin, concernant le fait que les variables ne s'affichent pas, cela ne peut venir que de ton script. essaye de faire un echo de ta variable $pdf apres le ob_get_clean. tu vera bien si elles y sont ou pas.
Spipu Le 20/05/2010 à 15:42 regarde l'exemple 9, il fait à peu pres ce que tu fais.
Oki merci beaucoup, je vais regarder ça .