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 :

Affecter la valeur du retour d'une fonction javascript � une variable php


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    6
    D�tails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Par d�faut Affecter la valeur du retour d'une fonction javascript � une variable php
    Bonjour,
    J'ai un code html affect� � la variable $html et je veux l'envoyer par un formulaire depuis page1.php � page2.php
    Avant, Je confrontais le souci d'envoyer un code html via un formulaire.
    j'ai post� hier mon probl�me dans le forum et j'ai eu la bonne solution. ici

    Le probl�me qui se pose maintenant est qu'en fait :
    <div id="partie1"> , <div id="partie2"> et <div id="partie3"> se sont des div dont le contenu est variable gr�ce � des fonctions Javascript-Ajax.

    Ainsi la variable $html envoy� via le formulaire n'est pas aussi dynamique , mais elle garde le contenu affect� d�s la 1�re fois, et tout changement effectu� sur les div ult�rieurement par ajax n'est pas appliqu� sur $html.

    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
    20
     
     
    <?php
    // [...]
     
    $html = '<h2>I) Titre1 : </h2>
            <div id="partie1">C\'est la 1ère partie.</div>
            <h2>II) Titre2 : </h2>
            <div id="partie2">C\'est la 2ème partie.</div>
            <h2>III) Titre3 : </h2>
            <div id="partie3">C\'est la 3ème partie.</div>';
     
    ?>
    	<form method="post"  accept="text/html"  action="page2.php" >
    	<input type="hidden" name="code" value="<?php echo htmlspecialchars($html); ?>" />
    	<input type="submit" value="Afficher" />	
    	</form>
    <?php
    // [...]
    ?>
    J'ai eu l'id�e de cr�er une fonction javascript comme suit :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    function actualiseHTML()
    {
     
    	return document.getElementById("contenu").innerHTML;
     
    }
    Quant au code sur page1.php :

    ( J'y essaie d'appeler une fonction Javascript qui prend le contenu de la div "contenu" , j'esp�re que ma fonction javascript est correcte, puis lors du submit du formulaire j'appelle la fonction javascript et j'essaie d'affecter la valeur de retour � $html , puis j'envoie htmlspecialchars($html) comme valeur � l'id 'code' )

    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
    20
    21
    22
    23
    24
    25
    26
     
    <div id="contenu">
    <?php
    // [...]
     
    $html = '<h2>I) Titre1 : </h2>
            <div id="partie1">C\'est la 1ère partie.</div>
            <h2>II) Titre2 : </h2>
            <div id="partie2">C\'est la 2ème partie.</div>
            <h2>III) Titre3 : </h2>
            <div id="partie3">C\'est la 3ème partie.</div>';
     
    ?>
     
    </div>
     
    	<form method="post"  accept="text/html"  action="page2.php" 
    onsubmit="
    	<?php 
                    $html='<script type="text/javascript"> actualiseHTML(); </script>' ;
            ?>
     
    >
    	<input type="hidden" name="code" value="<?php echo htmlspecialchars($html); ?>" />
    	<input type="submit" value="Afficher" />	
    	</form>
    Apparemment, mon code est faux au niveau de l'affectation de la valeur du retour de la fonction javascript dans une variable php.

    Aussi, eventuellement une autre erreur que la valeur de $html soit affect�e � 'code' avant l'appel de actualiseHTML();

    Si vous avez une autre id�e ou une correction � mon id�e, j'en serai tellement reconnaissante!

    Je vous remercie d'avance pour votre aide.

  2. #2
    Invit�
    Invit�(e)
    Par d�faut
    Bon. A mon avis, c'est plus un probl�me de conception et de logique.
    - PHP est du cot� serveur (donc avant affichage),
    - alors que javascript est du cot� client (donc apr�s affichage)

    sur le PRINCIPE (� tester, of course !) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    <div id="contenu">
    	<h2>I) Titre1 : </h2>
    	<div id="partie1">C'est la 1ère partie.</div>
    	<h2>II) Titre2 : </h2>
    	<div id="partie2">C'est la 2ème partie.</div>
    	<h2>III) Titre3 : </h2>
    	<div id="partie3">C'est la 3ème partie.</div>
    </div>
    Et en javascript :
    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
    function mettre_contenu_div_dans_input(){
    	document.getElementById("code").value = document.getElementById("contenu");
    }
    // initialisation
    window.onload=function(){
    	mettre_contenu_div_dans_input();
    }
    // dans les fonction de modification de #partie1, #partie2 ou #partie3
    function modifier_partiex(....)
    	[.......]
    	// actualisation du contenu
    	document.getElementById("divinvisible").innerHTML = nouveau_contenu_apres lodification;
    	// remplacement de la valeur de l'input
    	mettre_contenu_div_dans_input();
    }
    Derni�re modification par Invit� ; 06/05/2012 � 07h15.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    6
    D�tails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Par d�faut
    Je pense que je me suis mal exprim�e..
    Bon, plus explicitement, lors du click sur le submit du formulaire, je dois transmettre le contenu d'une div ( son code html ) � une autre page.

    J'ai essay� :

    <input type="hidden" name="code" value="<?php echo htmlspecialchars($html); ?>" />

    apr�s avoir affect� le contenu de la div 'contenu' � $html ( voir dans mon code ).

    J'ai bien r�ussi que les trois parties ( les divs existant dans 'contenu' ) soient dynamique via des fonctions ajax... mais $html ne varie pas avec eux, apr�s la 1�re affectation. et donc c'est le code html lors de l'affichage de page1.php qui se renvoie � page2.php via le formulaire.

    Donc, comment envoyer le contenu d'une div � une autre page via le formulaire et le r�cup�rer par $_POST ?

    Merci encore

  4. #4
    Invit�
    Invit�(e)
    Par d�faut
    Citation Envoy� par walking Voir le message
    apr�s avoir affect� le contenu de la div 'contenu' � $html ( voir dans mon code ).
    [...]
    mais $html ne varie pas avec eux, apr�s la 1�re affectation.
    C'est toi qui comprends mal : tu ne peux pas faire �a en javascript ! (car le PHP est cot� serveur et le javascript cot� client !)

    DONC :
    1/ la div "#contenu" :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    <div id="contenu">
    	<h2>I) Titre1 : </h2>
    	<div id="partie1">C'est la 1ère partie.</div>
    	<h2>II) Titre2 : </h2>
    	<div id="partie2">C'est la 2ème partie.</div>
    	<h2>III) Titre3 : </h2>
    	<div id="partie3">C'est la 3ème partie.</div>
    </div>
    2/ la 1�re affectation :
    - SOIT OPTION 1 : (comme tu fais d�j�) tu mets le contenu de "#contenu" dans une variable $html,
    Et (avec l'OPTION 1) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <input type="hidden" id="idcode" name="code" value="<?php echo htmlspecialchars($html); ?>" />
    - SOIT OPTION 2 : directement en javascript avec :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    window.onload=function {
    document.getElementById("idcode").value = document.getElementById("contenu").innerHTML;
    }
    et (avec l'OPTION 2) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <input type="hidden" id="idcode" name="code" value="" />
    3/ Traitement javascript/ajax pour modifier dynamiquement les contenus de "#partie1", "#partie2", "#partie3"
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    [... ton code de traitement javascript/ajax ...]
    4/Il faut alors affecter la valeur de l'input directement en javascript :
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    	document.getElementById("idcode").value = document.getElementById("contenu").innerHTML;
    Par contre, htmlspecialchars() n'existe pas en javascript.
    Il faut �ventuellemnt cr�er une fonction javascript (trouv�e ici):
    function js_htmlspecialchars(str) {
    if (typeof(str) == "string") {
    str = str.replace(/&/g, "&amp;"); /* must do &amp; first */
    str = str.replace(/"/g, "&quot;");
    str = str.replace(/'/g, "'");
    str = str.replace(/</g, "&lt;");
    str = str.replace(/>/g, "&gt;");
    }
    return str;
    }
    et donc :
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    	document.getElementById("idcode").value = js_htmlspecialchars( document.getElementById("contenu").innerHTML );
    Derni�re modification par Invit� ; 06/05/2012 � 07h34.

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une m�me classe
    Par script73 dans le forum G�n�ral Python
    R�ponses: 3
    Dernier message: 06/03/2015, 10h18
  2. R�cup�rer la valeur d'une listbox dans une fonction javascript
    Par skyangel20 dans le forum G�n�ral JavaScript
    R�ponses: 5
    Dernier message: 09/10/2007, 10h51
  3. R�ponses: 3
    Dernier message: 16/01/2006, 16h02
  4. R�ponses: 11
    Dernier message: 10/05/2004, 10h49
  5. R�ponses: 4
    Dernier message: 17/03/2004, 17h24

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