Problème retour chariot


link182
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 478
Inscription: 26 Juil 2005

Problème retour chariot

Message le Jeu Nov 09, 2006 8:53

Bonjour à tous,

j'ai un petit problème avec les retour chariots. J'ai du texte stocké dans un champ d'une table Mysql, ex (notez le retour à la ligne) :

Code: Tout sélectionner
Ceci est un test,
avec retour à la ligne


Quand je recupere cette string en php (string à passer en paramètre dans une fonction JS), cela me donne cela dans le code source :

Code: Tout sélectionner
<a href="..." onclick="javascript:ma_function('Ceci est un test
avec retour à la ligne');


Alors que je voudrais çà :
Code: Tout sélectionner
<a href="..." onclick="javascript:ma_function('Ceci est un test avec retour à la ligne');


Le code JS n'est pas executé car il y va à la ligne après le mot "test", même en utilisant la fonction nl2br()... Quelqu'un à une petite idée (ça doit être un truc tout con mais je n'ai pas trouvé) ?

Merci


:?:


ltressens
WRInaute impliqué
WRInaute impliqué
 
Messages: 551
Inscription: 2 Avr 2004

Message le Jeu Nov 09, 2006 9:18

En remplaçant le retour chariot par un espace :
Code: Tout sélectionner
$texte = strtr($texte, "\n", " ");


Fab le Fou
WRInaute passionné
WRInaute passionné
 
Messages: 1511
Inscription: 2 Déc 2004

Message le Jeu Nov 09, 2006 9:19

Tu peux faire quelque chose comme ça pour traiter le contenu de ton champ :

Code: Tout sélectionner
$tonchamp=str_replace("\r\n"," ",$tonchamp);


Attention, si ce sont des utilisateurs qui saisissent le contenu du champ car là je prend en compte le retour chariot uniquement avec windows.

Saur erreur, il s'agit uniquement de "\r"avec Mac et de "\n" avec linux.

oxman
WRInaute discret
WRInaute discret
 
Messages: 118
Inscription: 21 Juin 2004

Message le Jeu Nov 09, 2006 9:25

$tonchamp=str_replace(array("\r", "\n")," ",$tonchamp);

Sera plus juste =)


serval2a
WRInaute accro
WRInaute accro
 
Messages: 3457
Inscription: 21 Mar 2005

Message le Jeu Nov 09, 2006 9:33

Bonjour,
Il me semble que le \n n'est pas interprété nativement pas php et mysql dès lors tu peux également supprimer la fonction du code qui l'interprète.

oxman
WRInaute discret
WRInaute discret
 
Messages: 118
Inscription: 21 Juin 2004

Message le Jeu Nov 09, 2006 9:38

Je ne vois personnellement pas de quoi tu parles.


serval2a
WRInaute accro
WRInaute accro
 
Messages: 3457
Inscription: 21 Mar 2005

Message le Jeu Nov 09, 2006 9:53

Bonjour,
Je m'explique alors, quand je fais un bête textarea qui envoie des infos vers mysql, si je fais un retour à la ligne dans le texte il est bien affiché ainsi que tel dans la BDD toutefois quand je fais un appel php et un affichage il est collé, pour activer le retour à la ligne dans l'affichage je dois rajouter ereg_replace("\n","<br/>" avant le echo peut-être y a-t-il dans le code de link182 une fonction similaire qu'il suffit alors d'enlever.
Mais bon c'est surement une connerie.
@+

oxman
WRInaute discret
WRInaute discret
 
Messages: 118
Inscription: 21 Juin 2004

Message le Jeu Nov 09, 2006 10:11

Tu mélanges deux choses, les retours à la ligne "textes", et les retours à la ligne "html".

Dans un texte les retours à la ligne sont à base de \n, \r, \r\n selon le système d'exploitation. Mais un retour à la ligne en html est écrit ainsi <br>

Et vu qu'il utilise ça dans du javascript, on parle bien de retours à la ligne "textes" et non de retour à la ligne "html".


serval2a
WRInaute accro
WRInaute accro
 
Messages: 3457
Inscription: 21 Mar 2005

Message le Jeu Nov 09, 2006 10:14

Ok, merci pour la précision. ;)


link182
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 478
Inscription: 26 Juil 2005

Message le Jeu Nov 09, 2006 10:28

merci, ça marche bien pour
Code: Tout sélectionner
$tonchamp=str_replace(array("\r", "\n")," ",$tonchamp);


Par contre pour transformer un " en \", j'ai essayé ceci :
Code: Tout sélectionner
$tonchamp=str_replace("\"", "\\"", ,$tonchamp);


et ça ne semble pas marche, il doit y avoir un problème de double quote quelque part ...

oxman
WRInaute discret
WRInaute discret
 
Messages: 118
Inscription: 21 Juin 2004

Message le Jeu Nov 09, 2006 10:42

Il me semble que c'est plutôt \\\" que \"
Sinon essaye :
$tonchamp=str_replace('"', '\"', ,$tonchamp);


link182
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 478
Inscription: 26 Juil 2005

Message le Jeu Nov 09, 2006 10:55

droit à une belle erreur php... :)


link182
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 478
Inscription: 26 Juil 2005

Message le Ven Nov 10, 2006 12:20

Pas de p'tite idée ?

oxman
WRInaute discret
WRInaute discret
 
Messages: 118
Inscription: 21 Juin 2004

Message le Ven Nov 10, 2006 12:36

$tonchamp=mysql_escape_string($tonchamp);


link182
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 478
Inscription: 26 Juil 2005

Message le Ven Nov 10, 2006 12:57

merci à toi oxman, j'avais déja essayé mais cela ne marche pas.
Pour être plus clair, c'est un système de citation (forum) que j'essaye de faire. quand on clique sur "citer", cela doit copier le texte dans le textarea.

Pour cela j'utilise ma fonction Javascript suivante :

Code: Tout sélectionner
function citation(auteur, texte)
{
   document.repondre_msg.message.value+='[quote="'+auteur+'"]'+texte.replace(/\\n/g,'\n')+'[/quote]\n';
document.repondre_msg.message.focus();
}


J'affiche comme ceci le message venu de ma requete :
Code: Tout sélectionner
echo str_replace(array("\r"),"", str_replace(array("\n"),"\\\\n",($data['message']));


Cela marche bien quand il y un quote, des retour chariots, mais pas des doubles quotes... voila :(

Problème retour chariot

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité