Je suis confrontée à un problème décrit moulte fois sur les forums mais pourtant je ne trouve pas de solution pour moi.
J'ai des losanges-point d'interrogation à la place de mes accents sur les éléments récupérés de ma base de donnée et / ou carrément des variables qui contiennent des accents qui ne s'affichent pas.
Je gère ma base de donnée avec Sequel Pro. Il me semble que tout est correct, encodé en utf-8- unicode, et collation : utf-8_general_ci. Les champs sont en utf-8. Les pages sont enregistrées en utf-8, et déclarées en utf-8.
J'ai lu que placer : mysql_query("SET NAMES UTF8"); règlait souvent le problème, mais je n'arrive pas à le mettre.
Erreur :
Warning: mysql_query(): Access denied for user 'root'@'localhost' (using password: NO) in /home/httpd/vhosts on line 47 Warning: mysql_query(): A link to the server could not be established in /home/httpd/vhosts/ on line 47
Voici mon code :
Un GRAND merci pour vos lumières.
Code : Tout sélectionner
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<link rel="stylesheet" type="text/css" href="../../css/style.css" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
(....)
<?php
ini_set('default_charset', 'UTF-8');
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=****;dbname=****_ch', '*****_ch', '$******');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT * from T_MEMBRES order by Prenom asc');
//Affichage de la liste des membres
while ($donnees = $reponse->fetch())
{
print("
<a class=\"liste\" href=\"editMembres.php?id=".$donnees['id']."\">
".$donnees['Prenom']." ".nl2br(htmlentities($donnees['Nom']))."
</a>
");
}
$reponse->closeCursor();
?>
(...)
<?php
if(!isset($_GET['id']))
{
(...)
}
else
{
function nettoyerChaine($chaine)
{
$caracteres = array(
'À' => 'a', 'Á' => 'a', 'Â' => 'a', 'Ä' => 'a', 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ä' => 'a', '@' => 'a',
'È' => 'e', 'É' => 'e', 'Ê' => 'e', 'Ë' => 'e', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', '€' => 'e',
'Ì' => 'i', 'Í' => 'i', 'Î' => 'i', 'Ï' => 'i', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i',
'Ò' => 'o', 'Ó' => 'o', 'Ô' => 'o', 'Ö' => 'o', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'ö' => 'o',
'Ù' => 'u', 'Ú' => 'u', 'Û' => 'u', 'Ü' => 'u', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'µ' => 'u',
'Œ' => 'oe', 'œ' => 'oe', 'ë' => 'e',
'$' => 's');
$chaine = strtr($chaine, $caracteres);
$chaine = preg_replace('#[^A-Za-z0-9]+#', '-', $chaine);
$chaine = trim($chaine, '-');
$chaine = mb_strtolower($chaine);
return $chaine;
}
// récupération des données de la table
$reponse = $bdd->query('SELECT * FROM T_MEMBRES WHERE id='.$_GET['id'].'');
while ($donnees = $reponse->fetch())
{
$debutnom = substr($donnees['Nom'], 0, 3);
$debutprenom = substr($donnees['Prenom'], 0, 3);
$nomphoto = $debutnom . $debutprenom ;
$nomphoto = nettoyerChaine($nomphoto);
$nomphoto = $nomphoto . ".jpg";
// photos et informations générales
print("
<h1>".$donnees['Prenom']."</h1>
(...)