[PHP](AJAX) - Pb Caractères spéciaux (apostrophe) ..euh RESOLU en fait

..euh RESOLU en fait [PHP] (AJAX) - Pb Caractères spéciaux (apostrophe) - PHP - Programmation

Marsh Posté le 13-12-2007 à 15:08:59    

hello all
 
petit souci ...
 
je génère une liste de valeurs via ajax
certaines de ces valeurs contiennent un apostrophe
 

$liste += "<option value=\"".$myrow['id']."\">".htmlentities(str_replace('\'',' ',$myrow['name']))."</option>";


ça ça marche, mais moi je ne veux pas un espace, je veux mon apostrophe...
 
avec &rsquo; ou &#39; ça ne fonctionne pas
 
une petite idée ?


Message édité par ouf le 13-12-2007 à 15:15:26
Reply

Marsh Posté le 13-12-2007 à 15:08:59   

Reply

Marsh Posté le 13-12-2007 à 15:12:08    

Y'a un gros mix de tout incompréhensible là [:pingouino]

Reply

Marsh Posté le 13-12-2007 à 15:13:12    

avec addslashes c'est bon
 

$liste += "<option value=\"".$myrow['id']."\">".htmlentities(addslashes($myrow['name']))."</option>";

Reply

Marsh Posté le 13-12-2007 à 15:16:39    

Non, c'est pas bon. addslashes, ça sert à rien, t'aura des anti-slashs qui vont s'afficher.
 
Et d'où sort le $liste += ? [:pingouino]. Pourquoi un +

Reply

Marsh Posté le 13-12-2007 à 15:24:49    

t'énerves pas
 
c'est de l'ajax qui génère ma liste comme je l'ai dit
 
aucun intérêt de balancer ici l'intégralité de mon code...
 
m'enfin si tu y tiens
 

<?php
 
(euh j'vais pas balancer les infos de connexion à ma base, mais j'me connecte ici hein ;) )
 
$strSource = "SELECT distinct id, name from table";
 
$res = mysql_query($strSource) or die("<br /><br />".$strSource."<br /><br />".mysql_error());
 
$liste = "<select name=\"liste\">";
if ($myrow = mysql_fetch_array($res)) {
 do {
  $liste += "<option id=\"liste\" name=\"liste\" value=\"".$myrow['id']."\">".htmlentities(addslashes($myrow['name']))."</option>";
 } while ($myrow = mysql_fetch_array($res));
}
 
$liste += "</select>";
 
echo "document.getElementById('tdconteneur').innerHTML='".$liste."';";
 
?>


 
htmlentities me permet de conserver les caractères spéciaux genre ïéàû
et avec addslashes je résoud mon pb d'apostrophes...   [:spamafote]


Message édité par ouf le 13-12-2007 à 15:29:12
Reply

Marsh Posté le 13-12-2007 à 15:46:03    

Allège déjà un peu ton code.
 
Au lieu d'écrire

Code :
  1. $liste = "<select name=\"liste\">";


Ecrit :

Code :
  1. $liste = '<select name="liste">';


 
Le $liste += ne devrait pas fonctionner, c'est .= pour concaténer [:petrus dei]

Reply

Marsh Posté le 13-12-2007 à 15:46:25    

Sinon effectivement, il manquait le fait de savoir que ça allait dans un innerHTML :jap:

Reply

Marsh Posté le 13-12-2007 à 15:54:43    

ok pour le concat, c'est vrai, et c'est logique, mais pourtant += fonctionne...
et malheureusement, si j'omet les antislashes autour des name, id ou autre...  bin rien ne fonctionne...

 


j'aurais une config spéciale ? (apache 2.2, php5, mysql5)

Message cité 1 fois
Message édité par ouf le 13-12-2007 à 15:57:54
Reply

Marsh Posté le 13-12-2007 à 16:16:53    

ouf a écrit :

ok pour le concat, c'est vrai, et c'est logique, mais pourtant += fonctionne...
et malheureusement, si j'omet les antislashes autour des name, id ou autre...  bin rien ne fonctionne...  
j'aurais une config spéciale ? (apache 2.2, php5, mysql5)


non c'est cette ligne qui fout la merde:

Code :
  1. echo "document.getElementById('tdconteneur').innerHTML='".$liste."';";


si tu ne backslashes pas tes quotes, tu te retrouves avec une instruction javascript incorrecte, genre:

Code :
  1. document.getElementById('tdconteneur').innerHTML='to'to';


qui plante logiquement.
 
Accèssoirement, vu la gueule du code, j'emets un violent doute sur le fait que ça soit de l'ajax.

Reply

Marsh Posté le 13-12-2007 à 16:31:40    

et pourtant...

 

le javascript appelant l'ajax :

 


function obj_XHR() {
 var xhr_object = null;
 if(window.XMLHttpRequest) {
  xhr_object = new XMLHttpRequest();
 }
 else {
  if (window.ActiveXObject) {
   xhr_object = new ActiveXObject("Microsoft.XMLHTTP" );
  }
  else {
   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  }
 }
 return xhr_object;
}

 

function makeliste() {
        XHR=obj_XHR();
 if (XHR) {
  url = "makeliste.php";    (dont le contenu se trouve qques posts + haut)
  XHR.open("GET", url, false);
  XHR.send(null);
  if (XHR.readyState == 4) {
   eval(XHR.responseText);
  }
 }
}

 

faut bien que j'fasse un echo ou un print de l'instruction js qui change l'innerhtml, non ?
[:spamafote]

 

addslashes me sauve

 

donc voilà, quoi    => RESOLU


Message édité par ouf le 13-12-2007 à 16:56:29
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed