[RESOLU] Fpdf, générer plusieurs pdf distincts dans une boucle for

Eléphant du PHP | 296 Messages

16 janv. 2020, 15:55

Bonjour à tous,

J'ai un système de génération de pdf qui fonctionne comme ceci :

Code : Tout sélectionner

<?php /* Du code, du code, du code... */ // Inclusion de mon fichier php générant le document pdf grâce à fpdf // Ce fichier se termine par : $PDF -> Output("nom_de_fichier.pdf", "F"); // Il crée le fichier sur le serveur require_once(generation_de_fichier.php); /* Du code, du code, du code... */ ?>
Ça marche impeccable, et je voudrais maintenant reprendre la même chose en cascade, comme ceci :

Code : Tout sélectionner

<?php // Création en cascade des fichiers pdf for($i=0 ; $i<5 ; $i++) { require_once(generation_de_fichier.php); } ?>
Ça marche toujours, mais ça ne crée que le premier de la boucle.

J'ai trouvé un sujet similaire ici : php4-deprecated/boucle-for-fpdf-t2079.html mais j'ai pas compris la réponse :oops:

Quelqu'un a-t-il une piste pour m'aider ? Merci !

Mammouth du PHP | 1614 Messages

16 janv. 2020, 16:06

Montre nous le code de ton fichier generation_de_fichier;php

le principe est de mettre ce code dans une fonction, inclure le fichier une fois (avec require ou require_once) et appelé la fonction dans ta boucle
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone de rubik's cube
Ingénieur Industriel Chimie / Biochimie

Eléphant du PHP | 296 Messages

16 janv. 2020, 16:26

Je veux bien mettre le code mais ça dira pas grand chose, il fait 500 lignes et fonctionne très bien dès lors que je n'en génère qu'un seul.
En revanche, je ne l'inclus pas dans une fonction comme tu le préconises, il est généré en direct par le fichier inclus.

Dans la réponse du topic dont je parle (celui-là), celui qui répond dit qu'il faut "un seul output". Et moi du coup j'en ai un par fichier généré, mais je comprends pas bien pourquoi ça fonctionnerait pas comme ça.

Avatar du membre
Mammouth du PHP | 1048 Messages

16 janv. 2020, 17:02

Avec un require_once ton fichier ne sera inclut et exécuté qu'une seule fois même si tu passes plusieurs fois sur la ligne. Utilises require ou include. Après le résultat dépend encore du contenu du fichier inclut.

D'après le commentaire "Ce fichier se termine par : $PDF -> Output("nom_de_fichier.pdf", "F");" bah ça va te créer 5 fois le même fichier nom_de_fichier.pdf et tu n'auras donc qu'un fichier.

Alors tu peux toujours intégrer l'itérateur $i au nom du fichier ou comme Spols le suggère créer une fonction qui par exemple prendrait le nom du fichier en sortie en paramètre.
J'édite souvent mon message après avoir répondu pour le corriger où y apporter des informations complémentaires alors n'hésitez pas à y jeter un nouveau coup d'oeil ^^

Eléphant du PHP | 296 Messages

17 janv. 2020, 15:42

Merci pour ta réponse Saian. Pour ce qui est de la nomenclature du fichier, j'ai bien prévu qu'elle soit itérative donc pas de souci de ce côté là.

Enfin, tu avais raison pour le include à la place du require_once : ça fonctionne du feu de dieu, merci beaucoup :D