Я ищу простое решение для вызова функции PHP только при нажатии a-tag.
PHP:
function removeday() { ... }
HTML:
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
UPDATE: код html и PHP находятся в одном файле PHP
Я ищу простое решение для вызова функции PHP только при нажатии a-tag.
PHP:
function removeday() { ... }
HTML:
<a href="" onclick="removeday()" class="deletebtn">Delete</a>
UPDATE: код html и PHP находятся в одном файле PHP
Во-первых, поймите, что у вас есть три языка, работающих вместе:
PHP: он запускается только сервером и отвечает на запросы, такие как нажатие на ссылку (GET) или отправка формы (POST).
HTML & JavaScript: он работает только в чьем-то браузере (исключая NodeJS).
Я предполагаю, что ваш файл выглядит примерно так:
<!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>
Поскольку PHP отвечает только на запросы (GET, POST, PUT, PATCH и DELETE через $ _REQUEST), именно так вы должны запускать функцию PHP, даже если они находятся в одном файле. Это дает вам определенный уровень безопасности: "Должен ли я запускать этот скрипт для этого пользователя или нет?".
Если вы не хотите обновлять страницу, вы можете сделать запрос к PHP без обновления с помощью метода, называемого асинхронным JavaScript и XML (AJAX).
Это то, что вы можете посмотреть на YouTube, хотя. Просто найдите "JQuery AJAX"
Я рекомендую Laravel любому новичку, чтобы начать правильно: http://laravel.com/
В javascript выполните функцию ajax,
function myAjax() {
$.ajax({
type: "POST",
url: 'your_url/ajax.php',
data:{action:'call_this'},
success:function(html) {
alert(html);
}
});
}
Затем вызовите из html,
<a href="" onclick="myAjax()" class="deletebtn">Delete</a>
И в вашем ajax.php,
if($_POST['action'] == 'call_this') {
// call removeday() here
}
Вам нужно будет сделать это через AJAX. Я HEAVILY рекомендую вам использовать jQuery, чтобы сделать это проще для вас....
$("#idOfElement").on('click', function(){
$.ajax({
url: 'pathToPhpFile.php',
dataType: 'json',
success: function(data){
//data returned from php
}
});
)};
Это можно сделать и с довольно простым php если это ваша кнопка
<input type="submit" name="submit>
и это ваш php-код
if(isset($_POST["submit"])) { php code here }
код вызывается при отправке отправки, который происходит при нажатии кнопки.
Попробуйте сделать что-то вроде этого:
<!--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>
Решение без перезагрузки страницы
<?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>
Это самый простой способ. Если форма размещена по почте, сделайте функцию php. Обратите внимание, что если вы хотите выполнять функцию асинхронно (без необходимости перезагрузки страницы), вам понадобится AJAX.
<form method="post">
<button name="test">test</button>
</form>
<?php
if(isset($_POST['test'])){
//do php stuff
}
?>
Попробуйте это будет работать нормально.
<script>
function echoHello(){
alert("<?PHP hello(); ?>");
}
</script>
<?PHP
FUNCTION hello(){
echo "Call php function on onclick event.";
}
?>
<button onclick="echoHello()">Say Hello</button>