Bonjour tout le monde,

Je crée des PDF avec fpdf.org

Dans ma base de données, j'ai des noms de cours avec des accents, ce qui me donne par exemple ceci :

El?nts de mycologie
J'ai fais une recherche sur le forum, j'ai trouvé ce post :

Je vois donc que je dois utiliser utf8_decode()

Sauriez-vous me dire où je de mettre cette fonction (utf8_decode()) car dans mon code existant, je ne vois pas du tout où le mettre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
session_start();
//define('FPDF_FONTPATH','font/');
require('mysql_table.php');
//$_GET = array_map("mysql_real_escape_string", $_GET);
class PDF extends PDF_MySQL_Table
{
	function Header()
	{
		//Titre
		//DD: ceci permet de donner la taille de Professeur Jean-Michel KAUFFMANN PHAR-J-302 TH NORMAL (Page 1 sur 2 ) Date : 28/04/09   Signature : 
		$this->SetFont('Arial','',10);
 
		$this->Cell(0,6,'Professeur '.$_SESSION['Prenom'].' '.$_SESSION['Nom']. ' ' .$_GET['cours']. ' ' . $_GET['type'].' '.$_GET['categorie']. ' (Page ' . $this->PageNo().' sur'. $this->AliasNbPages(). ' {nb} )'. '      Date : '. date("d/m/y") .' Signature : ',0,1,'C');
		$this->Ln(10);
		if($_GET['etat'] == "true")
		{
			$this->Cell(0,6,'Affichage aux valves autorise',0,1,'C');
		}
		else
		{
			$this->Cell(0,6,'Affichage aux valves non autorise',0,1,'C');
		}
 
		//Imprime l'en-tete du tableau si ncessaire
		//parent::Header();
	}
}
 
//Connexion a la base
mysql_connect('localhost','root','mdp');
mysql_select_db('pharma');
 
$sql = "SELECT inscrits_en.MATRICULE_ET, etudiants.NOM_ET, etudiants.PRENOM_ET,inscrits_en.NOTE FROM `inscrits_en` LEFT JOIN `etudiants` ON ( inscrits_en.MATRICULE_ET = etudiants.MATRICULE_ET ) WHERE MNEMONIC = '".$_GET['cours']."' AND TYPE_DE_COURS = '".$_GET['type']."' AND CATEGORIE = '".$_GET['categorie']."' ORDER BY NOM_ET, PRENOM_ET";
 
$pdf=new PDF();
$pdf->Open();
$pdf->AddPage();
 
 
//Premier tableau : imprime toutes les colonnes de la requete
$pdf->Table($sql);
 
//Sortie vers l'cran
$pdf->Output(I);
//***Vue que cela ne fonctionne pas avec IE, je dois ajotuer ce code qui cre un fichier temporaire (voir FAQ fpdf)***
//Determination d'un nom de fichier temporaire dans le repertoire courant
$file = basename(tempnam('.', 'tmp'));
//rename($file, $file.'.pdf'); //rename est une opération d'E/S (donc sur le disque) elle ne change pas la valeur de la variable $file
$file .= '.pdf';
//Sauvegarde du PDF dans le fichier
$pdf->Output($file, 'F');
//Redirection
header('Location: '.$file);
?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<?php
	require('fpdf.php');
 
	class PDF_MySQL_Table extends FPDF
	{
			var $ProcessingTable=false;
			var $aCols=array();
			var $TableX;
			var $HeaderColor;
			var $RowColors;
			var $ColorIndex;
 
		function Header()
		{
			//Imprime l'en-tte du tableau si ncessaire
			//si ProcessingTable est égal à vrai, c'est que je suis sur 
			if($this->ProcessingTable)
				$this->TableHeader();
		}
 
		function TableHeader()
		{
			// DD: on utilise ce SetFont lors de la création de l'en-tête
			$this->SetFont('Arial','B',12);
			$this->SetX($this->TableX);
			$fill=!empty($this->HeaderColor);
			if($fill)
				$this->SetFillColor($this->HeaderColor[0],$this->HeaderColor[1],$this->HeaderColor[2]);
			foreach($this->aCols as $col)
				$this->Cell($col['w'],6,$col['c'],1,0,'C',$fill);
			$this->Ln();
		}
 
		function Row($data)
		{
			$this->SetX($this->TableX);
			$ci=$this->ColorIndex;
			$fill=!empty($this->RowColors[$ci]);
			if($fill)
				$this->SetFillColor($this->RowColors[$ci][0],$this->RowColors[$ci][1],$this->RowColors[$ci][2]);
			foreach($this->aCols as $col)
				$this->Cell($col['w'],5,utf8_decode($data[$col['f']]),1,0,$col['a'],$fill);
 
			$this->Ln();
			$this->ColorIndex=1-$ci;
		}
 
		function CalcWidths($width,$align)
		{
			//Calcule les largeurs des colonnes
			$TableWidth=0;
			foreach($this->aCols as $i=>$col)
			{
				$w=$col['w'];
				if($w==-1)
					$w=$width/count($this->aCols);
				elseif(substr($w,-1)=='%')
					$w=$w/100*$width;
				$this->aCols[$i]['w']=$w;
				$TableWidth+=$w;
			}
			//Calcule l'abscisse du tableau
			if($align=='C')
				$this->TableX=max(($this->w-$TableWidth)/2,0);
			elseif($align=='R')
				$this->TableX=max($this->w-$this->rMargin-$TableWidth,0);
			else
				$this->TableX=$this->lMargin;
		}
 
		function AddCol($field=-1,$width=-1,$caption='',$align='L')
		{
			//Ajoute une colonne au tableau
			if($field==-1)
				$field=count($this->aCols);
			$this->aCols[]=array('f'=>$field,'c'=>$caption,'w'=>$width,'a'=>$align);
		}
 
		function Table($query,$prop=array())
		{
			//Excute la requte
			$res=mysql_query($query) or die('Erreur: '.mysql_error()."<BR>Requte: $query");
			//Ajoute toutes les colonnes si aucune n'a t dfinie
			if(count($this->aCols)==0)
			{
				$nb=mysql_num_fields($res);
				for($i=0;$i<$nb;$i++)
					$this->AddCol();
			}
			//Dtermine les noms des colonnes si non spcifis
			foreach($this->aCols as $i=>$col)
			{
				if($col['c']=='')
				{
					if(is_string($col['f']))
						$this->aCols[$i]['c']=ucfirst($col['f']);
					else
						$this->aCols[$i]['c']=ucfirst(mysql_field_name($res,$col['f']));
				}
			}
			//Traite les proprietes
			if(!isset($prop['width']))
				$prop['width']=0;
			if($prop['width']==0)
				$prop['width']=$this->w-$this->lMargin-$this->rMargin;
			if(!isset($prop['align']))
				$prop['align']='C';
			if(!isset($prop['padding']))
				$prop['padding']=$this->cMargin;
			$cMargin=$this->cMargin;
			$this->cMargin=$prop['padding'];
			if(!isset($prop['HeaderColor']))
				$prop['HeaderColor']=array();
			$this->HeaderColor=$prop['HeaderColor'];
			if(!isset($prop['color1']))
				$prop['color1']=array();
			if(!isset($prop['color2']))
				$prop['color2']=array();
			$this->RowColors=array($prop['color1'],$prop['color2']);
			//Calcule les largeurs des colonnes
			$this->CalcWidths($prop['width'],$prop['align']);
			//Imprime l'en-tte
			$this->TableHeader();
			//Imprime les lignes
			$this->SetFont('Arial','',11);
			$this->ColorIndex=0;
			$this->ProcessingTable=true;
			while($row=mysql_fetch_array($res))
				$this->Row($row);
			$this->ProcessingTable=false;
			$this->cMargin=$cMargin;
			$this->aCols=array();
		}
}
?>
Merci d'avance.

beegees