Estoy buscando una solución sencilla para llamar a una funciónPHP sólo cuando se hace clic en una etiqueta.
PHP:
function removeday() { ... }
HTML:
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
Actualización: el código html y PHP están en el mismo archivo PHP
En primer lugar, comprenda que tiene tres idiomas que trabajan juntos:
PHP: Sólo se ejecuta en el servidor y responde a peticiones como hacer clic en un enlace (GET) o enviar un formulario (POST).
HTML & JavaScript: Sólo se ejecuta en el navegador de alguien (excluyendo NodeJS).
Supongo que su archivo tiene un aspecto similar:
<!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>
Debido a que PHP sólo responde a las peticiones (GET, POST, PUT, PATCH y DELETE a través de $_REQUEST), así es como tienes que ejecutar una función de PHP aunque estén en el mismo archivo. Esto le da un nivel de seguridad, "¿Debo ejecutar este script para este usuario o no?".
Si no quiere refrescar la página, puede hacer una petición a PHP sin refrescar a través de un método llamado Asynchronous JavaScript and XML (AJAX).
Eso es algo que usted puede buscar en YouTube sin embargo. Sólo la búsqueda "jquery ajax";
Recomiendo Laravel a cualquier persona nueva para empezar bien: http://laravel.com/
En javascript, haz una función ajax,
function myAjax() {
$.ajax({
type: "POST",
url: 'your_url/ajax.php',
data:{action:'call_this'},
success:function(html) {
alert(html);
}
});
}
Luego llama desde el html,
<a href="" onclick="myAjax()" class="deletebtn">Delete</a>
Y en su ajax.php
if($_POST['action'] == 'call_this') {
// call removeday() here
}
Tendrás que hacerlo a través de AJAX. Recomiendo encarecidamente el uso de jQuery para hacer esto más fácil para usted....
$("#idOfElement").on('click', function(){
$.ajax({
url: 'pathToPhpFile.php',
dataType: 'json',
success: function(data){
//data returned from php
}
});
)};