Exécuter une fonction PHP avec onclick

Je cherche une solution simple pour appeler une fonction PHP uniquement lorsque une étiquette est cliquée.

PHP:

function removeday() { ... }

HTML:

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

MISE À JOUR: le code html et le code PHP sont dans le même fichier PHP

Solution

Tout d'abord, comprenez que vous avez trois langues qui travaillent ensemble :

  • PHP : Il est exécuté uniquement par le serveur et répond aux requêtes telles que cliquer sur un lien (GET) ou soumettre un formulaire (POST).

  • HTML &amp ; JavaScript : Ils ne s'exécutent que dans le navigateur de quelqu'un (à l'exception de NodeJS).

Je suppose que votre fichier ressemble à quelque chose comme :



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

Parce que PHP ne répond qu'aux requêtes (GET, POST, PUT, PATCH, et DELETE via $_REQUEST), c'est ainsi que vous devez exécuter une fonction PHP même si elles sont dans le même fichier. Cela vous donne un niveau de sécurité, "Dois-je exécuter ce script pour cet utilisateur ou pas?&quot ;.

Si vous ne souhaitez pas rafraîchir la page, vous pouvez envoyer une requête à PHP sans rafraîchir la page via une méthode appelée AJAX (Asynchronous JavaScript and XML).

C'est quelque chose que vous pouvez rechercher sur YouTube. Cherchez simplement "jquery ajax" ;

Je recommande Laravel à toute personne débutante pour bien commencer : http://laravel.com/

Commentaires (5)

En javascript, faites une fonction ajax,

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

      });
 }

Puis appeler depuis le html,

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

Et dans votre ajax.php,

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

Vous devrez le faire via AJAX. Je vous recommande fortement 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/

Commentaires (4)