Probème afficha image FPDF

Eléphant du PHP | 259 Messages

19 mars 2007, 15:44

Bonjour,

J'ai une page de statistique avec des barres graphique (avec la librairie GD). Je suis en train de générer des PDF par rapport à cette page.
J'arive a afficher le pourcentage et tout, mais pour afficher les images j'ai un petit probléme.

Tout d'abord je crée l'image voici la fin de mon code :
<?
// Création de l'image à afficher
		imagepng($image,"image$p.png",70);
		imagepng($image);
		
		// Affichage de l'image
		echo "<img src=\"image$p.png\">";
?>
		
$p correspond au pourcentage, donc ça me crée bien dans mon dossier plusieurs images appelé par exemple image50 (pour le pourcentage 50)..etc

Donc aprés j'aimerais les afficher dans le fichier PDF, voici mon code :
<?

//Récupére le nombre de réponse
							$req1 = "SELECT count(id_reponse) FROM vote WHERE id_sondage = '$id_sondage' AND id_question = '$id_question' ORDER BY id_vote"; 
							$resultat1 = mysql_query($req1); 
								while($val1= mysql_fetch_array($resultat1)) 
								{ 
								//nb_rep correspond au nombre de réponse total
								$nb_rep = $val1['count(id_reponse)']; 
								}

if ($nb_rep > 0)
							{
							$req4 = "SELECT * FROM vote WHERE id_sondage = '$id_sondage' AND id_question = '$id_question'  AND id_reponse = '$id_reponse'  "; 
							$resultat4 = mysql_query($req4); 
							$nb_vote = mysql_num_rows($resultat4);
							$pourcent =  cacul_pourcentage($nb_vote,$nb_rep);
							
							$pdf->SetFont('Arial','',7);
							$pdf ->Image('image'.$pourcent.'.png',10,50,30); 
							$pdf->MultiCell(0,6,$intitule.' : '.$pourcent.' %',10,1); 

							}
?>
Ce code m'affiche les intitulé et le nombre de pourcentage.

Cette ligne : $pdf ->Image('image'.$pourcent.'.png',10,50,30); affiche une image (mais il affiche la derniére de ma page), de plus elle s'affiche au coordonné que j'ai mis (10,50,30).

Comment faire pour afficher les images pour chaque intitulé car là ça ne m'en met qu'un, et comment faire pour que ça saffiche aprés l'affichage des pourcentages ?

Mammouth du PHP | 1029 Messages

19 mars 2007, 16:15


Cette ligne : $pdf ->Image('image'.$pourcent.'.png',10,50,30); affiche une image
Normal
de plus elle s'affiche au coordonné que j'ai mis (10,50,30).
encore normal

Comment faire pour afficher les images pour chaque intitulé car là ça ne m'en met qu'un, et comment faire pour que ça saffiche aprés l'affichage des pourcentages ?
Sois plus clair


Ce que je comprend c'est que tu veux afficher une image qui à été au préalable générer(donc une seul), et que tu l'affiche grâce à un nom générer par ta fonction cacul_pourcentage

ton résultat me semble donc logique.
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 259 Messages

19 mars 2007, 16:40

En fait dans ma page pdf qui affiche les résultats cela m'affiche par exemple :

rep1 : 20 %
rep2 : 50 %
rep3 : 30 %
...etc

donc j'aimerais afficher l'image qui correspond a 20% (qui est enregistré dans mon dossier) a coté de rep 1, ensuite l'image qui correspond a 50£ s'affiche aprés rep2.

Là avec mon code, il ne m'affiche qu'une image (et il pren la dernéire c a d pour l'exmple il m'afficherait l'image qui correspond a 30%), alors que la ligne est dans une boucle, et que les intitulé (rep1,rep2..) s'affiche bien.

je te met une plus grande partie de mon code (qui affiche les intitulé et les pourcentage) pour mieux comprendre :
<?


//Requete pour récupérer les données des questions du sondage
$sql = "SELECT * FROM question where id_sondage ='$id_sondage' ORDER BY position ASC"; 
$req = mysql_query($sql); 

$total = mysql_num_rows($req); 



if ($total > 0) 
        { 
           
		$i=1;  //on met la variable a 1 
        while($valeur = mysql_fetch_array($req)) 
            {    
			//Récupére les données des questions
            $titre_question =  $valeur['titre_question']; 
            $methode = $valeur['methode']; 
			$id_question = $valeur['id_question']; 

				//Affiche le numéro et le titre de la question
                $pdf->SetFont('Arial','U',9);
				$pdf->MultiCell(0,6,$i.') '.$titre_question,10,1);
				
							 
                    //Requête pour récupérer les données des réponses 
					$requete2 = "SELECT * FROM reponse WHERE id_sondage = '$id_sondage' AND id_question = '$id_question' ORDER BY position";    
                    $resultat2 = mysql_query($requete2);
					if (!$resultat2) echo mysql_error();
   
                           while($val= mysql_fetch_array($resultat2)) 
                            { 
							$id_reponse = $val['id_reponse']; 
							$intitule = $val['intitule']; 
									
							
							//Récupére le nombre de réponse
							$req1 = "SELECT count(id_reponse) FROM vote WHERE id_sondage = '$id_sondage' AND id_question = '$id_question' ORDER BY id_vote"; 
							$resultat1 = mysql_query($req1); 
								while($val1= mysql_fetch_array($resultat1)) 
								{ 
								//nb_rep correspond au nombre de réponse total
								$nb_rep = $val1['count(id_reponse)']; 
								}
							
							//Suivant la méthode
							switch ($methode) 
							{ 
							                         
							//Liste déroulante 
							case 'deroulante': 
								
							if ($nb_rep > 0)
							{
							$req4 = "SELECT * FROM vote WHERE id_sondage = '$id_sondage' AND id_question = '$id_question'  AND id_reponse = '$id_reponse'  "; 
							$resultat4 = mysql_query($req4); 
							$nb_vote = mysql_num_rows($resultat4);
							$pourcent =  cacul_pourcentage($nb_vote,$nb_rep);
						
							$pdf->SetFont('Arial','',7);
							$pdf ->Image('image'.$pourcent.'.png',10,50,30); 
							$pdf->MultiCell(0,6,$intitule.' : '.$pourcent.' %',10,1); 

	}
							break; 


//... etc pour les autres methode radio, liste deroulante.. masi c'est le meme code)
}
}
}

?>

Mammouth du PHP | 1029 Messages

19 mars 2007, 17:10

Bien tu vois je n'avais pas compris que tu faisais une boucle

donc dans la ligne suivante
$pdf ->Image('image'.$pourcent.'.png',10,50,30); 
tu affiches une image avec certaine coordonnées, or si tu as une deuxième image tu la réaffiches avec les mêmes coordonnées, donc tu les superposes.

Du coup c'est la dernière qui est affiché.

Il faudrais donc modifier les coordonnées à chaque passage.
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 136 Messages

19 mars 2007, 17:52

en FPDF tu dois créer au préalable une cellule qui va contenir l'image
sans quoi les images se superposent au même endroit

$pdf->SetFont('Arial','',7);
ici tu dois implanter une cellule vide qui sera le contenant de l'image avec ou sans bordures $pdf->Cell($largeur,$hauteur,'',0,0);
et ensuite
$pdf ->Image('image'.$pourcent.'.png',10,50,30);
$pdf->MultiCell(0,6,$intitule.' : '.$pourcent.' %',10,1);
multicell ramène à la ligne automatiquement .
L'informatique apporte des solutions à des problèmes qui ne se posaient pas avant qu'elle existe.

Eléphant du PHP | 259 Messages

20 mars 2007, 10:12

Donc a chaque image je la décale vers le bas, donc ça marche bien.

Mais le probléme c'est pour les mettre a la même hauteur que les intitulé en fait.. car les intitulé peuvent changé de taille dc je voudrais afficher l'image sur la meme ligne que l'intitulé...

Eléphant du PHP | 136 Messages

20 mars 2007, 10:36

dans le code précédent ça crée une cellule vide suivie d'un multicell sur la même ligne, ensuite tu implantes l'image par ses coordonnées dans la cellule vide
si tu as besoin d'une concordance entre la hauteur de l'image et le multicell tu joues sur le paramètre hauteur police du multicell et tu ajustes le paramètre $height de l'image en conséquence
exemple si tu as 2 lignes de 10 pt dans le multicell tu affectes 20 au paramètre $height de la cellule contenant l'image et tu affiches l'image avec les cotes idoines dedans.
l'inconvénient de fpdf c'est que l'image doit être paramétrée par sa largeur
et la cellule la contenant par sa hauteur obligeant ainsi à une gymnastique de proportions.
pour plus de détails voir www.fpdf.org section manuel et scripts
L'informatique apporte des solutions à des problèmes qui ne se posaient pas avant qu'elle existe.

Mammouth du PHP | 1029 Messages

20 mars 2007, 12:02

Bon alors,

Code : Tout sélectionner

Image(string file, float x, float y [, float w [, float h [, string type [, mixed link]]]])
il lui suffit de donner les bonnes coordonnées et il n'a pas besoin de cell pour cela.


dans son code il signifie que son image est de :

abscisse : 10
Ordonnée : 50
de largeur : 30
Hauteur : ?

si il ne veut pas que les images se superpose, il faut définir la hauteur de l'image, puis additionner la hauteur à l'ordonnée pour ne pas que les images se superpose
L'expérience est la somme de toutes nos erreurs.