Как вызвать функцию PHP одним нажатием кнопки


Я новичок в PHP и только начал изучать основы этого языка.

Я создал страницу под названием functioncalling.php который содержит две кнопки "Отправить" и "Вставить". Как новичок в PHP, я хочу проверить, какая функция выполняется при нажатии кнопки. Я хочу, чтобы результат был на той же странице. Поэтому я создал две функции, по одной для каждой кнопки. Исходный код для functioncalling.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.";
}
?>

Проблема здесь в том, что я не выводите никаких данных после нажатия любой из кнопок.

Может ли кто-нибудь, пожалуйста, сказать мне, где именно я ошибаюсь? Ответы в самое ближайшее время будут высоко оценены. Заранее спасибо.

Author: BuddhistBeast, 2013-12-23

11 answers

Нажатие кнопки - это 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
}
 ?>
 40
Author: Moeed Farooqui, 2016-09-09 05:06:28

Да, здесь вам нужен 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;
}
?>
 65
Author: Roopendra, 2014-11-24 16:47:04

Вы должны сделать так, чтобы кнопка вызывала ту же страницу, и в разделе 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     
    }
?>
 18
Author: DavidS, 2016-12-06 14:50:16

Вы не можете вызывать функции 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.";
    }

?>.

Вы должны опубликовать данные своей формы, а затем проверить, нажата ли соответствующая кнопка.

 15
Author: Jason W, 2013-12-23 06:55:22

Чтобы отобразить $сообщение в вашем вводе:

    <?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-документ

 12
Author: user5253060, 2015-08-21 17:52:19

Попробуйте это:

if($_POST['select'] and $_SERVER['REQUEST_METHOD'] == "POST"){
    select();
}
if($_POST['insert'] and $_SERVER['REQUEST_METHOD'] == "POST"){
    insert();
}
 7
Author: user2399308, 2014-03-29 20:28:59

Вы можете написать подобное в 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

}
}
?>
 7
Author: Vipul Tank, 2015-12-30 07:39:59

Атрибут onclick в HTML вызывает функции Javascript, а не функции PHP.

 3
Author: linesarefuzzy, 2013-12-23 06:56:33

Я застрял в этом, и я решил это с помощью скрытого поля

<form method="post" action="test.php">
<input type="hidden" name="ID" value"">
</form>

В значение вы можете добавить все, что хотите добавить

В test.php вы можете получить значение через $_post[ID]

 3
Author: Sanya Zahid, 2016-03-18 12:21:40

Вот пример, который вы могли бы использовать:

<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";
    }
?>
 2
Author: Sagar Mali, 2015-07-18 15:44:34

Используйте рекурсивный вызов, когда действие формы вызывает само себя. Затем добавьте PHP-код в той же форме, чтобы поймать его. В foo.php ваша форма вызовет foo.php на post

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

Как только форма будет отправлена, она вызовет себя (foo.php), и вы можете поймать ее с помощью предопределенной переменной PHP $_SERVER, как показано в коде ниже

<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        echo "caught post";
    }
?>
        </form>
    </body>
</html>
 2
Author: bradleybrentmeyer, 2015-07-21 21:00:24