1

Bonjour les amis,

je dois générer des factures en pdf avec ds chiffres de ma bdd. J'ai regardé les vidéos mais sérieux j'ai pas trop pigé. J'ai recopié ce code

<?php
$content = "
<page>
<h1>Exemple d'utilisation</h1>
<br>
Ceci est un <b>exemple d'utilisation</b>
de <a href='http://html2pdf.fr/'>HTML2PDF</a>.<br>
</page>";

require_once(dirname(__FILE__).'/html2pdf/html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','fr');
$html2pdf->WriteHTML($content);
$html2pdf->Output('exemple.pdf');
?>

mais voila l'erreur que j'ai TCPDF ERROR: Some data has already been output, can't send PDF file

merci d'avance pour votre aide

2

Salut,
Je suppose que tu as du contenu HTML au dessus de l'ouverture de ta balise php, non ?

3

le < de <?php doit être le premier caractère du fichier, il ne faut RIEN avant , même pas une espace.

Si tu n'as vraiment rien mis avant, change d'éditeur de texte.

4

ok sa marche les amis,

maintenant le plus dur commence pour moi smile. Je dois créer des factures pour chaque client et toutes les données sont dans ma bdd mysql. voila ce que ça donne

[URL=http://www.hostingpics.net/viewer.php?id=853822541.jpg][IMG]http://img15.hostingpics.net/pics/853822541.jpg[/IMG][/URL]

J'aimerais une aide pour cette partie car c'est le plus délicat voila mon code

<?php
if (isset($_POST['pdf']))
{

$content = "
<page>
<img src='logo2.jpg'>
</page>";

require('html2pdf/html2pdf.class.php');
$pdf = new HTML2PDF('P','A4','fr');
$pdf->pdf->SetDisplayMode('fullpage');
$pdf->WriteHTML($content);
$pdf->Output('1.pdf');
}
?>

Quand la personne clique sur pdf : generation du pdf mais comment lui dire que j'aimerais les données de cette personne précise. Méthode get??

en tous cas merci d'avance les amis

cdt,

5

Oui, je pense que c'est une bonne idée de passer par des paramètres dans l'url.

6

Auriez-vous un exemple pour associer methode get et html2pdf?

cdt,

7

Ce que je te conseille, c'est déjà de faire un PDF "à blanc", sans les données spécifiques à chaque client, histoire de déjà prévoir la mise en page et la mise en forme (et ça te permettra en plus de prendre en main les commandes de base d'html2pdf). Ensuite, les données se manipulent exactement comme avec le PHP, tu les mets dans des variables (par exemple si tu récupères un numéro de facture en GET, tu fais ta requête SQL pour récupérer les données correspondantes à cette facture, tu mes ces données dans des variables et tu les places là où il faut dans ta génération de pdf).
avatar
Pas tout à fait là, pas tout à fait la personne que vous croyez connaître.

8

ok nil 5/5

j'ai commencé a coder et voila ce que ça donne

<?php
ob_start();?>
<page>
<img src="logo2.jpg">
salut sava
</page>
<?php

$content= ob_get_clean();
require('html2pdf/html2pdf.class.php');
$pdf = new HTML2PDF('P','A4','fr');
$pdf->pdf->SetDisplayMode('real');
$pdf->WriteHTML($content);
$pdf->Output('factures.pdf','D');

?>

jusqu'a la pas de probleme, mais j'aimerais que le pdf ce genere quand je clique sur un submit. comment faire?

cdt,

9

De la même façon que l'exécution d'un formulaire classique : <form action="monscriptphpquigeneredupdf.php">
(Sauf si je n'ai pas bien compris ta demande)
avatar
Pas tout à fait là, pas tout à fait la personne que vous croyez connaître.

10

j'ai reussi voila ce que ça donne, merci nil

<?php
if (isset($_POST['pdf']))
{
ob_start();?>
<style type="text/css">
table {vertical-align:top;width:100%;}
</style>
<page backtop="5mm" backleft="5mm" backright="10mm" backbottom="5mm">
<table>
<tr>
<td style="width:75%;">
<b>test test<br>
</td>
<td style="width:25%;">
Facture n°<br>
A Blois, le 15/08/12

</td>
</tr>
</table>


</page>
<?php

$content= ob_get_clean();
require('html2pdf/html2pdf.class.php');
$pdf = new HTML2PDF('P','A4','fr');
$pdf->pdf->SetDisplayMode('real');
$pdf->WriteHTML($content);
$pdf->Output('factures.pdf');
}
?>

je vais encore vous embeter, mais pour se connecté et utiliser des données de ma bdd. comment faire?

merci d'avance

11

Ben tu as deux solutions, soit tu utilises les drivers PDO (voir la documentation sur le site de PHP), soit tu utilises les extensions mysql "natives" php (il vaut mieux mysqli que mysql, à choisir).
Personnellement, je conseille les drivers PDO. A toi de voir à l'usage.
Après, il faut aussi que tu manipules des requêtes SQL pour récupérer les données, si tu n'as jamais fait regarde des tutos sur le SQL, et plus particulièrement les requêtes de SELECT.
avatar
Pas tout à fait là, pas tout à fait la personne que vous croyez connaître.

12

Aurais-tu un exemple svp?

merci d'avance

13

http://studio.jacksay.com/tutoriaux/php/connection-mysql-avec-pdo est un tutoriel qui m'a l'air assez clair. La section 3.1 montre comment faire un SELECT de base. Par contre, pour les subtilités du SQL, je t'encourage à consulter un tutoriel complet...
avatar
Pas tout à fait là, pas tout à fait la personne que vous croyez connaître.

14

c'est exactement pareil de faire une page HTML et un document PDF d'un point de vue PHP... ce n'est pas plus compliqué... il faut appliquer exactement les mêmes règles... je suppose que le client pouvait déjà voir sa facture dans ton site, directement via une page HTML généré par du PHP, ben c'est exactement pareil pour généré du PDF : tu dois utiliser les mêmes méthodes pour te connecter à ta base, vérifier les droits de la personne pour vois si oui ou non il a le droit d'accéder à la facture demandée, récupérer les infos de la facture concernée, et faire l'HTML correspondant. Il reste plus qu'après à utiliser HTML2PDF pour convertir l'HTML en PDF.

tout ceci est du PHP de base...

si avant ton appli n'utilisait pas PDO, il ne faut pas l'utiliser maintenant... il faut utiliser les mêmes méthodes que dans le reste de l'appli...
Ancien pseudo : lolo

15

Spipu (./14) :
si avant ton appli n'utilisait pas PDO, il ne faut pas l'utiliser maintenant... il faut utiliser les mêmes méthodes que dans le reste de l'appli...
Tout à fait d'accord... vu comment tu galères par ailleurs, ne te rajoute pas de nouvelles choses à apprendre pour l'instant, réexploite ce que tu fais.

avatar
Pas tout à fait là, pas tout à fait la personne que vous croyez connaître.

16

je crois que je te raconte des bêtises, je desirais recuperais des données via la methode get

if (isset($_GET['prenomcl']))
{
<?php echo '<label>Nom :</label><input type="text" SIZE="33" name="nom_client2" value ="'; if (isset($_GET['nomcl'])) {echo $_GET['nomcl'];} echo '"/><br/>';?>

}

Merci d'avance nil pour ta precieuse aide

17

Hm, à mon avis, x'est une mauvaise idée de faire ça, par contre. N'importe qui pourrait du coup modifier les informations de requête et faire des fausses factures. Il vaut mieux ne passer que l'identifiant de facture en paramètre et que tu refasses une requête pour récupérer les informations de facture (et encore, il faudra à terme avoir un contrôle pour être sûr que tout le monde ne puisse pas récupérer n'importe quelle facture en jouant avec les paramètres de la requête).
avatar
Pas tout à fait là, pas tout à fait la personne que vous croyez connaître.

18

Nil (./17) :
et encore, il faudra à terme avoir un contrôle
Pas à terme, mais tout de suite ! J'ai déjà vu un site connu en production avec lequel on pouvait voir les messages de tout le monde neutral

19

Oui, non mais quand je dis à terme, c'est parce qu'il faut y aller progressivement dans la découverte des éléments de programmation. Il est évident que ça ne devra passer en prod qu'une fois une solution trouvée pour ça.
avatar
Pas tout à fait là, pas tout à fait la personne que vous croyez connaître.

20

oué bien sûr, et je te fais confiance pour ne pas laisser passer ce genre de trucs, c'est juste que pour un newbie c'est le meilleur moyen d'oublier de régler le problème cheeky

21

Oh, ne me fais pas confiance pour ça, je pense que j'en laisse passer en ignorant certaines choses (typiquement tout ce qu'on peut faire/ne pas faire avec TemperData+un peu de sniffing réseau). Et je finis bien souvent par faire des choses un peu crades (une grosse vérification juste avant l'exécution de code critique et un die() violent). Mais bon, j'ai une connaissance très empirique de la sécurité des applis web, un jour il faudra que je pose tout ça pour être certain de ne pas avoir laissé de grosses failles...
avatar
Pas tout à fait là, pas tout à fait la personne que vous croyez connaître.

22

bah, il peut toujours rester des failles, mais pour le coup de l'id laissé dans l'url sans autre vérification, il y a des limites, quoi cheeky

23

Ah oui non, perso j'utilise autant que possible des cookies de session (tout en sachant que ça n'est pas non plus parfait, mais bon...) pour éviter de repasser des informations d'une page à l'autre, et je transmets un maximum des choses en post (ce qui peut poser d'autres soucis, mais bon...).
avatar
Pas tout à fait là, pas tout à fait la personne que vous croyez connaître.

24

En faite c un ptit script de facturation qu'une personne utilisera

[URL=http://www.hostingpics.net/viewer.php?id=808561facture1.jpg][IMG]http://img15.hostingpics.net/thumbs/mini_808561facture1.jpg[/IMG][/URL]

lorsque la souris passe sur un nom en bas y'a toutes les infos que j'aimerais qu'ils apparaissent dans la facture

25

Donc tu les récupères depuis $_GET["mavariable"] et tu en fais ce que tu veux smile
avatar
Pas tout à fait là, pas tout à fait la personne que vous croyez connaître.

26

j'essaie de recuperer ma get variable mais j'ai messge d'erreur qui s'affiche

Notice: Undefined index: moisfa


<?php echo $_GET['moisfa'];?>

27

As-tu bien ce paramètre "moisfa" défini dans ton url ?

genre : http://monsite.fr/maPage.php?moisfa=valeur

et dans maPage.php :
<?php echo $_GET['moisfa'];?>



Tu devrais lire un petit tuto sur le php, ça t'aiderait pas mal.
exemple au hasard : http://php.net/manual/fr/reserved.variables.get.php

28

wep, car là, c'est un forum uniquement sur HTML2PDF, pas sur la programmation PHP de base...

je te conseille fortement de faire des tutorials et de lire de la doc PHP avant de compter utiliser des librairies avancées wink
Ancien pseudo : lolo

29

Si tu veux vérifier ce que tu as dans ton tableau $_GET, je te rappelle que tu peux utiliser print_r :
echo "<pre>";
print_r($_GET);
echo "</pre>";


(Vu le nombre de fois où tu peux avoir à vérifier le contenu et la structure d'un tableau dans une vie de dev web, je te conseille de te faire une petite fonction de ce type : )
function array_display($my_array)
{
echo "<pre>";
print_r($my_array);
echo "</pre>";
}
avatar
Pas tout à fait là, pas tout à fait la personne que vous croyez connaître.

30

@spipu

oui je sais c'est sur html2pdf mais ça fait quand même partie html2pdf car j'arrive toujours pas à utiliser le get sur html2pdf en revanche sur php jy'arrive. j'aimerais vraiment avoir un exemple svp!!

merci d'avance les amis,