Je suis débutant en php, mysql.
Je travaille sous windows7, avec phpmyadmin pour la base de données, (php 5.3.10)
J'ai une petite base de données que j'ai créée sous phpmyadmin avec interclassement utf8_general_ci
J'ai créé plusieurs tables dont une, tx_organisme avec 2 champs :
- id , la clé, auto-incrémentée
- lib, TEXT, utf8_general_ci
J'ai rempli (par phpmyadmin) la table tx_organisme avec 2 enregistrements comportant des caractères accentués :
1 Conseil Général
2 Conseil Régional

Quand je lis la table par le programme pagesupadm21.php, j'obtiens : des losanges avec point d'exclamation à l'intérieur à la place des 'é', ce qui n'est pas beau, ni très compléhensible.

Je viens de lire le tuto "Passez à l'UTF-8 sans manquer une étape". Je pense avoir fait tout ce qui y est stipulé… et pourtant !

Voici le code de pagesupadm21.php :
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
<?php
session_start();
?>
 
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<link rel="stylesheet" href= "page1.css"/>
        <title>Màj d'une table</title>
 
    </head>
    <body>
	<h1>Super administrateur <?php 	echo $_SESSION['pseudo'];?> </h1>
		</br>
		</br>
		</br>
		<?php
		//il faut se connecter à la base zz_sc sur localhost
		try
		{ 
			$bdd = new PDO('mysql:host=localhost;dbname=zz_sc' , 'root' , '');
			$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
			mysql_set_charset('utf8');
		}
		catch(PDOException $e)
		{ 		// si erreur, affichage du message et tout s'arrête
			die('Erreur : '. $e->getMessage());
				//sinon, on continue
		}//
		$table = $_POST['choix'];     // la table est sélectionnée sur une autre page
		$_GET['table'] = $table;
		//echo $table;
 
		// j'ai le nom de la table. Il faut faire autant de recherches que de table pour avoir les enregistrements.
		mb_internal_encoding("UTF-8");
		//echo mb_internal_encoding();   // on vérifie qu'on est bien en utf8
		switch ($table)
		{
			case "tx_charge_logt":
				$req = $bdd->query('SELECT * FROM tx_charge_logte');
				break;
			case "tx_ch_mens_horslogt":
				$req = $bdd->query('SELECT * FROM tx_ch_mens_horslogt');
				break;
			case "tx_credit":
				$req = $bdd->query('SELECT * FROM tx_credit');
				break;
			case "tx_dette":
				$req = $bdd->query('SELECT * FROM tx_dette');
				break;
			case "tx_logement":
				$req = $bdd->query('SELECT * FROM tx_logement');
				break;
			case "tx_nivo_scol":
				$req = $bdd->query('SELECT * FROM tx_nivo_scol');
				break;
			case "tx_organisme":
				$req = $bdd->query('SELECT * FROM tx_organisme');
				break;
			case "tx_orientation":
				$req = $bdd->query('SELECT * FROM tx_orientation');
				break;
			case "tx_ori_dmde":
				$req = $bdd->query('SELECT * FROM tx_ori_dmde');
				break;
			case "tx_pays":
				$req = $bdd->query('SELECT * FROM tx_pays');
				break;
			case "tx_personne":
				$req = $bdd->query('SELECT * FROM tx_personne');
				break;
			case "tx_reponse":
				$req = $bdd->query('SELECT * FROM tx_reponse');
				break;
			case "tx_ressource":
				$req = $bdd->query('SELECT * FROM tx_ressource');
				break;
			case "tx_stt_etranger":
				$req = $bdd->query('SELECT * FROM tx_stt_etranger');
				break;
			case "tx_stt_marital":
				$req = $bdd->query('SELECT * FROM tx_stt_marital');
				break;
			case "tx_stt_prof":
				$req = $bdd->query('SELECT * FROM tx_stt_prof');
				break;
			case "tx_visite":
				$req = $bdd->query('SELECT * FROM tx_visite');
				break;
			default:
				echo "Cette table n'existe pas";
		}		
 
		while($donnees = $req->fetch())
		{
			echo $donnees['id'] . "    " .$donnees['lib'] .  '</br>';	
		}
		?>
 
 
	</body>
</html>