如何通过点击一个按钮来调用 PHP 函数

我已经创建了一个称为 functioncalling.php的页面,其中包含两个按钮,服从插入

我想测试当按钮被点击时哪个函数被执行。我希望输出显示在同一页上。所以,我创建了两个函数,每个按钮一个。

<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.";
}
?>

这里的问题是,在单击任何按钮之后,我都不会得到任何输出。

我到底哪里做错了?

1301291 次浏览

单击按钮是 客户端,而执行 PHP 是 服务器端,但是您可以通过使用 阿贾克斯来实现这一点:

$('.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
}
?>

不能像单击 HTML 中的按钮那样调用 PHP 函数。因为 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.";
}
?>

您必须发布表单数据,然后检查是否单击了适当的按钮。

HTML 中的 onclick属性调用 JavaScript 函数,而不是 PHP 函数。

是的,这里需要 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;
}
?>

试试这个:

if($_POST['select'] and $_SERVER['REQUEST_METHOD'] == "POST"){
select();
}
if($_POST['insert'] and $_SERVER['REQUEST_METHOD'] == "POST"){
insert();
}

下面是一个你可以使用的例子:

<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中,你的表格将在 post上调用 foo.php

<html>
<body>
<form action="foo.php" method="post">

一旦表单被提交,它将调用自己(foo.php) ,您可以通过 PHP 预定义的变量 $_SERVER捕获它,如下面的代码所示

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo "caught post";
}
?>
</form>
</body>
</html>

在输入中显示 $message:

<?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 文档中。

您可以像这样在 JavaScript 或 jQueryAjax 中编写并调用该文件

$('#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>

value中,你可以添加任何你想要添加的东西。

在 test.php 中,可以通过 $_Post[ID]检索该值。

您应该让该按钮调用相同的页面,并在 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
}
?>

您可以简单地这样做

if(isset($_Post['button_tag_name']){
echo "Button Clicked";
}

因此,您应该按以下方式修改您的代码:


<?php


if(isset($_Post['select']){
echo "select button clicked and select method should be executed";
}
if(isset($_Post['insert']){
echo "insert button clicked and insert method should be executed";
}
           

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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>


<script>
//This will be processed on the client side
function insert(){
window.alert("You click insert button");
}


function select(){
window.alert("You click insert button");
}
</script>
</body>
</html>




        

使用 HTML 按钮调用 PHP 函数: 创建包含 HTML 按钮的 HTML 表单文档。当单击该按钮时,将调用 POST 方法。POST 方法描述了如何向服务器发送数据。单击按钮后,array_key_exists()函数调用。

<?php
if(array_key_exists('button1', $_POST)) {
button1();
}
else if(array_key_exists('button2', $_POST)) {
button2();
}
function button1() {
echo "This is Button1 that is selected";
}
function button2() {
echo "This is Button2 that is selected";
}
?>


<form method="post">
<input type="submit" name="button1" class="button" value="Button1" />
<input type="submit" name="button2" class="button" value="Button2" />
</form>

来源: Geeksforgeeks.org