PB d'affichage de certains caractères en Ajax

Résolu/Fermé
donluxes - 22 juil. 2009 à 20:18
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 - 23 juil. 2009 à 11:20
Bonsoir a tous,
mon problème est le suivant j'ai un script ajax qui me permet de lire des données d'un select et m'affiche m'afiche les informations concenant l'élément sélectionant dans un autre select.
le script marche bien sans bug.
seulement qu'a l'affichage du second select les caratères particulières tels que (é,à,çè....etc) ne s'affiche pas pour chaque éléments de mon select...
j'aimerais savoir a quoi cela est il du... et si quelqu'un peut m'aider
merci

voila le script de mes deux fichiers

le fichier de test
<html>
<head>
<!-- Script de liste deroulante avec appel par AJAX, (evite le rechargement de la page) -->
<script language="Javascript"type="text/JavaScript">
// Requette AJAX
function makeRequest(url,id_lire,id_ecrire){
var http_request = false;
//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}

if (!http_request) {
alert('Abandon :( Impossible de créer une instance XMLHTTP');
return false;
}
http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
// lancement de la requete
http_request.open('POST', url, true);
//changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'....
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// lecture valeur saisie
obj=document.getElementById(id_lire);
data="val_saisie="+obj.value;
//envoie de la valeur au script php
http_request.send(data);
}

function traitementReponse(http_request,id_ecrire) {
var affich="";
if (http_request.readyState == 4) {
if (http_request.status == 200) {
// cas avec reponse de PHP en mode texte:
//chargement des elements reçus dans la liste
var affich_list=http_request.responseText;
obj = document.getElementById(id_ecrire);
//on ecrit la liste dans le div correspondant
obj.innerHTML = affich_list;
}
else {
alert('Un problème est survenu avec la requête.');
}
}
}
</script>
</head>

<body>
<form name="test1" method="post" action="la_suite.php" >
<div id="id_recherche">Rechercher:<br>
<?php
require_once("connexion.class.php");
echo "<select name='saisie_recherche' id='saisie_recherche' size='1' onChange=\"makeRequest('rep_PhpAjax.php','saisie_recherche','id_liste')\">";
$unConnexion= new Connexion('localhost', 'bbcom', 'bbcom', 'gcc');
$i=$unConnexion->connect_server();
$i2=$unConnexion->connect_db($i);
if($i2){
error_reporting(E_ALL ^ E_NOTICE);
$mysql_result = mysql_query("SELECT DISTINCT naturemotif FROM motif");
while($row = mysql_fetch_object($mysql_result)){
echo "<option value='$row->naturemotif'>$row->naturemotif</option>";
}
}
echo"</select>";
?>
<!--<input type="texte" name="saisie_recherche" id="saisie_recherche" value="" />-->
<!--<input type="button" name="rechercher" value="Voir" onClick="makeRequest('rep_PhpAjax.php','saisie_recherche','id_liste')"/>-->
<!-- on appelle la fonction Ajax en lui passant les arguments: script a appeler, où lire, où ecrire -->

</div>
<div id="id_liste">
<!-- ici sera charge la reponse mode texte de PHP à la request AJAX -->
</div>
</form>
</body>
</html>







//////le second fichier qui retourne le résultat


<?php
// script PHP interrogation Base de donnees pour reponse a la requette AJAX
//include ("config.php");//donnees de connexion host, login, password, nom de la table ($Table), nom du champ concerné ($champ)
//recup de la valeur passée lors de l'appel de ce script par Ajax:
$valeur_saisie=$_POST['val_saisie'];
// Connexion a la base de donnees
$host="localhost";
$Login="bbcom";
$Pass="bbcom";
$DB="gcc";
$AccesBase = mysql_connect($host,$Login,$Pass);
mysql_select_db($DB,$AccesBase);
//requette
$QuestionBase = "SELECT libmotif FROM motif WHERE naturemotif= '".$valeur_saisie."' " ;
$result_recherche=mysql_db_query($DB, $QuestionBase) or die (mysql_error());

// construction de la liste deroulante
$aff="";
$aff=$aff."Libelle:<br>
<select name='niv1' id='cont_liste' >";
while ($row=mysql_fetch_assoc($result_recherche)){
$aff.="<option value=\"$row[libmotif]\">$row[libmotif]</option>"; //a adapter
}
$aff=$aff."</select><br><br>";
// envoi reponse Php a Ajax
echo $aff;
?>
A voir également:

4 réponses

jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
22 juil. 2009 à 20:21
Salut,
essayes en mettant
$aff.="<option value=\"".utf8_encode($row[libmotif])."\">".utf8_encode($row[libmotif])."</option>";
0
merci pour ton aide
j'ai essayer ton code
$aff.="<option value=\"".utf8_encode($row[libmotif])."\">".utf8_encode($row[libmotif])."</option>";
ça m'affiche correctement mes caractères (é,à,ç,è....etc) dans mon second select mais parcontre j'ai beaucoup de messages qui apparaissent juste avant l'affichage du résultat.
des messages de ce type.


Notice: Use of undefined constant libmotif - assumed 'libmotif' in C:\wamp\www\Mes tests\backup\rep_PhpAjax.php on line 24
j'ai essayer de passer $row[libmotif] dans une variable avant de le passer en parramètre a utf8_encode mais j'ai toujours le meme message qui s'affiche.

j'ai essayer aussi d'enlever certains /" que j'ai remplacer par ' mais sans résultat.
je ne sais pas si tu peux m'aider a résoudre ce problème.

encore merci .
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
23 juil. 2009 à 10:56
Heu le problème vient pas du fait que tu n'as pas mis de ' autour de ton libmotif ?

$row['libmotif']

avant ca passait parce que tout était entre " dans le même echo, là ca ne doit plus passer, donc faut rajouter les '
0
donluxes Messages postés 21 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 23 juillet 2009
23 juil. 2009 à 11:16
merci pour tout
je l'ai remarqué aussi.
ça marche maintenant.
encore une fois merci pour ton aide.
0
jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 185
23 juil. 2009 à 11:20
Mais de rien :)
0