Iščem preprosto rešitev za klicanje funkcije PHP samo ob kliku na oznako a.
PHP:
function removeday() { ... }
HTML:
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
DOPOLNITE: koda html in PHP sta v isti PHP datoteki
Najprej se zavedajte, da so trije jeziki vzajemno povezani:
PHP: PHP: Deluje samo v strežniku in se odziva na zahteve, kot je klik na povezavo (GET) ali oddaja obrazca (POST).
HTML in JavaScript: PHP: Pošlji se s HTML in JavaScript: (razen NodeJS).
Predvidevam, da je vaša datoteka videti nekako takole:
<!DOCTYPE HTML>
<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>
Ker se PHP odziva samo na zahteve (GET, POST, PUT, PATCH in DELETE prek $_REQUEST), morate tako zagnati funkcijo PHP, čeprav sta v isti datoteki. To vam zagotavlja stopnjo varnosti, "Ali naj zaženem to skripto za tega uporabnika ali ne?".
Če ne želite osveževati strani, lahko zahtevo PHP-ju pošljete brez osveževanja z metodo, imenovano asinhroni JavaScript in XML (AJAX).
To si lahko ogledate na YouTubu. Poiščite "jquery ajax";
Laravel priporočam vsem novim uporabnikom za dober začetek: http://laravel.com/
V javascriptu ustvarite funkcijo ajax,
function myAjax() {
$.ajax({
type: "POST",
url: 'your_url/ajax.php',
data:{action:'call_this'},
success:function(html) {
alert(html);
}
});
}
Nato jo pokličite iz html,
<a href="" onclick="myAjax()" class="deletebtn">Delete</a>
In v vašem ajax.php,
if($_POST['action'] == 'call_this') {
// call removeday() here
}
To boste morali storiti prek AJAX. Priporočam, da uporabite jQuery, da vam to olajša....
$("#idOfElement").on('click', function(){
$.ajax({
url: 'pathToPhpFile.php',
dataType: 'json',
success: function(data){
//data returned from php
}
});
)};