버튼 클릭으로 PHP 함수를 호출하는 방법


151

SubmitInsert 두 개의 버튼이 포함 된 functioncalling.php 페이지를 만들었습니다 . PHP 초보자는 버튼을 클릭했을 때 어떤 기능이 실행되는지 테스트하고 싶습니다. 출력이 같은 페이지에 오기를 원합니다. 그래서 각 버튼마다 하나씩 두 가지 기능을 만들었습니다. functioncalling.php의 소스 코드는 다음과 같습니다.

<!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>

        <?php
            function select(){
               echo "The select function is called.";
            }
            function insert(){
               echo "The insert function is called.";
            }
        ?>

여기서 문제는 버튼을 클릭 한 후에도 출력이 없다는 것입니다.

내가 정확히 어디로 잘못 가고 있습니까?


10
PHP는 서버에서 실행됩니다. 클릭 핸들러는 클라이언트에서 실행됩니다. 이와 같은 버튼을 클릭하면 PHP 기능을 실행할 수 없습니다. 그러나 Javascript로 할 수 있습니다.

1
코드를 요구하는 질문은 해결중인 문제에 대한 최소한의 이해를 보여 주어야합니다. 시도한 솔루션, 작동하지 않는 이유 및 예상 결과를 포함하십시오.

4
답장을 보내 주셔서 감사합니다. JavaScript에서 PHP 함수를 정확히 어떻게 호출하는지 말씀해 주시겠습니까?
면도기

이 답변을 참조하십시오 .
Amal Murali

답변:


93

예, 여기에 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;
    }
?>

이 코드는 나를 위해 작동하지 않습니다 : Uncaught ReferenceError : $ is not defined
Benjamin

이 코드를 사용하기 전에 JQuery 라이브러리를 포함 시켰습니까?
Roopendra

9
나는 //code.jquery.com/...etc가 localhost에로드되지 않는다는 것을 깨달았습니다. 코드가 잘 작동합니다. 내 실수입니다.
Benjamin

1
아름다운! 정확히 내가 찾던 것.

1
버튼 클래스 핸들러를 좋아합니다. 많은 시나리오에서 작동하는 일반 코드에 대한 전문가.
Pablo Contreras

64

버튼 클릭은 클라이언트 측 이지만 PHP는 서버 측 에서 실행 되지만 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
    }
?>

5
솔루션을 제공해 주셔서 감사합니다. 귀하가 제공 한 AJAX 코드 스 니펫에서 .done 속성에서 PHP 함수를 어떻게 호출합니까?
면도기

일단 ajax를 사용하여 PHP 파일을 호출하면 특정 PHP 함수를 호출하는 방법이 있습니까? 아니면 각각 다른 파일에 넣어야합니까?
Lordbug

1
또한 JS preventdefault를 사용하면 양식이 제출되지 않으므로 페이지가 다시로드되지 않습니다. w3schools.com/jsref/…
csandreas1 1

초보자로서 나는 의심을 없애고 싶다. HTML과 PHP 코드가 HTML과 단일 페이지에 병합되어 양식과 같은 클라이언트 상호 작용을 목적으로하는 PHP와 HTML 양식에 대한 응답으로 PHP를 통합하는 경우 해당 페이지가 개발되지 않도록해야합니다. 양식을 클릭 하시겠습니까?
KPMG

이것은 어떻게 작동합니까? abc 함수 본문에 echo 문을 넣고 함수 선언 줄과 함수의 echo 호출에 중단 점을 넣었습니다. 버튼을 클릭하면 첫 번째 중단 점에 도달하지만 (즉, 함수가 선언 됨) 본문에있는 중단 점이 절대로 도달하지 않으므로 함수가 호출되지 않습니다.
Shaggydog

41

버튼을 같은 페이지와 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     
    }
?>

17

HTML에서 버튼을 클릭하는 것과 같은 PHP 함수를 호출 할 수 없습니다. PHP는 서버 쪽을 실행하는 동안 HTML은 클라이언트쪽에 있기 때문입니다.

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

양식 데이터를 게시 한 다음 클릭 한 적절한 버튼을 확인해야합니다.


그리고 함수에 매개 변수를주고 싶다면?
Nick Alexander

PHP에서 다른 함수와 같은 함수에 인수를 전달할 수 있습니다
Jason W

14

입력에 $ 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 문서에 어떻게 든 포함시켜야합니다.


8

이 시도:

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

1
이것은 어리석은 프레임 워크를 사용하는 것이 아니라 최상의 답변입니다
Vincent Thorpe

7

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
        }
    }
?>


5

onclickHTML 의 속성은 PHP 함수가 아닌 JavaScript 함수를 호출합니다.


4

나는 이것에 갇혀 있었고 숨겨진 필드로 해결했습니다.

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

에서 value당신이 추가 원하는대로 추가 할 수 있습니다.

test.php에서는를 통해 값을 검색 할 수 있습니다 $_Post[ID].


ID따옴표로 묶지 말아야합니까 $_Post[ID]? PHP는 Perl에서와 같이 간단한 단어를 지원합니까?
Peter Mortensen

3

양식 조치 자체가 호출되는 재귀 호출을 사용하십시오. 그런 다음 같은 형식으로 PHP 코드를 추가하여 잡으십시오. 에서 foo.php호출 양식 foo.phppost

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

양식이 제출되면 자체적으로 호출 ( foo.php)되며 $_SERVER아래 코드와 같이 PHP 사전 정의 된 변수 를 통해이를 잡을 수 있습니다

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

2

사용할 수있는 예는 다음과 같습니다.

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

0

간단하게 할 수 있습니다. PHP에서는 다음을 사용하여 버튼 클릭을 결정할 수 있습니다

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>


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.