Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/02/2011, 21h44   #1
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
Par défaut function replace et erreur avec retour a la ligne

Bojour,

J'utilise la fonction suivante pour recuperer des commentaires


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$sql6 = "SELECT commentaire FROM bdd where lien_id=".$result["id"]."";
$requete6 = mysql_query( $sql6, $links ) or die;
 
$table6 = array();
while ($row6 = mysql_fetch_array($requete6)){
 
array_push($table6,$row6);
}
 
$commentaire = array();
$total_table6 = count($table6);
for ($i=0; $i < $total_table6; $i++)
{
	$commentaire[]= $table6[$i]['commentaire'];
}
$sumcom = implode(",", $commentaire);
Puis le affiche dans une div avec la fonction


Code :
1
2
3
4
5
6
7
<script language="javascript">
 function replace(obj,text)
{
  var el = document.getElementById(obj);
  el.innerHTML =  text;
 }
</script>
Code :
1
2
3
<a href ="#" onclick="replace('zone_news',''.$sumcom.'')" >Lire </a>
 
<div  id="zone_news"></div
>

Le commentaire s'affiche bien dans la DIV sauf si l'utilisateur a fait un retour a la ligne (enter) lorsqu'il a ecrit son commentaire.
Comment faire que cela ne pose pas de probleme a la fonction replace?

Merci
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 22h37   #2
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Si tu veux que les sauts de ligne soient convertis en <br />, il existe la fonction PHP nl2br().
Code php :
$commentaire[]= nl2br($table6[$i]['commentaire']);

Edit:

La ligne ci-dessous est erronée.
Code :
<a href ="#" onclick="replace('zone_news',''.$sumcom.'')" >Lire </a>
Essaie ceci...
Code :
<a href="#" onclick="replace('zone_news','<?php echo rawurlencode($sumcom); ?>')">Lire</a>
Et dans la fonction replace()...
Code :
el.innerHTML=unescape(text);
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 22h59   #3
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
En fait ce serait plus de supprimer les espace qui ne semble pas etre accepte avec ma fuonction JS.

Avec
Code :
$commentaire[]= nl2br($table6[$i]['commentaire']);
j'ai le message

Message: Unterminated string constant
Line: 536
Char: 176
Code: 0

en fait il me met un <br /> a la fin de ma ligne mais ce n'est pas cela qu'il faudrait mais plutot ne plus avoir aucun retour a la ligne ou mieu
que function replace accepter les retour a la ligne pour garder la meme presentation que ce que l'utilisateur a ecrit
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 23h14   #4
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
Excuse moi j'avais pas vu la fin du message

Je suis dans un tableau,

Code :
echo '<a href="#" class="Style7"  onclick="replace(\'zone_news\',\'rawurlencode('.$sumcom.');\')">Lire</a></td></tr>
Cela ne fonctionne toujours pas encore le meme message
Message: Unterminated string constant
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 23h40   #5
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
rawurlencode() est une fonction PHP...

Code :
echo '<a href="#" class="Style7" onclick="replace(\'zone_news\',\''.rawurlencode($sumcom).'\')">Lire</a></td></tr>';
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 23h47   #6
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
Merci beaucoup Eric2a, Maintenant ca fonctionne bien! sauf que je recupere du texte avec des carractere ascci

Code :
la restauration rapide n\'est pas considérée comme un exemple à suivre mais dans ce \"resto\" la propreté est
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 23h58   #7
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Problême de charset...

Quel encodage utilises-tu pour la page XHTML et la base de données ? (ISO-88559-1, UTF-8, ...)
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 00h05   #8
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
Code :
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
et UFT-8 aussi pour la BDD
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 12h53   #9
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Je ne comprends pas pourquoi.

Et avec la fonction htmlspecialchars() ?
Code php :
1
2
3
4
5
6
7
8
for ($i=0; $i < $total_table6; $i++){
	$commentaire[]=trim($table6[$i]['commentaire']);
}
$sumcom=nl2br(htmlspecialchars(implode(',',$commentaire),ENT_QUOTES));
 
//
 
echo '<a href="#" class="Style7" onclick="replace(\'zone_news\',\''.$sumcom.'\')">Lire</a></td></tr>';
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 13h03   #10
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 805
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 805
Points : 35 807
Points : 35 807
Citation:
Envoyé par voyageurdumonde Voir le message
Code :
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
et UFT-8 aussi pour la BDD
Et le fichier php ?
Voir : Passez à l'UTF-8 sans manquer une étape
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 01h39   #11
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
salut, Oui Eric2a, avec ce code les caracteres sont OK mais je retrouve le probleme du debut avec le fait que si j'ai un retour a la ligne entregistre dans ma BDD <br> ca plante la fonction remplace.

Si je place
Code :
header( 'content-type: text/html; charset=utf-8' );
en debut de code PHP ca ne change rien


voici comment la variable $sumcom est ecrit Gilles%20le%20g%C3%A9rant avant d'etre envoye a la function replace et le resultat a l'ecran donne: Gilles le gérant.

Il doit bien exister une solution?
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 18h39   #12
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
Peut-on recupere directement la variable avec innerHTML
?
Style
Code :
1
2
3
4
5
6
7
<script language="javascript">
 function replace(obj,text)
{
  var el = document.getElementById(obj);
  el.innerHTML=decodeURIComponent("<?=rawurlencode($touslescommentaires). ?>");
 }
</script>
Merci
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 18h44   #13
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
pourquoi redefinir la fonction replace qui est native en js ???
Code :
 function replace(obj,text)
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 18h58   #14
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
salut, J'ai un probleme d'encodage avec le resultat que me renvoi function replace comme decrit dans le message precedent et je cherche comment faire pour solutionner cela
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 20h53   #15
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Tente à nouveau en placant après le code ci-dessous :
Code php :
1
2
3
for ($i=0; $i < $total_table6; $i++){
	$commentaire[]=trim($table6[$i]['commentaire']);
}
Soit la version avec htmlspecialchars() que je te recommande pour une raison évidente de sécurité...
Code php :
$sumcom=nl2br(htmlspecialchars(implode(',',$commentaire),ENT_QUOTES,'UTF-8'));
Soit la version avec rawurlencode() - juste pour montrer qu'il fallait utiliser utf8_decode()... -
Code php :
$sumcom=rawurlencode(utf8_decode(nl2br($sumcom)));

Immédiatement suivi de
Code php :
$sumcom=str_replace(array("\r","\n"),'',$sumcom);
pour supprimer tout sauts de ligne dans la chaine.


Ensuite, SpaceFrog a raison (comme d'hab.) : Il est préférable de renommer la fonction.

Cette dernière peut effectivement contenir le contenu de la variable.

Code js :
1
2
3
4
function comReplace(obj){
	var el=document.getElementById(obj);
	if(obj)el.innerHTML=unescape('<?php echo $sumcom; ?>');
};

Code php :
echo '<a href="#" class="Style7" onclick="comReplace(\'zone_news\')">Lire</a></td></tr>';
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/03/2011, 02h00   #16
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
Merci Merci Merci.... mille fois merci Eric2a

Meme si avec la function comReplace cela ne fonctionne pas, ca m'a permis de regler le probleme.

Voila la solution

Code :
1
2
3
4
5
6
7
8
for ($i=0; $i < $total_table6; $i++){
	$commentaire[]=trim($table6[$i]['commentaire']);
}
 
$sumcom=nl2br(htmlspecialchars(implode(',',$commentaire),ENT_QUOTES,'UTF-8'));
$sumcom=stripslashes($sumcom);
$sumcom=rawurlencode(utf8_decode(nl2br($sumcom)));
$sumcom=str_replace(array("\r","\n"),'',$sumcom);
et le onclick
Code :
1
2
 
<a href="#" class="Style7" onclick="replace(\'zone_commentaire\',\''.$sumcom.'\')Lire</a>

C'est un peu complique mais ca fonctionne.

Autre question, google va-t-il reussir a interpreter le code style :

Code :
Ce%20resto%20situe%20en%20plein%20c%3Fur%20de%20Rennes%20une%20e
Car c'est ce que donne de ma page index.php?
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 08h18   #17
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
tu devrais regarder de ce coté là...
http://j-willette.developpez.com/tut...-site-en-utf8/
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 11h06   #18
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
En fait, il faut utiliser soit la fonction htmlspecialchars(), soit la fonction rawurlencode(). La première étant plus sûre afin que d'éventuelles balises HTML inclus dans les commentaires ne soient pas intérprétées.

J'avais quand-même posté la ligne...
Code :
$sumcom=rawurlencode(utf8_decode(nl2br($sumcom)));
pour montré qu'il etait nécessaire d'utiliser la fonction utf8_decode() dans ton cas.

Citation:
Envoyé par voyageurdumonde
avec la function comReplace cela ne fonctionne pas
C'est à dire ?

Citation:
Envoyé par voyageurdumonde
google va-t-il reussir a interpreter le code
Dans ce cas précis, le commentaire ne sera pas indéxé car il fait parti du code Javascript.

Tu peux le placer "en dur" dans la page HTML et le rendre visible à l'aide d'une fonction.

Exemple...
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<script type="text/javascript">//<![CDATA[
	function showCom(obj){
		var el=document.getElementById(obj);
		if(el)el.style.display='block';
	};
//]]>
</script>
 
<div id="zone_commentaire">
<?php echo $com; ?>
</div>
 
<?php
echo '<a href="#" class="Style7" onclick="showCom(\'zone_commentaire\')">Lire</a></td></tr>';
?>
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2011, 00h20   #19
Membre habitué
 
Inscription : décembre 2007
Messages : 392
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : décembre 2007
Messages : 392
Points : 118
Points : 118
salut,

Si j'utilise la fonction htmlspecialchars(), je retrouve le probleme avec les retour a la ligne et ca ne fonctionne pas. Si j'utilise rawurlencode j'obtiens de backslash partout dans mon texte et meme avec stripslashes il reste quand meme.
Je ne comprends pas pourquoi cela fait ca mais ca fonctionne en mettant les deux fonctions l'une derriere l'autre. Sauf si cela pose un probleme de securite majeure, je pense que je vais reste avec cela pour l'instant.

Pour le texte et google je vais juste le faire apparaitre avant de l'encoder dans une Div qui sera hidden.
voyageurdumonde est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h04.


 
 
 
 
Partenaires

Hébergement Web