Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PDF > phpToPDF
phpToPDF Forum d'entraide pour la classe phpToPDF permettant de générer des documents PDF en PHP. Avant de poster -> tutoriels EZPDF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/05/2007, 17h39   #1
fat
Invité de passage
 
Inscription : juin 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 36
Points : 4
Points : 4
Par défaut [phpToPDF] problème d'affichage tableau dynamique

Bonjour,
voila j'ai un tableau qui me permet d'afficher le resultat de ma requete

mon probleme c que le contenu de certaine cellule debordent !!!
comment je peux faire un retour chariot ou de limiter la taille du contenu de la cellule???

voila mon code , c'est le $row1['item_name'] qui depasse

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
$PDF = new phpToPDF();
$PDF->AddPage();
$PDF->SetFont("Arial","B",16);
 
$query = "select * from Check_item_".$_SESSION['jalon'];
	$resultat=mysql_query($query);
	$PDF->SetFont("Arial","B",14); 
	$PDF->SetFillColor(96,96,96); 
	$PDF->SetTextColor(255,255,255); 
	$header=array('Nom','Prénom','Indice'); 
	$PDF->SetXY(20,$y); 
	for($i=0; $i<sizeof($header); $i++) 
	$PDF->cell(50,10,$header[$i],1,0,'L',1); 
	// Affichage des données 
	$PDF->SetFillColor(0xdd,0xdd,0xdd); 
	$PDF->SetTextColor(0,0,0); 
	$PDF->SetFont('Arial','',10); 
	$PDF->SetXY(20,$PDF->GetY()+10); 
	$fond=0; 
	while($row=mysql_fetch_array($resultat)) 
	{ 
	$query = "select item_name from Item_list where id_item = '".$row['id_item']."'";
	$resu=mysql_query($query);
	while($row1=mysql_fetch_array($resu)) 
	{ 
	$x = strlen($row1['item_name']);
 
	$PDF->cell(50,7,$row['status'],1,0,'C',$fond); 
	$PDF->cell(50,7,$row['supplier'],1,0,'C',$fond); 
	$PDF->cell(50,7,$row1['item_name'],1,0,'L',$fond); 
	$PDF->SetXY(20,$PDF->GetY()+7); $fond=!$fond; 
	} 
	}
si qlq un a une idée

Merci d'avance
fat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 17h50   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Bonjour,

Il me semble qu'il faut, dans ton cas, utiliser la méthode MultiCel au lieu de Cell pour avoir des retours à la ligne.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 18h04   #3
fat
Invité de passage
 
Inscription : juin 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 36
Points : 4
Points : 4
j'ai remplacé
$PDF->cell(50,7,$row1['item_name'],1,0,'L',$fond);
par

$PDF->MultiCell(50,7,trim($row1['item_name']),1,'J',0);

certe j'ai la total du contenu dans la cellule par contre

les lignes de mon tableau sont separées
fat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 19h34   #4
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
Qu'entends-tu par

Citation:
les lignes de mon tableau sont separées

Aurais-tu un pdf à nous montrer ??

Pour faire entrer un texte long dans une cellule, le plus approprié est le MultiCell, sinon, tu gardes le Cell mais tu change la taille de la police... (pour automatiser, c plus galère...)

++
JC
__________________
VELOMASTER, idée cadeau ? un jeu de plateau

Hummmmm, des donuts !!!!

Merci de penser à , et et aussi
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 09h21   #5
fat
Invité de passage
 
Inscription : juin 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 36
Points : 4
Points : 4
bonjour,
avec MultiCell j'ai une lignes blache entre chaque ligne

en faite mon probleme c que la derniere colonne contient une ligne de texte
tres long et ca depasse la cellule qui lui consacré

j'espere que je me suis bien expliqué

help je n'arrive pas avancé

Merci
fat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 11h33   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Bon j'ai fait des tests rapides, la ligne blanche que tu obtiens entre chaque ligne n'est pas une "ligne de tableau", ca vient du fait que tu as défini la taille de ta multicell à 7 en hauteur, donc ca va a la ligne et te donne l'impression qu'il y a une ligne blanche entre. Essaies de réduire cette valeur pour arriver au résultat que tu souhaites.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 12h07   #7
fat
Invité de passage
 
Inscription : juin 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 36
Points : 4
Points : 4
j'ai réduit la taille mais j'ai toujours le même problème
le item est d'une case en entier et le reste de la ligne s'affiche après sur une 2eme ligne
j'ai mon fichier pdf en pièce pointe comme ça c'est plus clair

et voilà le code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
$query = "select * from Check_item_".$_SESSION['jalon'];
	$resultat=mysql_query($query);
	//$pdf=new PDF('P','mm','A4'); 
	//$pdf->AliasNbPages(); 
	//$pdf->AddPage(); 
	//Titres des colonnes 
	$PDF->SetFont("Arial","B",8); 
	$PDF->SetFillColor(96,96,96); 
	$PDF->SetTextColor(255,255,255); 
	//$header=array('Item','supplier','Status','Available','Date'); 
	$PDF->SetXY(10,$y); 
	//for($i=0; $i<sizeof($header); $i++) 
	//$PDF->cell(50,10,$header[$i],1,0,'C',1); 
	$PDF->cell(50,10,'Item',1,0,'C',1);
	$PDF->cell(40,10,'Supplier',1,0,'C',1);
	$PDF->cell(20,10,'Statut',1,0,'C',1);
	$PDF->cell(14,10,'Available',1,0,'C',1);
	$PDF->cell(15,10,'Date',1,0,'C',1);
	$PDF->cell(50,10,'Link',1,0,'C',1);
	// Affichage des données 
	$PDF->SetFillColor(0xdd,0xdd,0xdd); 
	$PDF->SetTextColor(0,0,0); 
	$PDF->SetFont('Arial','',8); 
	$PDF->SetXY(10,$PDF->GetY()+10); 
	$fond=0; 
	while($row=mysql_fetch_array($resultat)) 
	{ 
	$query = "select item_name from Item_list where id_item = '".$row['id_item']."'";
	$resu=mysql_query($query);
	while($row1=mysql_fetch_array($resu)) 
	{ 
	//$x = strlen($row1['item_name']);
	//$PDF->cell(50,7,$row1['item_name'],1,0,'L',$fond);
	$PDF->MultiCell(50,6,trim($row1['item_name']),1,'J',0); 
	$PDF->cell(40,7,$row['supplier'],1,0,'C',$fond); 
	$PDF->cell(20,7,$row['status'],1,0,'C',$fond);
	$PDF->cell(14,7,$row['availability'],1,0,'C',$fond);
	$PDF->cell(15,7,$row['date'],1,0,'C',$fond);
	$PDF->cell(50,7,$row['link'],1,0,'C',$fond);	
	$PDF->SetXY(10,$PDF->GetY()+7);
 $fond=!$fond;
mercii
fat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 12h08   #8
fat
Invité de passage
 
Inscription : juin 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 36
Points : 4
Points : 4
sorry
voila mon pdf
Fichiers attachés
Type de fichier : pdf doc.pdf (4,8 Ko, 32 affichages)
fat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 12h13   #9
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Essaies de mettre 1 en hauteur a ta case et tu verras que l'écart va se réduire, passer de 7 a 6 n'est pas suffisant.

Si tu regardes bien c'est logique, quand tu vois la taille en hauteur de 2 Cell l'une sous l'autre (ex: contract sheet et development project leader) ca fait la meme chose que ta MultiCell encore en dessous mais sans le trait intermédiaire de séparation de cellule.
Je pense que si tu mets 3 ou 4 a la place de 6 ca va s'estomper. Mais ca posera probleme dans le cas où ton texte n'est que sur une ligne...
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 12h26   #10
fat
Invité de passage
 
Inscription : juin 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 36
Points : 4
Points : 4
en faite dans mon fichier
par exemple la 1ere ligne
le item "Contract sheet (Feuille d affaire) filled" s'affiche tout seul sur la ligne sans supplier, status ...
en faite la 2eme ligne
"Development Project Leader" "Requested" "Y" "2008-09-02"

et la suite de la 1ere
je cherche comment les afficher sur une même ligne
fat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 12h36   #11
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
1/ Quand tu as tapé ton code, selectionnes le et clique sur le # en haut, ca rend le code lisible !

2/ j'avais donc rien compris a ton probleme !!

en fait, quand tu fais un MultiCell, il va apres le multicell pour écrire la suite. Il faut donc que tu mémorises l'ordonnée avant d'écrire le MultiCell pour mettre le Cell a la meme hauteur; qqch comme ca:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
	$resu=mysql_query($query);
	while($row1=mysql_fetch_array($resu)) 
	{ 
        // memorise pour écrire apres la cellule multiple
	$x = $PDF->getX(); 
	$y = $PDF->getY();  
	//largeurCellule
        $largeur = 50;
        $PDF->MultiCell($largeur ,7,trim($row1['item_name']),1,'J',0);      
        // Reviens dans ton pdf :
        $PDF->setX($x + $largeur );
        $PDF->setY($y);
	$PDF->cell(40,7,$row['supplier'],1,0,'C',$fond); 
	$PDF->cell(20,7,$row['status'],1,0,'C',$fond);
	$PDF->cell(14,7,$row['availability'],1,0,'C',$fond);
	$PDF->cell(15,7,$row['date'],1,0,'C',$fond);
	$PDF->cell(50,7,$row['link'],1,0,'C',$fond);	
	$PDF->SetXY(10,$PDF->GetY()+7);
 $fond=!$fond;

Je promets rien, et ce que tu mémorises il faut peut etre le faire apres chaque CELL je suis pas sur.

Mais dans ton cas, je crois qu'il faudrait plutot que tu t'orientes vers les vrais tableaux plutot que ce qu'on bricole, parce que tes largeurs et le nombre de colonnes sont clairement définis donc ca serait plus simple.

Bon courage
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 13h15   #12
fat
Invité de passage
 
Inscription : juin 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 36
Points : 4
Points : 4
Merci c bon j'arrive à afficher toute la ligne
mais le contenu du MultiCell est illisible

voila mon pdf c plus parlant

pourquoi ca c'affiche comme ca !!!
Fichiers attachés
Type de fichier : pdf doc.pdf (3,5 Ko, 16 affichages)
fat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 13h40   #13
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Je pense que deux cellules sont l'une sur l'autre, mémorise l'rdonnée a laquelle écrire la prochaine ligne une fois que tu as mis le MultiCell
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
	while($row1=mysql_fetch_array($resu)) 
	{ 
        // memorise pour écrire apres la cellule multiple
	$x = $PDF->getX(); 
	$y = $PDF->getY();  
	//largeurCellule
        $largeur = 50;
        $PDF->MultiCell($largeur ,7,trim($row1['item_name']),1,'J',0);   
        // memorise l'ordonnée pour la prochaine ligne si multicell sur plusieurs lignes 
        $yProchaineLigne = $PDF->getY();  
        // Reviens dans ton pdf :
        $PDF->setX($x + $largeur );
        $PDF->setY($y);
	$PDF->cell(40,7,$row['supplier'],1,0,'C',$fond); 
	$PDF->cell(20,7,$row['status'],1,0,'C',$fond);
	$PDF->cell(14,7,$row['availability'],1,0,'C',$fond);
	$PDF->cell(15,7,$row['date'],1,0,'C',$fond);
	$PDF->cell(50,7,$row['link'],1,0,'C',$fond);	
	$PDF->SetXY(10,$	while($row1=mysql_fetch_array($resu)) 
	{ 
        // memorise pour écrire apres la cellule multiple
	$x = $PDF->getX(); 
	$y = $PDF->getY();  
	//largeurCellule
        $largeur = 50;
        $PDF->MultiCell($largeur ,7,trim($row1['item_name']),1,'J',0);      
        // Reviens dans ton pdf :
        $PDF->setX($x + $largeur );
        $PDF->setY($y);
	$PDF->cell(40,7,$row['supplier'],1,0,'C',$fond); 
	$PDF->cell(20,7,$row['status'],1,0,'C',$fond);
	$PDF->cell(14,7,$row['availability'],1,0,'C',$fond);
	$PDF->cell(15,7,$row['date'],1,0,'C',$fond);
	$PDF->cell(50,7,$row['link'],1,0,'C',$fond);	
	$PDF->SetXY(10,$PDF->GetY()+7);
 $fond=!$fond; 
);
 $fond=!$fond;
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 14h18   #14
fat
Invité de passage
 
Inscription : juin 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 36
Points : 4
Points : 4
j'ai bien memorisé mes ordonnées !!! j'ai toujours le même pb
fat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 14h22   #15
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Je commence à m'y perdre là... As-tu essayé d'ajouter 7 encore à cette ordonnée?
Fais des tests sur les ordonnées pour comprendre ce qui se passe et essayer de trouver une solution "acceptable"

et pourquoi n'utilises-tu pas les tableaux directement?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 16h50   #16
fat
Invité de passage
 
Inscription : juin 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 36
Points : 4
Points : 4
c bon j'ai reussi à afficher mon tableau avec drawTableau

Merci pour vos conseils

j encore une petite question
comment je peux afficher des liens "active" sur mon pdf


et Merci encore
fat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 16h58   #17
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Il y a la méthode Link dans la doc... http://fpdf.org/fr/doc/link.htm
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2007, 16h19   #18
fat
Invité de passage
 
Inscription : juin 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 36
Points : 4
Points : 4
Merci pour votre aide c bon j'ai reussi à afficher mon tableau
fat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h11.


 
 
 
 
Partenaires

Hébergement Web