web-dev-qa-db-fra.com

Comment puis-je utiliser une variable JavaScript comme PHP variable?

J'essaie d'inclure des variables JavaScript dans le code PHP en tant que variables PHP, mais j'ai du mal à le faire. Quand un bouton est cliqué, la fonction suivante est appelée:

<script type="text/javascript">
    function addTraining(leve, name, date)
    {
        var level_var = document.getElementById(leve);
        var training_name_var = document.getElementById(name);
        var training_date_var = document.getElementById(date);

        <?php
            $result = "INSERT INTO training(level, school_name, training_date) VALUES('level_var', 'training_name_var', 'training_date_var')" or die("Query not possible.");
        ?>

</script>

C'est possible?

18
Selom

PHP est exécuté côté serveur. JavaScript est exécuté côté client dans le navigateur de l'utilisateur qui demande la page. Au moment où le JavaScript est exécuté, il n’ya aucun accès à PHP sur le serveur. Veuillez lire cet article avec des détails sur le codage côté client vs côté serveur .

En bref, voici ce qui se passe:

  • Vous cliquez sur un lien dans votre navigateur sur votre ordinateur sous votre bureau
  • Le navigateur crée une requête HTTP et l'envoie à un serveur sur Internet
  • Le serveur vérifie s'il peut gérer la requête
  • Si la demande concerne une page PHP, l'interpréteur PHP est démarré.
  • L'interpréteur PHP exécutera tout le code PHP de la page demandée.
  • L'interpréteur PHP n'exécutera PAS de code JS, car il n'en a aucune idée.
  • Le serveur renverra la page assemblée par l'interprète à votre navigateur.
  • Votre navigateur rendra la page et vous la montrera
  • JavaScript est exécuté sur votre ordinateur

Dans votre cas, PHP écrira le code JS dans la page afin qu'il puisse être exécuté lors du rendu de la page dans votre navigateur. À ce moment-là, la partie PHP de votre extrait JS n'existe plus. Il a déjà été exécuté sur le serveur. Il a créé une variable $result contenant une chaîne de requête SQL. Vous ne l'avez pas utilisé. Ainsi, lorsque la page est renvoyée à votre navigateur, elle disparaît. Regardez le code source lorsque la page est affichée dans votre navigateur. Vous verrez qu'il n'y a rien à la position où vous mettez le code PHP.

La seule façon de faire ce que vous cherchez à faire est soit:

  • faire une redirection vers un script PHP ou
  • faire un appel AJAX à un script PHP

avec les valeurs que vous voulez insérer dans la base de données.

36
Gordon
<script type="text/javascript">
var jvalue = 'this is javascript value';

<?php $abc = "<script>document.write(jvalue)</script>"?>   
</script>
<?php echo  'php_'.$abc;?>
21
dg_0175

Vous semblez confondre les codes côté client et côté serveur. Lorsque le bouton est cliqué, vous devez envoyer (publier, récupérer) les variables au serveur où le php peut être exécuté. Vous pouvez soit envoyer la page, soit utiliser un appel ajax pour envoyer uniquement les données.

4
Don Dickinson

PHP fonctionne sur le serveur. Il produit du texte (généralement). Ceci est ensuite analysé par le client. 

JavaScript s'exécute pendant et après l'analyse sur le client. A ce stade, il est trop tard pour que le script PHP puisse faire quoi que ce soit.

Si vous souhaitez récupérer quelque chose dans PHP, vous devez créer une nouvelle requête HTTP et y inclure les données (dans la chaîne de requête (données GET) ou dans le corps du message (données POST).

Vous pouvez le faire en:

  • Réglage de l'emplacement (GET uniquement)
  • Envoi d'un formulaire (avec la méthode FormElement.submit())
  • Utilisation de l'objet XMLHttpRequest (technique généralement appelée Ajax). Différentes bibliothèques effectuent une partie des tâches lourdes pour vous ici, par exemple. YUI ou jQuery .

Quelle que soit l'option choisie, le PHP est essentiellement le même. Lisez à partir de $_GET ou $_POST, exécutez le code de votre base de données, puis renvoyez des données au client.

3
Quentin

J'ai eu le même problème il y a quelques semaines, comme le vôtre; mais j’ai inventé une solution brillante d’échange de variables entre PHP et JavaScript. Cela a bien fonctionné pour moi:

  1. Créer un formulaire masqué sur une page HTML

  2. Créer une zone de texte ou une zone de texte sous cette forme masquée

  3. Après que tout votre code écrit dans le script, stockez la valeur finale de votre variable dans cette zone de texte

  4. Utilisez la ligne $ _REQUEST ['nom de la zone de texte'] dans votre PHP pour accéder à la valeur de votre variable JavaScript.

J'espère que cette astuce fonctionne pour vous.

1
Sepehr

Vous pouvez faire ce que vous voulez, mais pas comme ça. Ce que vous devez faire est de faire une requête AJAX depuis JavaScript vers le serveur où un script PHP distinct peut effectuer l'opération de base de données.

0
dj_segfault

Vous pouvez prendre toutes les valeurs comme ceci:

$abc = "<script>document.getElementByID('yourid').value</script>";
0
mit