Impossible d'afficher les caractères spéciaux
Résolu/Fermé
Marlocq
-
18 nov. 2013 à 17:26
Marlocq Messages postés 117 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 10 septembre 2023 - 19 nov. 2013 à 15:14
Marlocq Messages postés 117 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 10 septembre 2023 - 19 nov. 2013 à 15:14
A voir également:
- Impossible d'afficher les caractères spéciaux
- Caractères spéciaux clavier azerty - Guide
- Caractere speciaux - Guide
- Caractères ascii - Guide
- Caractères spéciaux mac - Guide
- Afficher mot de passe wifi android - Guide
21 réponses
SlyK
Messages postés
854
Date d'inscription
vendredi 11 mars 2011
Statut
Contributeur sécurité
Dernière intervention
6 octobre 2014
147
19 nov. 2013 à 09:54
19 nov. 2013 à 09:54
Hello,
Est-ce que ta page est aussi encodé en UTF-8 ?
@+
Est-ce que ta page est aussi encodé en UTF-8 ?
@+
Utilisateur anonyme
19 nov. 2013 à 10:13
19 nov. 2013 à 10:13
Bonjour
Ta connexion à la base de données a l'air OK.
Ce problème concerne-t-il seulement les données issues de la base, ou tous les caractères accentués ?
Ta connexion à la base de données a l'air OK.
Ce problème concerne-t-il seulement les données issues de la base, ou tous les caractères accentués ?
Marlocq
Messages postés
117
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
10 septembre 2023
Modifié par Marlocq le 19/11/2013 à 12:20
Modifié par Marlocq le 19/11/2013 à 12:20
Se problème ne concerne que les données traitées par cette requête la.
Voila ce que ça m'affiche :é à è Test des caractères spéciaux
ça c'est la requete de la page de news qui affiche tout comme il faut:
$requete = ' SELECT * FROM mess_gen ORDER BY date DESC LIMIT '.(($cPage-1)*$parPage).','.$parPage.' ';
$resultat = $db_conn->query($requete);
$nb_lig_resultat = $resultat->num_rows;
Voila ce que ça m'affiche :é à è Test des caractères spéciaux
ça c'est la requete de la page de news qui affiche tout comme il faut:
$requete = ' SELECT * FROM mess_gen ORDER BY date DESC LIMIT '.(($cPage-1)*$parPage).','.$parPage.' ';
$resultat = $db_conn->query($requete);
$nb_lig_resultat = $resultat->num_rows;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
19 nov. 2013 à 13:12
19 nov. 2013 à 13:12
Se problème ne concerne que les données traitées par cette requête la
Ça veut dire que quand tu affiches des données à partir d'autres requêtes, tu n'as pas ce problème ? J'ai du mal à y croire.
Ton site est-il en ligne pour qu'on puisse se faire une idée ?
Ou sinon, peux-tu nous montrer le code du <head> de ta page, où on voit que tu travailles en utf8 ?
Ça veut dire que quand tu affiches des données à partir d'autres requêtes, tu n'as pas ce problème ? J'ai du mal à y croire.
Ton site est-il en ligne pour qu'on puisse se faire une idée ?
Ou sinon, peux-tu nous montrer le code du <head> de ta page, où on voit que tu travailles en utf8 ?
Marlocq
Messages postés
117
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
10 septembre 2023
19 nov. 2013 à 13:23
19 nov. 2013 à 13:23
Mon site tourne sur un serveur local...
<head>
<title>Librairie en ligne du centre multimédia Don Bosco</title>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="" name="keywords">
<meta content="" name="author">
<meta content="" name="description">
<link href="css/site.css" type="text/css" rel="stylesheet">
<link href="css/calendrier.css" type="text/css" rel="stylesheet">
<script src="javascript/jquery-1.8.1.min.js" language="Javascript" type="text/javascript">
<script src="javascript/calendrier.js" language="Javascript" type="text/javascript">
<script type="text/javascript">
</head>
<head>
<title>Librairie en ligne du centre multimédia Don Bosco</title>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="" name="keywords">
<meta content="" name="author">
<meta content="" name="description">
<link href="css/site.css" type="text/css" rel="stylesheet">
<link href="css/calendrier.css" type="text/css" rel="stylesheet">
<script src="javascript/jquery-1.8.1.min.js" language="Javascript" type="text/javascript">
<script src="javascript/calendrier.js" language="Javascript" type="text/javascript">
<script type="text/javascript">
</head>
Utilisateur anonyme
19 nov. 2013 à 13:36
19 nov. 2013 à 13:36
Faudrait penser à fermer tes balises <script> avec </script>.
Mais bon, ce n'est pas ce qui explique ton problème.
Tu n'as pas répondu à ma question sur le fait qu'il n'y a vraiment qu'avec cette requête-là que tu as un problème.
Mais bon, ce n'est pas ce qui explique ton problème.
Tu n'as pas répondu à ma question sur le fait qu'il n'y a vraiment qu'avec cette requête-là que tu as un problème.
Marlocq
Messages postés
117
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
10 septembre 2023
Modifié par Marlocq le 19/11/2013 à 13:48
Modifié par Marlocq le 19/11/2013 à 13:48
Ben ceci est la requète de la page de news par exemple
function db_connect() {
$db_connec = new mysqli('localhost','root','alpha','greg_test');
if (mysqli_connect_errno()) {
echo 'Echec de la connection à la base : '.mysqli_connect_error();
exit ();
} else {
return $db_connec;
}
}
$db_conn = db_connect ();
$requete = ' SELECT * FROM mess_gen ORDER BY date DESC LIMIT '.(($cPage-1)*$parPage).','.$parPage.' ';
$resultat = $db_conn->query($requete);
$nb_lig_resultat = $resultat->num_rows;
Et l'autre plus haut qui fait connexion me permet de récupéré les events pour le calendrier (la page qui bug)
function db_connect() {
$db_connec = new mysqli('localhost','root','alpha','greg_test');
if (mysqli_connect_errno()) {
echo 'Echec de la connection à la base : '.mysqli_connect_error();
exit ();
} else {
return $db_connec;
}
}
$db_conn = db_connect ();
$requete = ' SELECT * FROM mess_gen ORDER BY date DESC LIMIT '.(($cPage-1)*$parPage).','.$parPage.' ';
$resultat = $db_conn->query($requete);
$nb_lig_resultat = $resultat->num_rows;
Et l'autre plus haut qui fait connexion me permet de récupéré les events pour le calendrier (la page qui bug)
Utilisateur anonyme
19 nov. 2013 à 13:58
19 nov. 2013 à 13:58
Comment le texte qui s'affiche mal a-t-il été entré dans la base de données ? À partir d'un formulaire que tu as fait ? Avec phpmyadmin ? Ou d'une autre manière ?
Marlocq
Messages postés
117
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
10 septembre 2023
19 nov. 2013 à 14:04
19 nov. 2013 à 14:04
A partir d'un formulaire.
Voila l'insertion:
$h1=stripslashes(trim($_POST['h1']));
$hfin=stripslashes(trim($_POST['hfin']));
$groupe=stripslashes(trim($_POST['groupe']));
$titre="<span class=\"red\">$local</span> <span class=\"blue\">de $h1 à $hfin</span> <span class=\"green\">$nom $prenom</span> groupe: $groupe";
$fac="non";
$db_conn = db_connect ();
$requete = " insert into events (title,date,fac,mail,local,h_deb,h_fin) values ('$titre','$date','$fac','$mail_user','$local','$h1mod','$hfinmod') ";
$resultat = $db_conn->query($requete);
Voila l'insertion:
$h1=stripslashes(trim($_POST['h1']));
$hfin=stripslashes(trim($_POST['hfin']));
$groupe=stripslashes(trim($_POST['groupe']));
$titre="<span class=\"red\">$local</span> <span class=\"blue\">de $h1 à $hfin</span> <span class=\"green\">$nom $prenom</span> groupe: $groupe";
$fac="non";
$db_conn = db_connect ();
$requete = " insert into events (title,date,fac,mail,local,h_deb,h_fin) values ('$titre','$date','$fac','$mail_user','$local','$h1mod','$hfinmod') ";
$resultat = $db_conn->query($requete);
Utilisateur anonyme
19 nov. 2013 à 14:17
19 nov. 2013 à 14:17
Je vois que tu mélanges PDO et mysqli. Je suppose que tu n'en es pas conscient.
Tu dis bien à ta connexion PDO de travailler en utf8, mais ta connexion mysqli, elle, ne contient pas de "SET NAMES utf8". Elle ne marche PAS en utf8.
Tu dis bien à ta connexion PDO de travailler en utf8, mais ta connexion mysqli, elle, ne contient pas de "SET NAMES utf8". Elle ne marche PAS en utf8.
Marlocq
Messages postés
117
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
10 septembre 2023
19 nov. 2013 à 14:22
19 nov. 2013 à 14:22
Oui mais pourtant c'est ma requête pdo qui bug vu que c'est celle que j'utilise sur le calendrier.
Le projet de se site c'est étalé sur 2 ans donc je suis passé au PDO entre temps sans modifier les pages préalablement faite (en mysqli).
Donc pour toi je devrais modifier ma requête mysqli ?
Le projet de se site c'est étalé sur 2 ans donc je suis passé au PDO entre temps sans modifier les pages préalablement faite (en mysqli).
Donc pour toi je devrais modifier ma requête mysqli ?
Utilisateur anonyme
19 nov. 2013 à 14:30
19 nov. 2013 à 14:30
Pas ta requête, ta connexion.
Comme pour PDO, il faut dire à mysqli que tu travailles en utf8. Je viens de jeter un coup d'oeil à la doc, ils déconseillent d'utiliser SET NAMES comme en PDO. Il y a une fonction faite pour :
Comme pour PDO, il faut dire à mysqli que tu travailles en utf8. Je viens de jeter un coup d'oeil à la doc, ils déconseillent d'utiliser SET NAMES comme en PDO. Il y a une fonction faite pour :
function db_connect() {
$db_connec = new mysqli('localhost','root','alpha','greg_test');
if (mysqli_connect_errno()) {
echo 'Echec de la connection à la base : '.mysqli_connect_error();
exit ();
} else {
$db_connec->set_charset("utf8");
return $db_connec;
}
}
Marlocq
Messages postés
117
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
10 septembre 2023
19 nov. 2013 à 14:34
19 nov. 2013 à 14:34
Bon je viens de testé ta requête le résultat est que ça n'affiche plus les caractères avec accent. Le bug viendrait du fait de déclaré l'utf8...
Je ne comprend pas trop pourquoi.
Je ne comprend pas trop pourquoi.
Utilisateur anonyme
19 nov. 2013 à 14:39
19 nov. 2013 à 14:39
Il n'y a pas de raison, l'utf8 marche très bien si tout est fait correctement.
Maintenant, les données qui avaient été mal enregistrées auparavant ne vont pas être 'réparées'.
J'ai quelques questions :
Peux-tu m'expliquer pourquoi ton INSERT se fait dans la table 'events' alors que ton affichage va chercher dans la table mess_gen ? S'agit-il d'une vue ?
Vois-tu les données insérées avec phpmyadmin ? Ont-elles l'air correctes ?
Maintenant, les données qui avaient été mal enregistrées auparavant ne vont pas être 'réparées'.
J'ai quelques questions :
Peux-tu m'expliquer pourquoi ton INSERT se fait dans la table 'events' alors que ton affichage va chercher dans la table mess_gen ? S'agit-il d'une vue ?
Vois-tu les données insérées avec phpmyadmin ? Ont-elles l'air correctes ?
Marlocq
Messages postés
117
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
10 septembre 2023
19 nov. 2013 à 14:41
19 nov. 2013 à 14:41
Ha non je me tais. Le problème venais bien de ma connexion mysqli vu que ça ne déclarait pas le charset avant l'insertion dans la BDD je suppose.
Tu a résolu mon problème merci milles fois à toi.
Tu a résolu mon problème merci milles fois à toi.
Marlocq
Messages postés
117
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
10 septembre 2023
19 nov. 2013 à 14:45
19 nov. 2013 à 14:45
les mess_gen sont pour la table de la page news.
Le truc que je ne comprends pas avec la connexion pdo de mon calendrier c'est comment il sait qu'il doit recherché les info du tableau events alors que rien ne le dit clairement.
En gros pour schématiser
Tableau mess_gen = page de news donc je fais mes requêtes vers ça.
Tableau events = calendrier et la je fais ma requête avec le pdo mais je ne lui dis pas explicitement d'aller dans se tableau mais pourtant ça marche....
Le truc que je ne comprends pas avec la connexion pdo de mon calendrier c'est comment il sait qu'il doit recherché les info du tableau events alors que rien ne le dit clairement.
En gros pour schématiser
Tableau mess_gen = page de news donc je fais mes requêtes vers ça.
Tableau events = calendrier et la je fais ma requête avec le pdo mais je ne lui dis pas explicitement d'aller dans se tableau mais pourtant ça marche....
Utilisateur anonyme
19 nov. 2013 à 14:53
19 nov. 2013 à 14:53
alors que rien ne le dit clairement
Si, si, il y a certainement quelque chose qui le lui dit clairement, aucun doute là-dessus. Mais il faudrait tout le code de la page news, et peut-être des pages incluses, pour te montrer exactement où
Si, si, il y a certainement quelque chose qui le lui dit clairement, aucun doute là-dessus. Mais il faudrait tout le code de la page news, et peut-être des pages incluses, pour te montrer exactement où
Marlocq
Messages postés
117
Date d'inscription
mardi 19 novembre 2013
Statut
Membre
Dernière intervention
10 septembre 2023
Modifié par Marlocq le 19/11/2013 à 15:15
Modifié par Marlocq le 19/11/2013 à 15:15
class Date{
var $days = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi','Dimanche');
var $months = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
function getEvents($year){
global $DB;
$req = $DB->query('SELECT id,title,date,fac FROM events WHERE fac="oui" and YEAR(date)='.$year.' ORDER BY title');
$r = array();
while($d = $req->fetch(PDO::FETCH_OBJ)){
$r[strtotime($d->date)][$d->id] = $d->title;
}
return $r;
}
function getAll($year){
$r = array();
$date = new DateTime($year.'-01-01');
while($date->format('Y') <= $year){
$y = $date->format('Y');
$m = $date->format('n');
$d = $date->format('j');
$w = str_replace('0','7',$date->format('w'));
$r[$y][$m][$d] = $w;
$date->add(new DateInterval('P1D'));
}
return $r;
}
}
La fonction config c'est la connexion PDO
var $days = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi','Dimanche');
var $months = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
function getEvents($year){
global $DB;
$req = $DB->query('SELECT id,title,date,fac FROM events WHERE fac="oui" and YEAR(date)='.$year.' ORDER BY title');
$r = array();
while($d = $req->fetch(PDO::FETCH_OBJ)){
$r[strtotime($d->date)][$d->id] = $d->title;
}
return $r;
}
function getAll($year){
$r = array();
$date = new DateTime($year.'-01-01');
while($date->format('Y') <= $year){
$y = $date->format('Y');
$m = $date->format('n');
$d = $date->format('j');
$w = str_replace('0','7',$date->format('w'));
$r[$y][$m][$d] = $w;
$date->add(new DateInterval('P1D'));
}
return $r;
}
}
La fonction config c'est la connexion PDO
Utilisateur anonyme
19 nov. 2013 à 15:08
19 nov. 2013 à 15:08
Je m'étonne que tu n'aies pas trouvé, il n'y a rien de caché.
La table events apparaît bien au début de la function getEvents de la classe Date. Et dans ton script, on voit bien l'appel à cette fonction.
La table events apparaît bien au début de la function getEvents de la classe Date. Et dans ton script, on voit bien l'appel à cette fonction.