1

Bonjour,
J'viens de prendre connaissance de ce logiciel, j'ai adapter ma page php en fonction de celui ci donc, et au moment ou toutes mes erreurs etaient corrigées je chope une erreur FPDF.
FPDF error: Some data has already been output, can't send PDF file

A quoi cela peut il etre du? je vais continuer de chercher mais sachant que je ne connait pas du tout ce logiciel si quelqu'un pouvait m'aider ce serait sympa, merci smile

2

FPDF error: Some data has already been output, can't send PDF file => Erreur propre à FPDF => faq de http://fpdf.org/ => http://fpdf.org/fr/FAQ.php#q9
Ancien pseudo : lolo

3

Ok, merci d'avoir répondu.
Désolé d'avoir mis tant de temps pour revenir mais je voulais d'abord finir mon boulot de programmation avant de me lancer sur l'impression de mes pages php.
J'ai une petite question, la page php que je veux imprimer contient des requêtes sql, est ce que cette erreur peut venir de la? Si j'utilise des variables session en php est ce que la ca marchera?
Je vais essayer ca mais si quelqu'un a la réponse merci de me la faire parvenir.
Merci
(si vous vous posez la question oui je n'y connait rien sur ce logiciel)

4

Bon bah j'ai toujours la meme erreur, à savoir :
FPDF error: Some data has already been output, can't send PDF file
J'ai bien regarder la FAQ, je n'ai pas de retour chariot à la fin de mes fichiers inclus. Par contre je ne suis pas sur de très bien comprendre ce que l'aide dit par :
"Il ne faut rien envoyer d'autre au navigateur que le PDF lui-même : pas d'HTML, pas d'espace, pas de retour-chariot."
C'est bien ce qu'est censé faire le logiciel non?
C'est la seule erreur que j'ai, so any idea is welcome smile
Merci

5

J'ai résolu mon erreur, a force de test on y arrive -_-
J'ai une autre question, est ce qu'il est possible de faire appelle aux variables enregistrées dans ma session php? Ou bien est-'il possible de faire des requêtes avec une base MySQL?
A première vue non, mais comment faire pour afficher des données enregistrées dans ma base alors?
Merci de m'aider

6

GrosBeubeu (./5) :
J'ai résolu mon erreur, a force de test on y arrive -_-

comment as-tu fait ? ca pourrait en aider d'autre wink

GrosBeubeu (./5) :
ai une autre question, est ce qu'il est possible de faire appelle aux variables enregistrées dans ma session php? Ou bien est-'il possible de faire des requêtes avec une base MySQL? A première vue non, mais comment faire pour afficher des données enregistrées dans ma base alors?

on peut absolument tout faire comme si c'était pour générer une page HTML classique. Si ca ne marche pas c'est que le code d'origine n'est pas propre.... session, récupération de variables en get et en post, requêtes SQL, ... tout marche Le seul truc important c'est que le script n'envoie absolument rien au navigateur avant que le pdf ne soit généré... (absolument rien, ca veut dire envoie d'headers ou de contenu...)
Ancien pseudo : lolo

7

Alors pour résoudre mon erreur j'ai d'abord regardé comment fonctionnaient les exemples, ensuite j'ai fait un page php qui affiche des phrases à l'écran, et j'ai rajouté au fur et à mesure un css, du code...
Sinon je ne comprend pas l'explication ne rien envoyé au navigateur avant que le pdf ne soit généré, est ce que tu pourrais me donner un exemple s'il te plait?
Ce que je comprend du php c'est que le serveur interprete la langage php, il renvoie tout en html que le navigateur peut ensuite retranscrire il me semble. Donc je ne vois pas trop ce que tu veux me dire.
En tout cas merci de ta réponse

8

GrosBeubeu (./7) :
il renvoie tout en html que le navigateur peut ensuite retranscrire


il ne renvoie pas de l'html, mais un contenu qui peut être n'importe quoi.
il ne faut pas commencer à envoyer quelque chose avant de mettre des headers, car une fois du contenu envoyé (quelque soir le contenu généré par le php : pdf, html, xml, zip, jpg, ..., ...), il est impossible par la suite d'envoyer des headers permettant justement de définir de quel type de contenu il s'agit. Si aucun header n'est envoyé, le navigateur prendra par défaut de l'html, c'est tout

essaye ce script, tu verra :

<?php
 echo ' ';ob_flush();

 header('Content-type: application/text');

 echo 'test';
?>


étant donné que du contenu (un simple espace) a été envoyé avant, le PHP ne peut plus envoyer d'headers.

Warning: Cannot modify header information - headers already sent by (output started at ...test.php:2) in ...test.php on line 4

il te dit même que le contenu a été envoyé en ligne 2 du fichier.

Ton problème vient de là : tu dois soit avoir un espace quelque part en fin de fichier, soit avoir un echo quelque part qui envoye du contenu au navigateur.

Essaye de faire ca : tu essayes de généré le PDF via ton ancien script, et tu regardes bien le msg d'erreur, il te dira dans quel fichier et à quelle ligne de ce fichier du contenu a été envoyé prématurément.
Ancien pseudo : lolo

9

Ok merci maintenant ca marche, mais j'ai un nouveau problème -_-
J'ai lu les précedent post sur le dépassement des tableaux, il faut mettre des pourcentages ca c'est ok, mais en fait il faudrait mettre la page en paysage, comment est ce que je pourrais faire, est ce que ton logiciel le fait?

En fait avec ou sans ton logiciel l'impression ne prend pas le tableau en entier, elle le découpe lorsqu'elle arrive à la fin de la marge droite.
Même si je configure mon tableau avec des pourcentages le découpage est le même.
Comment faire pour le découpage se fasse proprement sur plusieurs pages??
Merci

10

pour mettre en paysage, c'est possible. Il te suffit de regarder l'exemple 4 wink

Par contre, si ton tableau ne rentre pas alors que tu as bien mis des pourcentages de partout, ce n'est pas normal.

il faut mettre des pourcentages sur toutes tes balises table , et sur toutes tes balises td, pour chacune des lignes des tableaux. Si ca ne marche tjrs pas, c'est que tu dois avoir le contenu d'un TD qui ne doit pas pouvoir rentrer dans la largeur demandée (par exemple une image trop grosse) => essaye de voir quelle ligne (ou quel ensemble de lignes) fait planter la mise en page, puis poste la ici, je regarderais d'ou ca peut venir.
Ancien pseudo : lolo

11

Alors j'ai bien mis toutes mes balises de tableau ac l'attribut style=WIDTH:9% par exemple pour la largeur.
Le truc c'est que tu as raison, certains contenus ne tiennent pas dedans, et je met le balise NOWRAP pour pas que le contenu soit sur 2 lignes, est ce que l'erreur peut venir de la?
Autre chose, j'ai pas mal d'attribut dans mes balises td, y'a pas de problème de conflit ou quelque chose comme ca?

Ah correction, il me restait une balise avec un px, maintenant que je l'ai remplacé je fait planter le logiciel il me semble bien O_o. J'ai un border spacing à 6px, le total de mes pourcentages fait bien 100%.
En fait l'organisation de mon tableau est un peu compliqué, avec des rowspan et colspan, je sais pas si ca peut venir de la. Si tu veux une explication ou du code dis le moi.
Merci

12

en effet, le nowrap pourrait causer le pb.

tu pourrais poster ton code HTML+css, que je regarde? (en enlevant tout ce qui n'est pas censé apparaitre dans un forum bien sur)
Ancien pseudo : lolo

13

Ok, alors le code est un peu long, je t'enleve toutes les requetes SQL et autres, il y a donc juste l'affichage du tableau.

echo '<h3 > Planning hebdomadaire de production</h3>';
echo '<table border="1" style="border:thin solid #483D8B; align:center; border-spacing:6px" width=100%>';
echo '<tr>';
echo '<th align=center rowspan="3" style=WIDTH:10%> GROUPES</th>';
while ($i<$diff){
echo '<th align=center colspan="2" style=WIDTH:9%>'.$jour[$i].'</th>';
$i++;
}
echo '</tr><tr>';
$i=0;
while ($i<$diff){
echo '<th align=center colspan="2" style=WIDTH:9%>'.$date[$i].'</th>';
$i++;
}
echo '</tr><tr>';
$i=0;
while ($i<$diff){
echo '<td align=center style=WIDTH:4,5%>Repas</td><td align=center style=WIDTH:4,5%>Pique-nique</td>';
$i++;
}
echo '</tr><tr>';
echo '<th align=center style=WIDTH:10%>Petits Dèjeuners</th>';
$i=0;
while ($i<$diff){
echo '<td style=width:4,5%>&nbsp;</td><td style=width:4,5%>&nbsp;</td>';
$i++;
}


while ($j<$nbj){

echo '<td algin=center style=WIDTH:10%>'.$nometa[$i].'</td>';
$x=0;

while ($curdate[$i]!=$dateus[$x]){
echo '<td style=WIDTH:4,5%>&nbsp;</td><td style=WIDTH:4,5%>&nbsp;</td>';
$x++;
}
$a=$i;
while ($ideta[$i]==$ideta[$a]){
if ($x<$diff){
if ($curdate[$i]==$dateus[$x]){
if ($ptidej[$i]!=0){
echo '<td align=center style=width:4,5% bgcolor=#66CDAA>'.$ptidej[$i].'</td><td style=WIDTH:4,5%>&nbsp;</td>';
$tot[$x]+=$ptidej[$i];
}else{
echo '<td style=width:4,5%>&nbsp;</td><td style=width:4,5%>&nbsp;</td>';
}
}else{
echo '<td style=width:4,5%>&nbsp;</td><td style=width:4,5%>&nbsp;</td>';
}
}
$a=$i;
$i++;
$x++;
}
if ($x<$diff){
while ($x<$diff){
echo '<td style=width:4,5%>&nbsp;</td><td style=width:4,5%>&nbsp;</td>';
$x++;
}
}

$j++;
echo '</tr><tr>';
}

echo '<th> TOTAL</th>';
$i=0;
while ($i<$diff){
if ($tot[$i]!=""){
echo '<td align=center bgcolor=#808080 style=width:4,5%>'.$tot[$i].'</td><td style=width:4,5%>&nbsp;</td>';
}else{
echo '<td style=width:4,5%>&nbsp;</td><td style=width:4,5%>&nbsp;</td>';
}
$i++;
}


Voila le debut de mon tableau, cette procédure ce répète 3 fois, c'est à peu près la même chose. Si quelque chose t'interpelle la dedans dis le moi, je vais mettre une image du rendu pour que tu te rendes bien comptes de ce que ça donne (le tableau de l'image est en px, avec les pourcentages je suis en test en ce moment) .

Merci

tromb Fichier joint : tabplanninghebdo.bmp

14

tu pourrais plutot poster le code HTML généré ? car là il me manque pas mal de variables ($tot, $dif, ...)
Ancien pseudo : lolo

15

Ok, le truc c'est que le code généré est sur une seule ligne c'est illisible O_o
Attend 2secondes je vais te donner ca (celui avec les cheeky

16

Ah % + ) ca donne cheeky ^^
Voila le code généré, c'est le tableau avec les %, je te donne le fichier .php et l'image de ce qu'il donne.

tromb Fichier joint : tabplanninghebdo%.bmp

tromb Fichier joint : planningHTMLGénéré.html

Merci

Si tu veux je peux te donner le fichier qui genere le pdf, enfin qui n'arrive pas a le generer avec les %

tromb Fichier joint : editionPlanningHebdo2.php

17

Salut,
Au fait j'ai essayé de manipuler ton exemple04 en remplissant les cases avec plein de texte, et ca me fait la même chose, c'est à dire ca coupe, la je vois pas trop comment faire, tu es sûr que même avec le % ca marche?
En tout cas je comprend que t'aies pas répondu au post précédent vu le nombre de ligne
Est ce que tu pourrais me dire si tu en sais plus?
Merci

18

lol, c'est pas à cause du nombre de ligne smile c'est juste que j'ai pas eu le temps depuis... (je fais html2pdf sur mon temps libre, et cette semaine c'est pas trop ca...)

je vais essayer de regarder ton pb en profondeur demain !
Ancien pseudo : lolo

19

Ok merci, je fais des recherches aussi de mon coté

20

plusieurs points :

- tu a marqué algin à un moment au lieu de align
- pour les valeurs, si c'est 0 il ne faut pas d'unité (exemple : border:0 et non border:0% )
- préférer align="center" à align=center
- c'est style="...." et non style=...
- le séparateur pour les nombres flottant, c'est . et non , (4.5% et non 4,5% )
- height=10% n'est pas valable car height= et width= n'acceptent que des nombres sans unités, le nombre représente alors des px. il faut sinon include le height dans le style (style="height: 10%")
- bgcolor=#66CDAA peut ne pas marcher à cause du #. si on ne mets pas que des chiffres ou des lettres il vaut mieux mettre des " : bgcolor="#66CDAA"
- il faut préciser la larguer sur TOUS les éléments TD
- tu devrais apprendre à utiliser les styles...

voici le fichier corrigé

tromb Fichier joint : test.php


il faut être bcp plus carré dans l'écriture de tes HTMLs
Ancien pseudo : lolo

21

Merci beaucoup, c vrai que mon fichier est bien naze sur tt ce qui est mise en page j'y connais rien.
Sinon bien joué ca marche, mais le truc c que t'as réussi a le faire tenir sur une page, ce que j'avais deja fait. En fait si tu rajoutes une colonne en plus, celle ci sera coupé car on arrive à la marge droite. Pour un autre fichier j'ai un tableau beaucoup plus important, et donc j'aimerais savoir s'il est possible d'afficher le reste à la suite sur une (ou plusieurs)autre page.
Je te donne le fichiers test.php avec une colonne en plus pour que tu vois.

tromb Fichier joint : testimp.php

En tout cas merci beaucoup pour les conseilles de style.

22

il te suffit d'adapter dynamiquement la taille des colonnes...

100 = 10 + nb*taille

dans le cas que je t'ai mis au propre, nb=10 => taille = 9%
Ancien pseudo : lolo

23

OK, dans ce cas la, plus le tableau sera grand, plus les colonnes seront petites.
Mais dans le cas ou mes colonnes sont de tailles fixes, quelle est le moyen pour qu'il passe à la page suivante sans couper mon tableau en bout de marge droite?

24

le découpage de tableaux dans ce sens n'est pas possible. Seule le découpage en ligne est possible, étant donné que les pages sont les une en dessous des autres... ce n'est pas excel wink
Ancien pseudo : lolo

25

Ok il me semblait bien.
Comme tu le dis je vais faire un fichier excel je suis dessus.
Merci pour ton aide, très sympa.
++