114 votes

Exécuter la fonction PHP avec onclick

Je recherche une solution simple pour appeler une fonction PHP uniquement lorsque un lien est cliqué.

PHP:

function removeday() { ... }

HTML:

Supprimer

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

2voto

csandreas1 Points 692

C'est la façon la plus simple possible. Si le formulaire est envoyé via post, exécutez la fonction php. Notez que si vous voulez exécuter la fonction de manière asynchrone (sans avoir besoin de recharger la page), alors vous aurez besoin d'AJAX.

    test

2voto

andiOak Points 135

Voici une alternative avec AJAX mais sans jQuery, juste du JavaScript normal :

Ajoutez ceci à la première page principale PHP, où vous voulez appeler l'action, mais changez-le d'une balise a potentielle (lien hypertexte) à un élément button, pour qu'il ne soit pas cliqué par des robots ou des applications malveillantes (ou autre).

  // fonction invoquant ajax avec du javascript pur, aucun jquery requis.
  function myFunction(value_myfunction) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
        document.getElementById("results").innerHTML += this.responseText; 
        // notez '+=', ajoute le résultat au paragraphe existant, retirez le '+' pour remplacer.
      }
    };
    xmlhttp.open("GET", "ajax-php-page.php?sendValue=" + value_myfunction, true);
    xmlhttp.send();
  }

  Cliquez pour envoyer la valeur

  Réponses de ajax-php-page.php :

Lorsque le button est cliqué, onclick utilise la fonction javascript de l'en-tête pour envoyer $sendingValue via ajax vers une autre page PHP, comme de nombreux exemples avant celui-ci. L'autre page, ajax-php-page.php, vérifie la valeur GET et renvoie avec print_r :

");
  } else {
    print_r("La requête n'a pas été transmise correctement par le GET...");
  }

?>

La réponse de print_r est ensuite renvoyée et affichée avec

document.getElementById("results").innerHTML += this.responseText;

Le += remplit et ajoute aux éléments HTML existants, en retirant le + on met à jour et remplace le contenu existant de l'élément HTML p "results".

1voto

Simpel Points 103

Essayez de faire quelque chose comme cela:

function doSomething() { 
    $.get("somepage.php"); 
    return false; 
} 

Cliquez ici!

-4voto

Vidya Points 36

Essayez ceci, cela fonctionnera très bien. Cela fonctionnera sans balises de formulaire et balises de bouton.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X