2010-03-04 8 views
17

J'essaie d'inclure des variables JavaScript dans le code PHP en tant que variables PHP, mais j'ai des problèmes pour le faire. Lorsqu'un bouton est cliqué, la fonction suivante est appelée:Comment puis-je utiliser une variable JavaScript en tant que variable PHP?

<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> 

Est-ce possible?

+1

Lisez ce sur le client vs côté serveur: http://stackoverflow.com/questions/2034501/how-does-php-work –

Répondre

36

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'y a aucun accès à PHP sur le serveur que ce soit. S'il vous plaît lire cet article avec des détails sur client-side vs server-side coding.

Qu'est-ce qui se passe en quelques mots est la suivante:

  • Vous cliquez sur un lien dans votre navigateur sur votre ordinateur sous votre bureau
  • Le navigateur crée une requête HTTP et envoie à un serveur sur Internet
  • le serveur vérifie s'il peut gérer la demande
  • Si la demande est pour une page PHP, l'interpréteur PHP est lancé
  • l'interpréteur PHP exécutera tout le code PHP dans la page vous reques ted
  • L'interpréteur PHP ne fonctionnera pas de code JS, parce qu'il n'a pas la moindre idée de ce
  • Le serveur envoie la page assemblé par l'interprète à votre navigateur
  • Votre navigateur rendra la page et le montrer vous
  • JavaScript est exécuté sur votre ordinateur

dans votre cas, PHP va écrire le code JS dans la page, il peut donc être exécutée lorsque la page est affichée 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 qui contenait une chaîne de requête SQL. Vous ne l'avez pas utilisé, alors quand la page est renvoyée à votre navigateur, elle est partie. Jetez un oeil sur le code source lorsque la page est rendue dans votre navigateur. Vous verrez qu'il n'y a rien à la position que vous avez mis 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.

4

Vous semblez confondre le code côté client et côté serveur. Lorsque le bouton est cliqué, vous devez envoyer (poster, obtenir) les variables sur le serveur où le php peut être exécuté. Vous pouvez soumettre la page ou utiliser un appel ajax pour soumettre uniquement les données. -don

3

PHP s'exécute sur le serveur. Il sort du texte (généralement). Ceci est ensuite analysé par le client.

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

Si vous voulez obtenir quelque chose de nouveau à PHP que vous devez faire une nouvelle requête HTTP et inclure les données qu'il contient (dans la chaîne de requête (GET données) ou le corps du message (données POST).

Vous peut le faire par:

  • emplacement de réglage (GET seulement)
  • Envoi d'un formulaire (avec la méthode FormElement.submit())
  • Utilisation de l'objet XMLHttpRequest (technique communément appelée Ajax) Diverses bibliothèques font partie de. th e soulever des charges lourdes pour vous ici, par ex. YUI ou jQuery.

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

0

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

1

J'ai eu le même problème il y a quelques semaines comme le vôtre; mais j'ai inventé une solution géniale pour l'échange de variables entre PHP et JavaScript. Il a travaillé pour moi bien:

  1. Créer une forme cachée sur une page HTML

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

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

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

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

+0

Can S'il vous plaît donner un exemple de travail –

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

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

Ceci est faux sur tant de niveaux, et trompeuse –

+3

ce n'est même pas une réponse – argentum47

+2

Cela fonctionne bien alors pourquoi n'est-ce pas une réponse @ argentum47 –

1

Vous pouvez prendre toutes les valeurs comme ceci:

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

Je vous ai utilisé moyen et a travaillé. Je ne sais pas si c'est un moyen recommandé. – user1919

+0

Ca ne marche pas pour moi ... Y a-t-il une autre façon s'il te plait ...? :) –

Questions connexes