Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1545 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1657769
ouf
Posté le 13-12-2007 à 15:08:59  profilanswer
 

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
mood
Publicité
Posté le 13-12-2007 à 15:08:59  profilanswer
 

n°1657771
FlorentG
Unité de Masse
Posté le 13-12-2007 à 15:12:08  profilanswer
 

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

n°1657772
ouf
Posté le 13-12-2007 à 15:13:12  profilanswer
 

avec addslashes c'est bon
 

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

n°1657775
FlorentG
Unité de Masse
Posté le 13-12-2007 à 15:16:39  profilanswer
 

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 +

n°1657785
ouf
Posté le 13-12-2007 à 15:24:49  profilanswer
 

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
n°1657803
FlorentG
Unité de Masse
Posté le 13-12-2007 à 15:46:03  profilanswer
 

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]

n°1657804
FlorentG
Unité de Masse
Posté le 13-12-2007 à 15:46:25  profilanswer
 

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

n°1657809
ouf
Posté le 13-12-2007 à 15:54:43  profilanswer
 

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
n°1657818
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-12-2007 à 16:16:53  profilanswer
 

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.

n°1657830
ouf
Posté le 13-12-2007 à 16:31:40  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
[C++] [resolu] Problème de templates[PHP] Limitation vote par IP
String[] : tableau de chaines de caractèresExécution commande, pas de retour [Résolu]
[C] fwrite ajoute des caractères de fin de ligne ...Résolu [Excel] colori selon critère
[RESOLU] checkBox et databinding[PHP] [ RESOLU ] Textarea et javascript \n ou \\n
[Resolu] Probleme de hauteur de tableau 
Plus de sujets relatifs à : [PHP](AJAX) - Pb Caractères spéciaux (apostrophe) ..euh RESOLU en fait


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR