Estou à procura de uma solução simples para chamar uma função PHP apenas quando **a-tag*** é clicada.
PHP:
function removeday() { ... }
HTML:
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
UPDATE: o html e o código PHP estão no mesmo arquivo PHP
Primeiro, compreendam que têm três línguas a trabalhar em conjunto:
PHP: Ele só é executado pelo servidor e responde a pedidos como clicar em um link (GET) ou enviar um formulário (POST).
HTML & JavaScript: Ele só roda em alguém's browser (excluindo o NodeJS).
I'estou a assumir que o teu ficheiro se parece com algo:
<!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>
Como o PHP só responde a pedidos (GET, POST, PUT, PATCH, e DELETE via $_REQUEST), é assim que você tem que executar uma função PHP mesmo que eles're no mesmo arquivo. Isto dá-lhe um nível de segurança, "Devo executar este script para este utilizador ou não?".
Se você não'não quer atualizar a página, você pode fazer uma requisição ao PHP sem atualizar através de um método chamado Asynchronous JavaScript and XML (AJAX).
Mas isso é algo que você pode procurar no YouTube. Basta pesquisar "jquery ajax"
Eu recomendo Laravel a qualquer novato para começar bem: http://laravel.com/
Em javascript, faça uma função ajax,
function myAjax() {
$.ajax({
type: "POST",
url: 'your_url/ajax.php',
data:{action:'call_this'},
success:function(html) {
alert(html);
}
});
}
Então ligue de html,
<a href="" onclick="myAjax()" class="deletebtn">Delete</a>
E no seu ajax.php,
if($_POST['action'] == 'call_this') {
// call removeday() here
}
Você terá que fazer isso através de **AJAX***. Eu recomendo vivamente que use jQuery para tornar isto mais fácil para si....
$("#idOfElement").on('click', function(){
$.ajax({
url: 'pathToPhpFile.php',
dataType: 'json',
success: function(data){
//data returned from php
}
});
)};