Problème d'encodage UTF-8 entre PHP et BDD

Fermé
simondu43 Messages postés 8 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 18 octobre 2012 - Modifié par simondu43 le 4/02/2011 à 14:08
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 - 4 févr. 2011 à 15:23
Bonjour,

Je dispose d'une base de données créée avec Postgresql, et encodée en UTF-8.
Via du PHP, je souhaite insérer des données dans cette base.

Cependant, lorsque je souhaite insérer des données comportant des apostrophes, cela ne fonctionne pas, j'obtiens une erreur portant sur l'insertion des données dans la base. Tout se déroule bien avec les accents, seules les apostrophes bloquent !

Je suis bien en UTF8 dans ma base, et le charset du code HTML l'est également.
Comment résoudre ce problème ?

Merci par avance.
Simon

Voici les codes que j'utilise :

Page 1 :

<?php 
session_start();   
if (!isset($_SESSION['pseudo_prof']))   
{   
 //$_SESSION['login'] n'existe pas le visteur est envoyer sur la page de login 
header('Location: index.php'); 
exit(); 
} 
?> 

<!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> 

<title>Adressage et Routage</title> 

<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" /> 

<link rel="stylesheet" href="images/Colourise.css" type="text/css" /> 

</head> 

<body> 
<div id="wrap"> 

 <!--header --> 

 <div id="header">  
<br/> 
<br/>  
<br/> 
<br/> 
<br/> 
<font size=3> Veuillez remplir le formulaire suivant pour ajouter une question à choix multiples : </font> 
<br/> 
<form id="form1" name="form1" method="post" action="ajout_question_donnees.php"> 
  <p> 
   <label>Rentrez votre question : </label> 
    <label for="Titre"></label> 
    <input name="Titre" type="text" id="Titre" maxlength="300"/> 
  </p> 

  <p> 
     <label>Rentrez votre réponse JUSTE : </label> 
     <input name="rep_juste" type="text" id="rep_juste" maxlength="300"/> 
   <label>Rentrez votre réponse FAUSSE n°1 : </label> 
     <input name="rep_fausse1" type="text" id="rep_fausse1" maxlength="300"/> 
   <label>Rentrez votre réponse FAUSSE n°2 : </label> 
     <input name="rep_fausse2" type="text" id="rep_fausse2" maxlength="300"/> 
   <label>Rentrez votre réponse FAUSSE n°3 : </label> 
     <input name="rep_fausse3" type="text" id="rep_fausse3" maxlength="300"/> 
   
        <input type="submit" name="Valider" id="Valider" value="Envoyer"> 
      </p> 
      </form> 
      <a href="administration.php">Retour</a> 
    <BR/><BR/><BR/> 
   </div>  

  
<div  id="nav">    

   <ul> 

    <li id="current"><a href="index.php">Accueil</a></li> 

    <li><a href="choix.php">Compte</a></li> 

    <li><a href="cours.php">Accès Cours</a></li> 

    <li><a href="quiz.php">Accès Quiz</a></li> 

    <li><a href="stats.php">Statistiques</a></li> 
                 
                <li><a href="administration.php">Administration</a></li> 
                 
                <li><a href="deconnexion.php">Déconnexion</a></li> 


   </ul>   

  </div>   

</body> 
</html> 



Page 2 :

<?php 
session_start();   
if (!isset($_SESSION['pseudo_prof']))   
{   
 //$_SESSION['login'] n'existe pas le visteur est envoyer sur la page de login 
header('Location: index.php'); 
exit(); 
} 
?> 


<?php include('fct_con.php'); 
?> 


<?php 
     
 $titre  = $_POST['Titre'] ; 
 $rep_juste = $_POST['rep_juste']; 
 $rep_fausse1 = $_POST['rep_fausse1']; 
 $rep_fausse2 = $_POST['rep_fausse2']; 
 $rep_fausse3 = $_POST['rep_fausse3']; 
  
  
 $query2 = "INSERT INTO questions (intitule_question) VALUES ('".$titre."')"; 
    $result2 = pg_query($query2) or die(); 
  
 $query3 = "INSERT INTO reponses (intitule_reponse) VALUES ('".$rep_juste."')"; 
    $result3 = pg_query($query3) or die(); 
  
 $query4 = "INSERT INTO reponses_fausses (intitule_reponse_fausse) VALUES ('".$rep_fausse1."')"; 
    $result4 = pg_query($query4) or die(); 
 $query5 = "INSERT INTO reponses_fausses (intitule_reponse_fausse) VALUES ('".$rep_fausse1."')"; 
    $result5 = pg_query($query5) or die(); 
 $query6 = "INSERT INTO reponses_fausses (intitule_reponse_fausse) VALUES ('".$rep_fausse2."')"; 
    $result6 = pg_query($query6) or die(); 
 $query7 = "INSERT INTO reponses_fausses (intitule_reponse_fausse) VALUES ('".$rep_fausse3."')"; 
    $result7 = pg_query($query7) or die(); 
  
 header("Location: administration.php") ; 

?> 
A voir également:

1 réponse

Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
4 févr. 2011 à 15:23
Bonjour,
Tu peux utiliser addslashes ou faire ceci :
$sql="INSERT INTO table (commentaire) VALUES (\"$commentaire\");

Code trouvé la :
https://forums.commentcamarche.net/forum/affich-401440-insertion-d-apostrophe-dans-mysql-pas-bien
0