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 19/12/2010, 21h21   #1
Nouveau Membre du Club
 
Chauvin Baptiste
Inscription : décembre 2009
Messages : 59
Détails du profil
Informations personnelles :
Nom : Chauvin Baptiste

Informations forums :
Inscription : décembre 2009
Messages : 59
Points : 26
Points : 26
Par défaut Inclure une variable php dans du javascript

Bonjour à tous,

J'ai un petit TextArea en javascript qui fonctionne très bien (il est utilisé par l'éditeur de texte TinyMCE).
En voivi le code:
Code :
1
2
3
4
5
6
7
8
9
10
<script language="javascript" type="text/javascript">
  with (document.getElementById ("content_placeholder")) {
    with (appendChild (document.createElement ("TEXTAREA"))) {
      name = "elm1";
      cols = 117;
      rows = 20;
      value = "Texte par défaut";
    }
  }
</script>
Le texte que j'écris avec l'éditeur est inséré dans une base de données avec un identifiant propre. Je voudrais inclure une variable php dans le value de ce TextArea pour afficher le dernier message inséré dans ma base de données.

En gros l'utilisateur quand il se connecte sur l'éditeur de texte de cette page doit voir le texte actuel par défaut, comme ça il peut modifier que quelques lignes s'il le souhaite sans avoir à tout retaper.

Le contenu de ce texte est déjà récupéré dans une requête php située plus haut dans ma page.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
  require "../include/param.inc.php";
  unset($afficheEditAccueil);
  //création de la requête
  $afficheEditAccueil = "SELECT edit_content FROM tiny_edit WHERE id_class='1' ORDER BY id_edit DESC LIMIT 0, 1";
  //execution de la requête "afficheEditAccueil" (ou affiche l'erreur)
  $aea=mysql_query($afficheEditAccueil) or die(mysql_error()); 
  //affiche le résultat
   while ($donnees = mysql_fetch_array($aea) )
  {
  $afficheEdit=(stripslashes($donnees['edit_content']));
  }
?>
Le problème que je rencontre c'est quand je veux appeler cette variable dans le JavaScript. Cela ne m'affiche rien du tout, voir même parfois cela empêche le Textarea de s'afficher!

Je procède comme cela:
Code :
1
2
3
4
5
6
7
8
9
10
<script language="javascript" type="text/javascript">
  with (document.getElementById ("content_placeholder")) {
    with (appendChild (document.createElement ("TEXTAREA"))) {
      name = "elm1";
      cols = 117;
      rows = 20;
      value = '<?php echo $afficheEdit; ?>' ;
    }
  }
</script>
Qu'est-ce qui n'est pas correcte d'après vous dans cette technique et comment y remédier?

Merci
BLJ.CHAUVIN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 00h19   #2
Nouveau Membre du Club
 
Chauvin Baptiste
Inscription : décembre 2009
Messages : 59
Détails du profil
Informations personnelles :
Nom : Chauvin Baptiste

Informations forums :
Inscription : décembre 2009
Messages : 59
Points : 26
Points : 26
Une petite précision s'impose pour expliquer au mieux mon problème.

Quand j'affiche le HTML généré je peux voir que ma variable php est correctement récupérée. Les données s'affiche bien dans le 'value' du javascript, le problème est que les données en questions sont beaucoup trop importantes (environ 940 caractères dans ce cas mais cela pourrait monter plus encore vers 2000/3000 caractères).

De plus je pense ques les apostrophes et les caractères comme # ou le point-virgule doivent être interprétés par javascript. Donc cela créé quelques problèmles pour l'affichage de TextArea 'qui ne s'affiche plus du tout en fait)

Voici le code généré:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script language="javascript" type="text/javascript">
  with (document.getElementById ("content_placeholder")) {
    with (appendChild (document.createElement ("TEXTAREA"))) {
      name = "elm1";
      cols = 117;
      rows = 20;
      value = '<div class="grosTitreCentre">Bienvenue au Yummy!</div>
<p><br /> <strong>A</strong>mateurs de bonne chair et de moments agr&eacute;ables entre amis, vous &ecirc;tes ici chez vous!<br /><br /> 
<object width="560" height="260" data="swf/banner.swf" type="application/x-shockwave-flash">
<param name="quality" value="high" />
<param name="scale" value="exactfit" />
<param name="menu" value="true" />
<param name="bgcolor" value="#000040" />
<param name="src" value="swf/banner.swf" />
</object>
<br /> <strong>M</strong>anger est un des plaisirs de la vie, c'est notre philosophie.<br /> <br /> <strong>C</strong>'est pourquoi nous privil&eacute;gions les produits frais et de saison et que nous vous proposons des recettes de plats originaux.<br /> <br /> <strong>N</strong> ous prendrons plaisir &agrave; les partager avec vous.<br /><br /></p>';
    }
  }
</script>
Il me semble donc que cette technique n'est pas possible dans ce cas. Est-ce que quelqu'un aurait une autre piste à me suggérer pour palier à ce problème?

Le but est juste d'afficher par défaut la dernière version du texte inscrit dans ma base de données. Je ne sais pas trop comment faire ça.

Merci à vous.

Cordialement
BLJ.CHAUVIN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 00h58   #3
Membre habitué
 
Inscription : mai 2009
Messages : 115
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 115
Points : 145
Points : 145
Bonsoir,

juste comme ca je me demandais si tu as fait un htmlentities (en php) sur ta chaine quelques part, juste au cas ou il y a des caratères qui fasse planter le script.

Car dans ton exemple on voit bien que tu as un ' qui géne, donc pour moi un début serait d'essaye cela :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
<script language="javascript" type="text/javascript">
  with (document.getElementById ("content_placeholder")) {
    with (appendChild (document.createElement ("TEXTAREA"))) {
      name = "elm1";
      cols = 117;
      rows = 20;
      value = '<?php echo htmlentities($afficheEdit, ENT_QUOTES); ?>' ;
    }
  }
</script>

Enfin c'est juste une idée qui me passe par la tête.

Bonne soirée
e-fitz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 11h05   #4
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 073
Points : 4 073
... deux with imbriqués ?
J'ai du mal à croire que cela puisse être fonctionnel... c'est toi qui as écrit ces lignes ?
Quant bien même cele fonctionnerait, je trouve cette syntaxe totalement illisible...
Quel est le but de la manoeuvre ?
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 11h44   #5
Rédacteur
 
Avatar de danielhagnoul
 
Homme Daniel Hagnoul
Étudiant perpétuel
Inscription : février 2009
Messages : 3 221
Détails du profil
Informations personnelles :
Nom : Homme Daniel Hagnoul
Âge : 61
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant perpétuel
Secteur : Enseignement

Informations forums :
Inscription : février 2009
Messages : 3 221
Points : 6 767
Points : 6 767
Bonjour

L'usage de with n'est pas recommandé, il est même interdit dans ECMAScript 5 mode strict.
__________________

FAQ jQuery

Mon cahier d’exercices sur jQuery & Co

Si un message vous a aidé ou vous semble pertinent, votez pour lui !
danielhagnoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 12h24   #6
Nouveau Membre du Club
 
Chauvin Baptiste
Inscription : décembre 2009
Messages : 59
Détails du profil
Informations personnelles :
Nom : Chauvin Baptiste

Informations forums :
Inscription : décembre 2009
Messages : 59
Points : 26
Points : 26
Devant les problèmes rencontrés avec JavaScript (que je ne maitrise pas du tout) j'ai décidé de revenir à mes premiers amours et suis revenu à un form en html, qui, bien que simple fonctionne parfaitement.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form method="post" action="gestion-edit_value.php">
<div>
<h2>Edition des pages</h2><br />
<br />
	<div>
		<textarea id="elm1" name="elm1" rows="25" style="width: 100%">
			<?php echo ($afficheEdit); ?>
		</textarea>
	</div>
<br />
<input type="submit" name="save" value="Submit" />
<input type="reset" name="reset" value="Reset" />
</div>
</form>
Du coup mon <?php echo ($afficheEdit); ?> s'intègre parfaitement et je n'ai plus de problème d'affichage. Je sais que j'ai contourné le problème et que j'aurais mieux fait de persévérer pour trouver une solution, mais le temps ne joue pas en ma faveur, j'ai donc du faire un choix pratique.

Pour ce qui est du code js à proprement parler (les deux with imbriqués) je ne peux ni en expliquer l'utilité, ni en savourer la syntaxe, mes compétences étant bien en-deçà de ce niveau. Comme expliqué dans mon premier message ce petit bout de code vient de TinyMCE qui est un éditeur de texte JavaScript, je ne suis donc pas responsable de sa qualité/pertinence.

En tout cas merci pour vos interventions.

@ e-fitz : j'avais tenté une approche similaire... sans grand résultat
BLJ.CHAUVIN est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h12.


 
 
 
 
Partenaires

Hébergement Web