web-dev-qa-db-fra.com

Exécuter PHP fonctionner avec onClick

Je recherche une solution simple pour appeler une fonction PHP uniquement lorsque a-tag est cliqué.

PHP:

function removeday() { ... }

HTML:

<a href="" onclick="removeday()" class="deletebtn">Delete</a>

UPDATE: le code HTML et le code PHP se trouvent dans le même fichier PHP

79
Mike

Tout d’abord, comprenez que trois langues fonctionnent ensemble.

  • PHP: est exécuté uniquement par le serveur et répond aux demandes, par exemple en cliquant sur un lien (GET) ou en soumettant un formulaire (POST).

  • HTML et JavaScript: est exécuté uniquement dans le navigateur de quelqu'un (à l'exception de NodeJS).

Je suppose que votre fichier ressemble à quelque chose comme:

<html>
<?php
  function runMyFunction() {
    echo 'I just ran a php function';
  }

  if (isset($_GET['hello'])) {
    runMyFunction();
  }
?>

Hello there!
<a href='index.php?hello=true'>Run PHP Function</a>
</html>

Étant donné que PHP ne répond qu'aux demandes (GET, POST, PUT, PATCH et DELETE via $ _REQUEST), vous devez exécuter une fonction PHP même si elles se trouvent dans le même fichier. Cela vous donne un niveau de sécurité: "Dois-je exécuter ce script pour cet utilisateur ou non?".

Si vous ne souhaitez pas actualiser la page, vous pouvez envoyer une requête à PHP sans l'actualiser via une méthode appelée JavaScript asynchrone et XML (AJAX).

C'est quelque chose que vous pouvez regarder sur YouTube cependant. Il suffit de chercher "jquery ajax"

Je recommande Laravel à ceux qui débutent bien: http://laravel.com/

122
Michael J. Calkins

En javascript, créez une fonction ajax,

function myAjax() {
      $.ajax({
           type: "POST",
           url: 'your_url/ajax.php',
           data:{action:'call_this'},
           success:function(html) {
             alert(html);
           }

      });
 }

Puis appelez du HTML,

<a href="" onclick="myAjax()" class="deletebtn">Delete</a>

Et dans votre ajax.php,

if($_POST['action'] == 'call_this') {
  // call removeday() here
}
34
devo

Vous devrez le faire via AJAX. Je vous recommande vivement d'utiliser jQuery pour vous faciliter la tâche ....

$("#idOfElement").on('click', function(){

    $.ajax({
       url: 'pathToPhpFile.php',
       dataType: 'json',
       success: function(data){
            //data returned from php
       }
    });
)};

http://api.jquery.com/jQuery.ajax/

12
A.O.

Cela peut être fait et avec un php plutôt simple Si c'est votre bouton

<input type="submit" name="submit>

et ceci est votre code php

if(isset($_POST["submit"])) { php code here }

le code get est appelé lorsque submit get est posté, ce qui se produit lorsque le bouton est cliqué.

10
Vamps

Essayez de faire quelque chose comme ça:

<!--Include jQuery-->
<script type="text/javascript" src="jquery.min.js"></script> 

<script type="text/javascript"> 
function doSomething() { 
    $.get("somepage.php"); 
    return false; 
} 
</script>

<a href="#" onclick="doSomething();">Click Me!</a>
1
Simpel

Vous avez besoin d'un code comme celui-ci.

<?php

if ((isset($_POST['del'])))
{
    //your code here
	echo "DELETED";
	
}
?>

<form action="" method="post">

	<button type="submit" name="del">Delete</button>

</form>

0
Rayobeats

Solution sans rechargement de page

<?php
  function removeday() { echo 'Day removed'; }

  if (isset($_GET['remove'])) { return removeday(); }
?>


<!DOCTYPE html><html><title>Days</title><body>

  <a href="" onclick="removeday(event)" class="deletebtn">Delete</a>

  <script>
  async function removeday(e) {
    e.preventDefault(); 
    document.body.innerHTML+= '<br>'+ await(await fetch('?remove=1')).text();
  }
  </script>

</body></html>
0
Kamil Kiełczewski

C'est le moyen le plus simple possible. Si le formulaire est posté par la poste, faites la fonction php. Notez que si vous souhaitez exécuter une fonction de manière asynchrone (sans avoir à recharger la page), vous aurez besoin d'AJAX.

<form method="post">
    <button name="test">test</button>
</form>

    <?php
    if(isset($_POST['test'])){
      //do php stuff  
    }
    ?>
0
csandreas1

Essayez ceci cela fonctionnera bien.

<script>
function echoHello(){
 alert("<?PHP hello(); ?>");
 }
</script>

<?PHP
FUNCTION hello(){
 echo "Call php function on onclick event.";
 }

?>

<button onclick="echoHello()">Say Hello</button>
0
Vidya