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 :

Passage de variable javascript a php


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Février 2010
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 83
    Points : 50
    Points
    50
    Par défaut Passage de variable javascript a php
    Bonjour je voudrais connaitre les différentes méthodes pour passer les valeurs d’une variable javascript à php ?

    Voici une méthode trouvée , donnez moi votre avis ? et si vous avez d’autres méthodes je suis à l’écoute.

    Merci d’avance mariox




    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
     
    <html>
    <head>
    	<title>test de script php et javascript</title>
    </head>
    <body>
     
    <script trype="text/javascript">
     var test="toto";
    </script>
     
    	<?php
                            $var="<script> document.write(test);</script>";
                            echo $var;
            ?>
    </body>
     
    </html>

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour et Bienvenue sur Developpez
    Regarde du coté AJAX.

  3. #3
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    Salut,

    Je penses que la technique que tu présentes est bien, tu peux très facilement t'en servir aussi bien dans le head ou dans le body, par exemple pour afficher une adresse stocker dans une base de données dans google map.

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    geoCodeur.getLatLng("<?php echo $rue.' '.$cp.' '.$ville.' france'; ?>",.....);
     
    //ou//
     
    var adresse = "<?php echo $rue.' '.$cp.' '.$ville.' france'; ?>";
    geoCodeur.getLatLng(adresse,.....);
    Et après comme dit Andry.aime tu as ajax. Vraiment bien aussi ! Ca t'offrira pas mal de possibilités. Perso je m'en sert surtout pour changer le contenu d'une page et rarement pour passer le contenu d'une variable php dans une variable javascript, enfin surtout tout dépend le volume du contenu que tu veux faire passer. (genre une page complète utilises ajax et petit bout de code utilises la méthode que tu nous présentes).

    Ah oui aussi j'allais oublier : si tu utilises la première méthode tes variables et ton contenu seront initialisés au chargement de la page puisque php agit coté serveur, tandis que si tu utilise ajax tu peux modifier les informations à n'importe quel moment sans recharger la page.

    A toi de choisir au mieux une de c'est méthodes en fonctions de tes besoins.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Mais non, il est absolument impossible d'utiliser en PHP une variable JavaScript !
    PHP sert à générer une page HTML avant qu'elle ne soit interprétée par le navigateur, aucun traitement JavaScript ne peut être disponible à ce moment

  5. #5
    Membre habitué Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Points : 193
    Points
    193
    Par défaut
    ooooops je me suis trompé, j'avais compris l'inverse php to javascript.

    Désolé Mariox a ce moment la tu n'as que Ajax comme solution.

  6. #6
    Membre régulier Avatar de paragoge
    Profil pro
    Inscrit en
    Février 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 115
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Mais non, il est absolument impossible d'utiliser en PHP une variable JavaScript
    Je viens précisément d'utiliser en PHP une variable 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
    16
    17
    18
    19
    20
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Exemple d'utilisation en PHP d'une variable javascript</title> 
    <script language="javascript" type="text/javascript"> 
    var MyJavascriptVariable = "Ceci est bien une variable javascript!!!"; 
    function SetJsValue() 
    { 
         document.classic_form.jsvalue.value = MyJavascriptVariable; 
    } 
    </script> 
    </head> 
    <body> 
    <form action="action.php" method="post" enctype="application/x-www-form-urlencoded" name="classic_form" id="classic_form"> 
     <input type="hidden" name="jsvalue" value="javascript:MyJavascriptVariable.toString()" /> 
    <input type="submit" name="submit" id="submit" value="Submit" onclick="SetJsValue();" /> 
    </form> 
    </body> 
    </html>
    et dans action.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    echo $_POST['jsvalue'];
    ?>

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Très amusant

    Sauf que dans ton code j'ai un peu de mal à voir où tu utilises dans un traitement PHP une variable JavaScript...
    Tout ce que je vois, c'est l'utilisation classique de JavaScript dans une page HTML.

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    d'un autre côté, bravo, tu as trouvé un moyen révolutionnaire d'envoyer une variable au serveur: un champ de formulaire

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    mariox => dans ton code je ne vois pas de passage de variable de js à php ...
    paragoge => le passage de la variable se fait classiquement par soumission d'un formulaire...

    Il n'y a pas de secret, un passage de variable du client vers le serveur ne peut se faire qu'en get ou en post dans l'url.

    Donc soit par :

    - des champs de formulaire

    - une concatenation de l'url avec les paramètres ( ?param1=truc&param2=machin )
    puis un self.location.assign (ou href) ou une attribution de src (image ou iframe)

    - un send d'ajax (xmlHttpRequest )

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Spaffy, dans l'exemple proposé par mariox, ce qu'il souhaite, c'est utiliser pendant la création de la page en PHP une variable qui sera créée par une fonction JavaScript de la page générée :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    	$var="<script> document.write(test);</script>";
    	echo $var;
    ?>
    ce qui est impossible.

  11. #11
    Membre régulier Avatar de paragoge
    Profil pro
    Inscrit en
    Février 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 115
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Très amusant
    Sauf que dans ton code j'ai un peu de mal à voir où tu utilises dans un traitement PHP une variable JavaScript...
    Tout ce que je vois, c'est l'utilisation classique de JavaScript dans une page HTML.
    C'est exact...(et c'est rassurant de voir que les pros dans ce forum ne sont pas des touristes!) alors on peut dire pour être précis que c'est une variable javascript placée dans une variable POST qui est récupérée dans une page php. Est-ce une formulation correcte?

    Maintenant, il y a un truc que je ne grasp pas encore bien : pour le même exemple, le code source affiche correctement le contenu de la variable dans le champs value ="" si la page php traite cette variable (ici par un simple echo). Si par contre j'annule l'écho et le remplace par un header("Location: pageDorigine.html"); alors plus rien : la variable n'est pas insérée par la fonction bien qu'elle ait bien été initiée par onclick

    Là, j'ai quelque chose d'important à apprendre...

  12. #12
    Membre régulier Avatar de paragoge
    Profil pro
    Inscrit en
    Février 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 115
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par javatwister Voir le message
    d'un autre côté, bravo, tu as trouvé un moyen révolutionnaire d'envoyer une variable au serveur: un champ de formulaire
    J'adore ton humour! ce genre de bizutage est sympa!

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    En gros php ne fait que rediger le code html / js...

    Tant que le php n'as pas fini de rediger le code html js et que la page n'est pas arrivée coté client, parler de variable javascript est une prospection, elle n'existe pas encore.
    Puis une fois la page arrivée coté client parler de code php est de l'archéologie, il n'existe plus ... il en sotn encore vraiment à l'apartheid et il n'y a rien à y faire à part communiquer par avocat interposé que sont le post et le get ...

  14. #14
    Membre régulier Avatar de paragoge
    Profil pro
    Inscrit en
    Février 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 115
    Points : 71
    Points
    71
    Par défaut
    Quelque chose dans ton explication semble entrer en collision avec l'exemple précis présent : pour que php puisse lire la variable name="jsvalue" dans l'input, il faut bien que d'abord en local la valeur définie dans le script javascript soit transmise par la fonction SetJsValue().
    Le javascript est bien lu en premier, la variable est envoyée puis sa valeur est affichée dans le browser ? De cet exemple présent, c'est bien le javascript qui est exécuté en premier, non? N'est-ce pas la fonction onclick qui est exécutée avant le submit?

  15. #15
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Non, ce que t'as expliqué Spaffy, c'est que d'abord, ta page est construite avec PHP coté serveur.
    Le script PHP génère un code HTML (qui peut contenir du code JavaScript ou des appels à des fichiers JavaScript) et l'envoie au navigateur. Son travail est alors terminé et il oublie instantanément tout ce qu'il vient de faire.
    Une fois arrivé sur le poste client, le code HTML généré est alors interprété par le navigateur dans l'ordre où il apparait dans le code. Donc quand du JavaScript arrive, l'interpréteur prend le relais et intègre le tout dans l'environnement JavaScript. C'est uniquement à ce moment que ta variable existe réellement.

    Pour plus de détails, je te conseille de lire ce tuto : http://dmouronval.developpez.com/tut...-requete-ajax/

  16. #16
    Membre régulier Avatar de paragoge
    Profil pro
    Inscrit en
    Février 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 115
    Points : 71
    Points
    71
    Par défaut
    Ce que je veux dire c'est que $_POST['jsvalue'] ne pourrait rien contenir si AVANT d'arriver sur le serveur, le browser n'avait pas transmis le string "Ceci est bien une variable javascript!!!" à jsvalue.
    Merci pour le tutorial.

  17. #17
    Membre régulier Avatar de paragoge
    Profil pro
    Inscrit en
    Février 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 115
    Points : 71
    Points
    71
    Par défaut
    Très bien le tuto. Je le garde sous la main. J'aimerais avoir ton avis sur la possibilité ou non d'une amélioration d'une logique déjà réaliée et qui marche :

    Il s'agit d'une série d'input text superposés. Le contenu est envoyé à une page php qui génère du code xml comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xml .= "<title><![CDATA[<span class='title'>" . $_POST['titre1'] . "</span>]]></title>";
    Cette page php enregistre dans un fichier texte le code xml généré et on revient à la page de départ par un header("Location:").
    La page xml est importée par ActionScript 3 dans un fichier swf.

    Je suis arrivé à la limite de mes compétences et je ne peux réaliser l'amélioration suivante: j'aimerais bien, dans la page de départ avoir des champs textes dynamiques que je rajoute avec javascript par creation d'éléments et d'attributs, mais pour conserver le contenu des champs texte quand on revient sur la page par un header, là ça devient plus complexe que de faire un simple <?php echo $_POST[''] ?> dans les value du text. Je suis arrivé dans une impasse en essayant de mélanger du code php et javascript...et c'est là que ton tuto a mis les points sur les i!

    Dans quelle direction devrais-je aller chercher? Ajax pourrait-il être une piste?

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Points : 48
    Points
    48
    Par défaut
    Je suis arrivé à la limite de mes compétences et je ne peux réaliser l'amélioration suivante: j'aimerais bien, dans la page de départ avoir des champs textes dynamiques que je rajoute avec javascript par creation d'éléments et d'attributs, mais pour conserver le contenu des champs texte quand on revient sur la page par un header, là ça devient plus complexe que de faire un simple <?php echo $_POST[''] ?> dans les value du text. Je suis arrivé dans une impasse en essayant de mélanger du code php et javascript...et c'est là que ton tuto a mis les points sur les i!
    si tu veux rajouter dynamiquement des champs texte par exemple sur l'action d'un bouton, je pense qu'il faut directement le faire en ajax. et établir une structure hiérarchique qui te permette de créé un tableau de champs texte.
    ainsi, lorsque tu clique sur le bouton, tu as juste a ajouter un élément supplémentaire a ton tableau.
    ensuite l'ont pourrait voir la chose suivante :
    - pour faire en sorte à avoir un tableau de champs texte, il faut associé un attribut "class" identique pour tous.
    - et pour différencier chacun de tes champs, tu leur alloue un attribut "id".

    ensuite, lorsque tu valide ton formulaire, tu appel une fonction ajax qui récupère les champs et les envoies à une page php qui se charge de stocker les champ texte dans une session et tu fais une redirection vers le formulaire.
    bien entendu , dans le formulaire tu vérifie si ta session est pleine et a ce moment la tu détermine le nombre d'élément qu'il y a dans ton tableau et tu reconstruit le formulaire avec les données stocker.

    l'un des soucis est le nombre de variable traiter via javascript ^^. pasque si tu as une 10aines de champs texte a sauvegarder ca va en faire des données POST ^^

  19. #19
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Ce que je veux dire c'est que $_POST['jsvalue'] ne pourrait rien contenir si AVANT d'arriver sur le serveur, le browser n'avait pas transmis le string "Ceci est bien une variable javascript!!!" à jsvalue.
    non les variables $_POST ne sont pas des variables javascript !!!
    $_POST et $_GET sont des variables php
    Elle sont transmises par le client certes mais n'ont aucun existence coté client.

    coté client tu devras faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var jsvariable=document.getElementsByName('jsvalue')[0].value;
    alert(jsvariable
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert($_POST['jsvalue'])
    par contre si tu es coté serveur en provenance du client tu pourrais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'script type="text/javascript">alert("'.$_POST['jsvalue'].'");</script>
    MAIS qui ne sera interprété que lors du retour chez le client.

    Il faut bien comprendre que les deux langages étant interprétés a des moments différents ne peuvent en aucun cas utiliser mutuellement leurs variables autrement que par des transferts.
    de js à php en post ou en get
    de php en js par des echos de variables php ou transfert en get que js sait éventuellement récupérer

  20. #20
    Membre régulier Avatar de paragoge
    Profil pro
    Inscrit en
    Février 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 115
    Points : 71
    Points
    71
    Par défaut
    Dans mon exemple on a un submit par lequel une fonction javascript est déclenché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <input type="submit" name="submit" id="submit" value="Submit" onclick="SetJsValue();" />
    Qu'est ce qui se passe en premier?
    N'est-ce pas d'abord le string "maFichueVariableJs"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var MyJavascriptVariable = "maFichueVariableJs";
    function SetJsValue()
    {
     document.classic_form.jsvalue.value = MyJavascriptVariable;
    }
    qui est assigné à la variable jsvalue ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <input type="hidden" name="jsvalue" id="jsvalue" value="javascript:MyJavascriptVariable.toString()" />
    et ensuite donc est envoyée à la page action.php qui va lire cette variable par echo $_POST[jsvalue]; ?

    N'est-ce pas donc d'abord javascript qui est exécuté(? le terme exacte pour cette opération?) et ensuite dans la page action.php la fonction echo réalisée?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Passage de variable javascript vers php (JS=>PHP)
    Par geforce dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 30/08/2010, 15h44
  2. [PHP-JS] recuperer une variable javascript dan php
    Par hammag dans le forum Langage
    Réponses: 2
    Dernier message: 07/08/2006, 14h00
  3. [PHP-JS] Transmettre une variable javascript vers php
    Par phpaide dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/05/2006, 08h30
  4. [PHP-JS] recuperation de variable javascript avec php
    Par dipajero dans le forum Langage
    Réponses: 3
    Dernier message: 21/03/2006, 20h39
  5. [PHP-JS] variable javascript vers PHP
    Par nicoaix dans le forum Langage
    Réponses: 3
    Dernier message: 17/03/2006, 21h28

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