Php problème d'encodage ?
Résolu
lucas
-
lucas -
lucas -
Bonjour,
Voila je suis actuellement en train de travailler sur un projet php avec une bdd phpmyadmin et il se trouve que j'ai un problème lors de l'insertion de données, je vous met le code de ma page entier afin que l'on puisse parler des mêmes lignes sachant que les intéressantes sont à partir de 125 .
Donc mon problème est que lorsque je met des phrases contenant des accents dans $event ma bdd ne les prend pas et je me retrouve avec des caractères du style 'évè'
Je précise que l'interclassement pour ce champ est latin1 sweedish ci et le Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) .
Voila je vous remerci d'avance .
Voila je suis actuellement en train de travailler sur un projet php avec une bdd phpmyadmin et il se trouve que j'ai un problème lors de l'insertion de données, je vous met le code de ma page entier afin que l'on puisse parler des mêmes lignes sachant que les intéressantes sont à partir de 125 .
Donc mon problème est que lorsque je met des phrases contenant des accents dans $event ma bdd ne les prend pas et je me retrouve avec des caractères du style 'évè'
Je précise que l'interclassement pour ce champ est latin1 sweedish ci et le Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) .
Voila je vous remerci d'avance .
<?php session_start();?> <?php include('class.auth.php'); if(empty($_SESSION['Auth'])) // Si l'utilisateur n'est pas connecté. { header('location: forbidden.php'); exit(); } ?> <?php $prenom = $Auth->user('prenom'); $id_user =$Auth->user('id_user'); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>formulaire</title> <link rel="stylesheet" href="theme/menu.css" type="text/css" media="screen" /> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/menu.js"></script> <link rel="stylesheet" type="text/css" href="style.css" /> <tbody> <div id="conteneur"> <ul class="menu menu-1"> <li><a href="logout.php">Sortir</a></li> <li><a href="#">Visualiser</a></li> <li><a href="formulaire.php">Ajouter</a></li> </ul> </div> <!-- Début des différents formulaire permettant la saisie de l'évent, la date et de l'horaire--> <form method="post" action="formulaire.php"> <fieldset title='Ajouter un evenement'> <label for='event'>Entrer votre evenement</label> <input type='text' name='event' /><br> <label for='jour'> Date : </label> <select name="jour"> <option value="#"/>Jour</option> <?php $i=1; while($i<=31) { if($i<10) { $i='0'.$i; } ?> <option value="<?php echo $i;?>"/><?php echo $i?></option> <?php $i++; } ?></select> <select name='mois'> <option value="#"/>Mois</option> <option value="01"/>Janvier</option> <option value="02"/>Fevrier</option> <option value="03"/>Mars</option> <option value="04"/>Avril </option> <option value="05"/>Mail</option> <option value="06"/>Juin</option> <option value="07"/>Juillet</option> <option value="08"/>Aout</option> <option value="09"/>Septembre</option> <option value="10"/>Octobre</option> <option value="11"/>Novembre</option> <option value="12"/>Decembre</option> </select> <?php $annee = date( 'Y'); ?> <select name='annee'> <option value="#"/>Annee</option> <option value="<?php echo $annee;?>"/><?php echo $annee;?></option> <option value="<?php echo $annee+1;?>"/><?php echo $annee+1;?></option> </select><br> <label for='heure'>Horaire de debut : </label> <select name='heure'> <option value="#"/>Heure</option> <?php $h=1; while($h<=24) { if($h<10) { $h='0'.$h; } ?> <option value="<?php echo $h;?>"/><?php echo $h?></option> <?php $h++; } ?> </select> <select name='minute'> <option value="#"/>Min</option> <?php $m=1; while($m<=60) { if($m<10) { $m='0'.$m; } ?> <option value="<?php echo $m;?>"/><?php echo $m?></option> <?php $m++; } ?> </select> <br> <input type ="submit" value="envoyer" name="envoyer" ><br> </form> <!-- Début des différents traitement (collecte, concaténation ...)--> <?php if(isset($_POST["envoyer"])) { $event = $_POST['event']; $jour = $_POST['jour']; $mois = $_POST['mois']; $annee = $_POST['annee']; $heure = $_POST['heure']; $min = $_POST['minute']; $date = $annee.'-'.$mois.'-'.$jour; $horaire = $heure.'H'.$min; $event = $horaire.' - '.$event.' - '.$prenom; ?><br> <!-- Insertion dans la base de donnée--> <?php try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=tuto', 'root', '', $pdo_options); $req = $bdd->prepare('INSERT INTO events (id_event, title, date, id_user) VALUES (\'\',:event, :date, :id_user)'); $req->execute(array( 'event'=>$event, 'date' => $date, 'id_user'=> $id_user )); echo 'l evenement '.$event.' à bien été ajouté'; } catch(exception $e) { die ('erreur : '.$e->getMessage()); } } ?> </fieldset> </tbody> </head> </html>
A voir également:
- Php problème d'encodage ?
- Encodage ascii - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour à la ligne php ✓ - Forum PHP
- Retour a la ligne avec Echo comment faire ? - Forum Webmastering
3 réponses
Bonjour,
Il faut tout d'abord que la page soit encodé en UTF8, le meilleur moyen de le savoir est d'ouvrir le fichier avec notepad++ onglet encodage, sinon les convertir en UTF8.
Ensuite il faut que la bdd soit également en UTF8, pour cela on peut par exemple utiliser cette manip :
Il faut tout d'abord que la page soit encodé en UTF8, le meilleur moyen de le savoir est d'ouvrir le fichier avec notepad++ onglet encodage, sinon les convertir en UTF8.
Ensuite il faut que la bdd soit également en UTF8, pour cela on peut par exemple utiliser cette manip :
$bdd= new PDO('mysql:host=localhost;dbname=test', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
j'alimente un peu mon post, je me suis rendu compte que le véritable problème n'étais pas vraiment comment été stocké les caractères dans la bdd mais plutot la facon de les sortir .
Donc est ce que lorque je fait mon echo je dois mettre la fonction utf8_encode puis decode ? ou autre chose ? afin de rendre lisible mon extraction ?
Donc est ce que lorque je fait mon echo je dois mettre la fonction utf8_encode puis decode ? ou autre chose ? afin de rendre lisible mon extraction ?
J'ai trouvé les réponses à mes questions, donc pour ceux qui aurai le même problème allez faire un tour sur ce sujet http://www.commentcamarche.net/forum/affich-7000255-probleme-utf-8-php-phpmyadmin
j'ai mis au bon format ma table avec les alter table et j'ai utilisé la fonction
utf8_decode($mavariable) .
j'ai mis au bon format ma table avec les alter table et j'ai utilisé la fonction
utf8_decode($mavariable) .
Alors pour répondre à tes questions dans l'ordre :
Page encodé en UTF8 : j'ai cette ligne qui le fait <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
et pour la bdd voila ce qui y est écrit : MySQL
Serveur: localhost (localhost via TCP/IP)
Version du serveur: 5.1.53-community-log
Version du protocole: 10
Utilisateur: root@localhost
Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)
permet de dire que les caractères affichés sont en UTF8, mais si le fichier n'est pas encodé en UTF8 il y aura des problèmes d'affichage.