PB d'affichage de certains caractères en Ajax [Résolu/Fermé]

Signaler
-
Messages postés
816
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
-
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;
?>

4 réponses

Messages postés
816
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
175
Salut,
essayes en mettant
$aff.="<option value=\"".utf8_encode($row[libmotif])."\">".utf8_encode($row[libmotif])."</option>";
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 .
Messages postés
816
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
175
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 '
Messages postés
21
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
23 juillet 2009

merci pour tout
je l'ai remarqué aussi.
ça marche maintenant.
encore une fois merci pour ton aide.
Messages postés
816
Date d'inscription
samedi 21 juin 2008
Statut
Membre
Dernière intervention
17 juillet 2012
175
Mais de rien :)