FPDF et problème de buffer
Posté : 15 déc. 2013, 10:54
Bonjour !
Je suis désolé de venir solliciter votre aide mais là j’atteins les limites de mes modestes connaissances en programmation ( je viens tout juste de commencer le php pour faire un site - j'avais déjà des notions en programmation (c++) donc ça a été vite au début ). Si quelqu'un pouvait me trouver une solution ce serait super.
Voilà le problème : ( j'ai réduit la page au strict minimum pour faire simple et ne pas prendre trop de votre temps )
J'ai un site, j'ai un formulaire.
lorsque l'utilisateur clique sur valider, je veux que les infos soient stockées dans une base de donnée (ça c'est bon, ça marche), que ça affiche un texte sur la page et que ça délivre un pdf (oui c'est là que ça coince ... afficher le massage marche, télécharger le pdf marche, mais je n'arrive pas a lui faire faire les deux).
Pour le pdf j'ai utilisé fpdf.
Si j'ordonne de délivrer le pdf, le compilateur (ou interpréteur de code je ne sais pas comment vous l'appelez) me sort " Some data has already been output, can't send PDF file " .
Après avoir cherché sur internet, je vois que beaucoup règlent le problème avec un ob_start(); (ou ob_clean(); ) avant le code qui crée le pdf ...
je le fais, ça marche - génial ! je peux télécharger le pdf, sauf que le texte ne s'affiche plus, (en revanche la base de donnée est correctement modifiée, j'imagine que c'est parce que l'opération est exécutée, contrairement au texte qui se stocke temporairement dans un buffer j'imagine ...).
Donc je patauge sur cette question un peu "technique",
j'imagine que les solutions sont soit d'ouvrir un nouveau buffer (est ce possible ...), soit d'imprimer le buffer a l'écran avant de le vider ...
Voici le code réduit au plus simple :
je n'arrive pas a afficher les messages 3,4 et 6 ...
j'ai essayé certaines choses, toutes infructueuses ... avec ob_start, ob_clean, ob_flush, ob_get_content et vardump ...
Merci d'avance a ceux qui pourront essayer de me guider !!
Je suis désolé de venir solliciter votre aide mais là j’atteins les limites de mes modestes connaissances en programmation ( je viens tout juste de commencer le php pour faire un site - j'avais déjà des notions en programmation (c++) donc ça a été vite au début ). Si quelqu'un pouvait me trouver une solution ce serait super.
Voilà le problème : ( j'ai réduit la page au strict minimum pour faire simple et ne pas prendre trop de votre temps )
J'ai un site, j'ai un formulaire.
lorsque l'utilisateur clique sur valider, je veux que les infos soient stockées dans une base de donnée (ça c'est bon, ça marche), que ça affiche un texte sur la page et que ça délivre un pdf (oui c'est là que ça coince ... afficher le massage marche, télécharger le pdf marche, mais je n'arrive pas a lui faire faire les deux).
Pour le pdf j'ai utilisé fpdf.
Si j'ordonne de délivrer le pdf, le compilateur (ou interpréteur de code je ne sais pas comment vous l'appelez) me sort " Some data has already been output, can't send PDF file " .
Après avoir cherché sur internet, je vois que beaucoup règlent le problème avec un ob_start(); (ou ob_clean(); ) avant le code qui crée le pdf ...
je le fais, ça marche - génial ! je peux télécharger le pdf, sauf que le texte ne s'affiche plus, (en revanche la base de donnée est correctement modifiée, j'imagine que c'est parce que l'opération est exécutée, contrairement au texte qui se stocke temporairement dans un buffer j'imagine ...).
Donc je patauge sur cette question un peu "technique",
j'imagine que les solutions sont soit d'ouvrir un nouveau buffer (est ce possible ...), soit d'imprimer le buffer a l'écran avant de le vider ...
Voici le code réduit au plus simple :
1<br /> <!-- ///////////////////////////////// message 1 -->
<?
echo "2 <br />"; ////////////////////////////////////// message 2 -->
//TRAITEMENT DU FORMULAIRE
if(!empty($_POST['nom']))
{
$nom = $_POST['nom'];
echo "3 !!!<br />"; //////////////////////////////// message 3 -->
//les modifications d'une base de donnée marchent quand je les mets ici, pas de pb là dessus
//créer un pdf
require('fpdf/fpdf.php');
$pdf = new FPDF('P','mm','A4') ; //portrait, mm , A4
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,"bonjour $nom");
$pdf->Output('fichierpdf.pdf', 'D'); //*/
echo "4 !!!<br />"; ////////////////////////////////////// message 4 -->
}
echo "5 <br />"; ////////////////////////////////////// message 5 -->
// la boucle ci dessous est un test supplémentaire, j'aurais pu m'en contenter mais
// même ça ne marche pas, alors que le 5 au dessus marche ...
if(!empty($_POST['nom']))
{
echo "6 !!!<br/>"; ////////////////////////////////////// message 6 -->
}
?>
7 <br /> <!-- ///////////////////////////////// message 7 -->
<!-- FORMULAIRE (aucun problème à ce niveau) -->
<form method="post" action="index.php">
<p>nom, prénom : <input type="text" name="nom" size="25" /><br />
<input type="submit" value="Valider" /></p>
</form>
je n'arrive pas a afficher les messages 3,4 et 6 ...
j'ai essayé certaines choses, toutes infructueuses ... avec ob_start, ob_clean, ob_flush, ob_get_content et vardump ...
Merci d'avance a ceux qui pourront essayer de me guider !!