Caractère "&"

Résolu
Signaler
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010
-
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010
-
Bonjour,

J'arrive à récupérer correctement les caractère avec accents comme é è à , etc... Mais je n'arrive pas à récupérer le caractère "et commercial" -> &. Si je tape "titi & toto", cela va juste prendre "titi".
Une solution ?
Merci.

24 réponses

Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

J'ai trouvé !

Pour enregistrer dans la BDD :
rawurlencode($variable);

Pour afficher l'enregistrement de la BDD :
rawurldecode($variable);

Si on veut afficher des caractères avec accent comme "é" :
htmlentities(rawurldecode($variable), ENT_COMPAT);

Grâce à ces fonctions, on peut enregistrer des caractères spéciaux et à accents dans une BDD et les afficher correctement.
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

Plus simple :

Pour la transition des données ajax :
obj.send("id="+id+"&title="+escape(title)+"&comment="+escape(comment));

Pour la reception des données en Php :
Suivant le charset, il faut utiliser htmlentities($variable);

Cela permet d'avoir tout les accents et caractères comme : & é à è ï î $ % ù * / @ £ ¤

En espérant que cela aidera quelques uns.
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

salut, essaie d'utiliser &
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

J'ai du mal m'exprimer.
c'est quand je tape "&" dans un input que le problème apparait.
Si je tape "&" dans la page php, cela m'affiche bien un "&".
Messages postés
337
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
4 janvier 2011

salut, c'est a quel endroit que tu arrive pas a le récupérer? dans ta base? dans un xml? dans un html?

Sans plus de précision on pas pas faire mieux que ce que te dis krolenain
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

Désolé.


Si je tape Num&riser, cela ecrit Num dans la table.


Merci.
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

Ps : c'est une table de BDD MySql.
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

Ah je crois avoir compris, tu dois passer ta variable en GET, et le & dans un GET indique qu'il y a une autre variable après. Passe tes variables en post si c'est possible
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

Ah ok !!!!!
Je vais tester
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

Marche pas, c'était déjà en "post".

Peut être que cela vient de l'envoi des données de ma fonction ajax ? :

obj.send("id="+id+"&title="+title+"&comment="+comment);
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

ah ben oui c'est ca, (c'est quand meme du Get ).
hmmm, j'ai jamais eu le prob devant moi pour ca, essaie de remplacer le & par sa valeur en ascii par exemple, et tu remet comme il faut dans ton traitement en php
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

c'est bien 38 le code ascii pour "&" ?
Je ne vois pas comment l'insérer dans le code
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

alors le seul probleme c'est qu'il faut bien que tu remplaces par une chaine de char que tu n'auras aucune chance de retrouver dans un autre cas, histoire que t'ai pas des & partout si un mec tappe 3838 dans l'input.

Après pour le remplacement, intéresse toi à la méthode "replace" de javascript
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

ben, je vois pas :

var nouv = 38;
var anc = "&";
var et = anc.replace("&", nouv);

obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
obj.send("id="+id+et+"title="+title+et+"folder="+folder);
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

Comme ça non plus

var nouv = 38;
var anc = "&";
var et = replace(anc, nouv);

obj.send("id="+id+et+"title="+title+et+"folder="+folder);
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

nan ca va plutot etre un truc comme ca:
var comment = tontexte en paramètre.
comment.replace('&',38)
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

maintenant, je peux enregistrer mais si je tape

num&riser envoi num38riser
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

bon va falloir que tu cherches un peu par toi meme aussi, faut que tu refasses un replace derriere de on 38 en & dans ta page de traitement php
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

t'inquiete pas, je cherche aussi de mon coté.
Le problème si je fais un replace, c'est que si je veut enregistrer "numéro28", cela va m'afficher "numéro&".
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

C'est exactement ce que je t'ai dit avant, il faut tu prévois de remplacer ton & par une chaine de caractère que tu sera sur de ne pas retrouver dans ton input. Par exemple par 'asc38'