Utilisation de PHP dans l'instruction IF de javascript

J'essaie de faire une boîte de confirmation qui souhaitera quel code php sera exécuté. Heres mon code:

<script type="text/javascript"> var answer = confirm('Are you sure?'); if(answer==true) { <?php $confirmation = 1; ?> } else { <?php define("CONFIRMATION", 1, true); ?> } alert('<?php echo $confirmation; ?>') alert('<?php echo defined("CONFIRMATION"); ?>') </script> 

Le problème est que, même si je clique sur YES, $ confirmation et boolean de la fonction définie (), retourne 1. Tout ce que je clique, (annuler ou ok) l'un d'entre eux devrait être 0 (j'ai déjà déclaré confirmation $ avant). Les codes sont utilisés si des blocs sont utilisés! Normalement, ça fonctionne comme ça

Vous ne comprenez pas fondamentalement ce que PHP fait.

PHP est évalué sur le serveur avant que la page ne soit envoyée à votre navigateur. Au moment où le navigateur le voit et exécute le javascript, tout le PHP est parti.

Utilisez la «source de vue» de votre navigateur dans la fenêtre du navigateur avec ce code. Vous verrez que cela ressemble à ceci:

 <script type="text/javascript"> var answer = confirm('Are you sure?'); if(answer==true) { } else { } alert('1') alert('1') </script> 

Vous devez soit implémenter ce que vous voulez faire en javascript pour fonctionner sur le navigateur, soit vous devez envoyer une nouvelle demande au serveur et récupérer une nouvelle page (directement ou indirectement) avec votre réponse.

Cela ne fonctionnera jamais car PHP est traité avant que la sortie ne soit envoyée au navigateur. Si vous avez vraiment besoin de modifier quelque chose en PHP, essayez d'utiliser un appel AJAX.

http://ajaxpatterns.org/XMLHttpRequest_Call

Ou essayez d'utiliser $.ajax(); jQuery $.ajax(); fonction. Commencez par regarder ici .

Voici un exemple rapide:

 <script type="text/javascript"> var answer = confirm('Are you sure?'); $.ajax({ type: 'GET', url: '/path/to/script.php', data: 'answer=' + answer, success: function(response) { alert(response); } }); </script> 

Contenu de script.php :

 <?php if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ) { // AJAX request $answer = $_GET['answer']; // ... } 

Vous ne comprenez pas mal l'ordre de ce qui se passera ici.

Tout d'abord, PHP affichera la couche javascript. Votre bloc si se ressemblera alors:

 if (answer == true) { } else { } 

Le moteur javascript devrait ensuite l'optimiser et l'ignore totalement. Envisagez d'utiliser AJAX si vous devez obtenir PHP pour traiter quelque chose avec une entrée de la couche javascript.

Normalement, ça fonctionne comme ça

Non, ça ne fonctionne jamais comme ça. PHP est exécuté avant le javascript afin qu'il ne fonctionne jamais comme ça.

Je pense que de ce que je vois, vous voudrez quelque chose comme

 <a href="?confirmation=1" onclick="return confirm('Are you sure?')">Your link</a> 

Cela va à la page actuelle avec $_GET['confirmation'] défini sur "1" .

Vous ne pouvez pas déclencher une exection de code PHP sans demande de publication / demande. Pour vos besoins, vous devez choisir entre une sous-base de formulaire ou charger un lien de page avec les paramètres remplis dans la chaîne de requête lors de la confirmation.

PS les paramètres de chaîne de requête sont ceux qui suivent le "?" Dans le format variable = valeur

par exemple:

 index.php?answered=1 

Vous pourrez ensuite récupérer ces valeurs / valeurs vatibles en utilisant les variables PHP $ _POST, $ _GET ou $ _REQUEST de la manière suivante:

 if ($_REQUEST['answered'] == 1) { //confirmed ... } 

Php exécuté avant javascript afin que vous ne puissiez pas le faire car lorsque vous le vérifiez via javascript si else statement php est déjà exécuté afin que vous ne puissiez pas le faire, mais vous pouvez utiliser ajax pour cela