IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Inclure une variable php dans du javascript


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 59
    Points : 50
    Points
    50
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre habitué
    Profil pro
    DSI
    Inscrit en
    Mai 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DSI

    Informations forums :
    Inscription : Mai 2009
    Messages : 120
    Points : 188
    Points
    188
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    ... 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 ?

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 937
    Points
    22 937
    Billets dans le blog
    125
    Par défaut
    Bonjour

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

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher une variable php dans du javascript
    Par Mut dans le forum Langage
    Réponses: 8
    Dernier message: 08/06/2011, 02h11
  2. Recuperer une variable PHP dans du javascript
    Par Equinoxe5 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 13/11/2009, 16h42
  3. Utilisation d'une variable php dans popup javascript
    Par cybernetique dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/01/2008, 22h27
  4. [PHP-JS] une variable php dans une fonction javascript
    Par megapacman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2006, 15h08
  5. [PHP-JS] utiliser une variable php dans du javascript
    Par kcizth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/02/2006, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo