Как вызвать PHP-функцию одним нажатием кнопки
Я новичок в PHP и только начал изучать основы этого языка.
Я создал страницу с именем functioncalling.php, который содержит две кнопки, Submit и Insert. Как новичок в PHP,я хочу проверить, какая функция выполняется при нажатии кнопки. Я хочу, чтобы выход пришел на той же странице. Поэтому я создал две функции, по одной для каждой кнопки. Исходный код для вызова функций.php выглядит следующим образом:
<html>
<body>
<form action="functioncalling.php">
<input type="text" name="txt" />
<input type="submit" name="insert" value="insert" onclick="insert()" />
<input type="submit" name="select" value="select" onclick="select()" />
</form>
<?php
function select(){
echo "The select function is called.";
}
function insert(){
echo "The insert function is called.";
}
?>
в проблема здесь в том, что я не получаю никакого вывода после нажатия любой из кнопок.
может ли кто-нибудь сказать мне, где именно я ошибаюсь? Ответы в самое ближайшее время будут высоко оценены. Заранее спасибо.
11 ответов:
нажмите кнопку
client sideтогда как PHP-этоserver side, но вы можете добиться этого с помощьюajax$('.button').click(function() { $.ajax({ type: "POST", url: "some.php", data: { name: "John" } }).done(function( msg ) { alert( "Data Saved: " + msg ); }); });в вашем php файле:
<?php function abc($name){ //your code here } ?>
Да вам нужен ajax здесь. Пожалуйста, обратитесь к коду ниже для получения более подробной информации.
изменить разметку, как это
<input type="submit" class="button" name="insert" value="insert" /> <input type="submit" class="button" name="select" value="select" />jQuery: -
$(document).ready(function(){ $('.button').click(function(){ var clickBtnValue = $(this).val(); var ajaxurl = 'ajax.php', data = {'action': clickBtnValue}; $.post(ajaxurl, data, function (response) { // Response div goes here. alert("action performed successfully"); }); }); });в ajax.php
<?php if (isset($_POST['action'])) { switch ($_POST['action']) { case 'insert': insert(); break; case 'select': select(); break; } } function select() { echo "The select function is called."; exit; } function insert() { echo "The insert function is called."; exit; } ?>
вы должны вызвать кнопку на той же странице и в разделе PHP проверить, была ли нажата кнопка:
HTML:
<form action="theSamePage.php" method="post"> <input type="submit" name="someAction" value="GO" /> </form>PHP:
<?php if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['someAction'])) { func(); } function func() { // do stuff } ?>
вы не можете вызывать php-функции, такие как нажатие кнопки из HTML. потому что HTML находится на стороне клиента, а PHP работает на стороне сервера.
либо вам нужно использовать какой-то Ajax или сделать это, как в фрагменте кода ниже.
<?php if($_GET){ if(isset($_GET['insert'])){ insert(); }elseif(isset($_GET['select'])){ select(); } } function select() { echo "The select function is called."; } function insert() { echo "The insert function is called."; } ?>.вы должны опубликовать данные формы, а затем проверить наличие соответствующей кнопки, которая нажата.
чтобы показать $сообщение на входе:
<?php if(isset($_POST['insert'])){ $message= "The insert function is called."; } if(isset($_POST['select'])){ $message="The select function is called."; } ?> <form method="post"> <input type="text" name="txt" value="<?php if(isset($message)){ echo $message;}?>" > <input type="submit" name="insert" value="insert"> <input type="submit" name="select" value="select" > </form>для использования functioncalling.PHP как внешний файл включить его в HTML-документ
попробуйте это:
if($_POST['select'] and $_SERVER['REQUEST_METHOD'] == "POST"){ select(); } if($_POST['insert'] and $_SERVER['REQUEST_METHOD'] == "POST"){ insert(); }
вы можете написать так в javascript или jQuery ajax и вызвать файл
$('#btn').click(function(){ $.ajax({ url:'test.php?call=true', type:'GET', success:function(data){ body.append(data); } }); })<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script> <form method='get' > <input type="button" id="btn" value="click"> </form> <?php if(isset($_GET['call'])){ function anyfunction(){ echo "added"; // your funtion code } } ?>
Я застрял в этом, и я решил его с помощью скрытого поля
<form method="post" action="test.php"> <input type="hidden" name="ID" value""> </form>в значение вы можете добавить все, что вы хотите добавить
в тесте.php вы можете получить значение через $_Post[ID]
вот пример, который вы могли бы использовать:
<html> <body> <form action="btnclick.php" method="get"> <input type="submit" name="on" value="on"> <input type="submit" name="off" value="off"> </form> </body> </html> <?php if(isset($_GET['on'])) { onFunc(); } if(isset($_GET['off'])) { offFunc(); } function onFunc(){ echo "Button on Clicked"; } function offFunc(){ echo "Button off clicked"; } ?>
используйте рекурсивный вызов, когда действие формы вызывает себя. Затем добавьте PHP код в том же виде, чтобы поймать его. В
foo.phpваша форма будет назватьfoo.phponpost<html> <body> <form action="foo.php" method="post">после того, как форма была отправлена, она будет называть себя (
foo.php) и вы можете поймать его через предопределенную переменную PHP$_SERVERкак показано в коде ниже<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { echo "caught post"; } ?> </form> </body> </html>
Comments