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
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/
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
}
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
}
});
)};
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é.
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>
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>
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>
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
}
?>
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>