बटन के क्लिक पर PHP फ़ंक्शन कैसे कॉल करें


151

मैंने 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 कार्यों को नहीं चला सकते। आप इसे जावास्क्रिप्ट में कर सकते हैं, हालाँकि।

1
कोड के लिए पूछ रहे प्रश्नों को हल की जा रही समस्या की न्यूनतम समझ प्रदर्शित करनी चाहिए। शामिल किए गए समाधानों को शामिल करें, वे काम क्यों नहीं किए, और अपेक्षित परिणाम।

4
जवाब देने के लिए धन्यवाद। क्या आप मुझे बता सकते हैं कि मैं वास्तव में जावास्क्रिप्ट से PHP कार्यों को कैसे करूं?
रेजर

जवाबों:


93

हां, आपको यहां अजाक्स की आवश्यकता है। कृपया अधिक जानकारी के लिए नीचे दिए गए कोड को देखें।

 

अपना मार्कअप इस तरह बदलें

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

यह कोड मेरे लिए काम नहीं करता है: अनट्रेडेड संदर्भ: $ परिभाषित नहीं किया गया है
बेंजामिन

क्या आपने इस कोड का उपयोग करने से पहले JQuery लाइब्रेरी को शामिल किया था।
रूपेंद्र

9
मैंने किया, लेकिन एहसास हुआ कि //code.jquery.com/...cc लोकलहोस्ट पर लोड नहीं करता, https: // करता है! कोड ठीक काम करता है मेरी गलती क्षमा करें।
बेंजामिन

1
सुंदर! ठीक वही जो मेरे द्वारा खोजा जा रहा था।

1
बटन वर्ग हैंडलर से प्यार है। जेनेरिक कोड के लिए यश जो बहुत सारे परिदृश्यों में काम करता है।
पाब्लो कॉन्ट्रेरास

64

बटन क्लिक क्लाइंट साइड होते हैं जबकि 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
    }
?>

5
समाधान देने के लिए धन्यवाद। AJAX कोड स्निपेट में जो आपने मुझे प्रदान किया है, मैं .done प्रॉपर्टी में PHP फ़ंक्शंस को कैसे कहूं?
रेजर

एक बार जब आप php फ़ाइल को कॉल करने के लिए ajax का उपयोग करते हैं, तो क्या विशिष्ट php फ़ंक्शन को कॉल करने का कोई तरीका है? या मुझे हर एक को एक अलग फाइल में डालना होगा?
लॉर्डबग

1
फ़ॉर्म को सबमिट करने से रोकने के लिए JS preventdefault का भी उपयोग करें ताकि पृष्ठ पुनः लोड न हो। w3schools.com/jsref/…
csandreas1

एक शुरुआत के रूप में, मैं अपना संदेह दूर करना चाहता हूं। क्या उन पृष्ठों को विकसित होने से रोका जाना चाहिए जहां HTML और PHP दोनों कोड एक ही पृष्ठ में HTML के साथ विलय किए गए हैं, जो क्लाइंट के इंटरैक्शन के उद्देश्य से हैं जैसे कि प्रपत्र और PHP ऐसे HTML रूपों के उत्तर के रूप में सेवा करते हैं जैसे कि कुछ में एक बटन के आधार पर कुछ परिणाम प्रिंट करना फॉर्म पर क्लिक किया गया?
केपीएमजी

यह कैसे काम करना है? मैंने abc function body में एक इको स्टेटमेंट डाला है, और मैंने फंक्शन डिक्लेरेशन लाइन, और फंक्शन में इको कॉल दोनों पर ब्रेकपॉइंट्स लगाए हैं। जब मैं बटन पर क्लिक करता हूं, तो पहला ब्रेकपॉइंट हिट होता है (यानी फ़ंक्शन घोषित होता है) लेकिन शरीर में कोई भी कभी हिट नहीं होता है, जिसका अर्थ है कि फ़ंक्शन को कभी नहीं बुलाया जाता है।
शग्यदोग

41

यदि बटन दबाया गया था, तो आपको बटन को उसी पृष्ठ पर और PHP अनुभाग में जाँच करना चाहिए:

HTML:

<form action="theSamePage.php" method="post">
    <input type="submit" name="someAction" value="GO" />
</form>

पीएचपी:

<?php
    if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['someAction']))
    {
        func();
    }
    function func()
    {
        // do stuff     
    }
?>

17

आप HTML से एक बटन पर क्लिक करने की तरह PHP कार्यों को कॉल नहीं कर सकते। क्योंकि PHP क्लाइंट साइड पर है, जबकि PHP सर्वर साइड पर चलती है।

या तो आपको कुछ अजाक्स का उपयोग करने की आवश्यकता है या इसे नीचे दिए गए कोड स्निपेट की तरह करना चाहिए।

<?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 में अन्य कार्यों की तरह कार्यों के लिए तर्क पारित कर सकते हैं
जेसन डब्ल्यू

14

अपने इनपुट में $ संदेश दिखाने के लिए:

<?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
यह बेवकूफ फ्रेमवर्क का उपयोग करने के बजाय सबसे अच्छा जवाब है
विन्सेन्ट थोर

7

आप जावास्क्रिप्ट या 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 में विशेषता जावास्क्रिप्ट काम करता है, नहीं पीएचपी कार्यों कहता है।


4

मैं इसमें फंस गया और मैंने इसे एक छिपे हुए क्षेत्र के साथ हल किया:

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

इसमें valueआप जो भी जोड़ना चाहें जोड़ सकते हैं।

Test.php में आप के माध्यम से मान प्राप्त कर सकते हैं $_Post[ID]


IDमें उद्धृत नहीं किया जाना चाहिए $_Post[ID]? क्या पर्ल में नंगे शब्द समर्थन करते हैं?
पीटर मोर्टेंसन

3

पुनरावर्ती कॉल का उपयोग करें जहाँ प्रपत्र क्रिया स्वयं कॉल करती है। फिर इसे पकड़ने के लिए उसी रूप में 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

यहाँ एक उदाहरण है जिसका आप उपयोग कर सकते हैं:

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


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.