কীভাবে একটি বোতামের ক্লিকে পিএইচপি ফাংশন কল করতে পারেন


151

আমি একটি পৃষ্ঠায় বলা 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
পিএইচপি সার্ভারে কার্যকর করে। আপনার ক্লিক হ্যান্ডলারগুলি ক্লায়েন্টের উপর চালিত হয়। আপনি এই জাতীয় বোতাম ক্লিক করতে পিএইচপি ফাংশন চালাতে পারবেন না। তবে আপনি এটি জাভাস্ক্রিপ্টে করতে পারেন।

1
কোড জিজ্ঞাসা করা প্রশ্নাবলীর অবশ্যই সমস্যার সমাধানের ন্যূনতম বোধগম্যতা প্রদর্শন করতে হবে। চেষ্টা করা সমাধান, কেন তারা কাজ করেনি এবং প্রত্যাশিত ফলাফল অন্তর্ভুক্ত করুন।

4
জবাব দেওয়ার জন্য আপনাকে ধন্যবাদ। আপনি দয়া করে আমাকে বলতে পারেন যে আমি কীভাবে জাভাস্ক্রিপ্ট থেকে এই পিএইচপি ফাংশন বলি?
রেজার

উত্তর:


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

এজ্যাক্স.এফপি তে

<?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: $ সংজ্ঞায়িত করা হয় না
বেঞ্জামিন

আপনি এই কোডটি ব্যবহারের আগে জিকুয়ারি লাইব্রেরি অন্তর্ভুক্ত করেছিলেন?
রূপেন্দ্র

9
আমি করেছি কিন্তু ঠিক বুঝতে পেরেছি যে //code.jquery.com/...etc লোকালহোস্টে লোড হয় না, https: // করে! কোড ভাল কাজ করে দুঃখিত আমার ভুল।
বেনিয়ামিন

1
সুন্দর! ঠিক আমি খুঁজছেন ছিল কি.

1
বোতাম ক্লাস হ্যান্ডলার পছন্দ। জেনেরিক কোডের জন্য কুডো যা প্রচুর পরিস্থিতিতে কাজ করে।
পাবলো কন্ট্রিরাস

64

বোতাম ক্লিকগুলি ক্লায়েন্টের পাশে রয়েছে যেখানে পিএইচপি সার্ভারের পাশ দিয়ে কার্যকর করা হয় তবে আপনি অ্যাজাক্স ব্যবহার করে এটি অর্জন করতে পারেন :

$('.button').click(function() {
  $.ajax({
    type: "POST",
    url: "some.php",
    data: { name: "John" }
  }).done(function( msg ) {
    alert( "Data Saved: " + msg );
  });
});

আপনার পিএইচপি ফাইলটিতে:

<?php
    function abc($name){
        // Your code here
    }
?>

5
সমাধান দেওয়ার জন্য ধন্যবাদ। আপনি আমাকে সরবরাহ করেছেন এমন AJAX কোড স্নিপেটে, আমি কীভাবে .done সম্পত্তিতে পিএইচপি ফাংশন কল করব?
রেজার

আপনি একবার পিএইচপি ফাইল কল করতে এজ্যাক্স ব্যবহার করার পরে, নির্দিষ্ট পিএইচপি ফাংশন কল করার কোনও উপায় আছে? বা আমি কি প্রত্যেককে আলাদা ফাইলে রাখতে হবে?
লর্ডব্যাগ

1
ফর্ম জমা দেওয়া থেকে রোধ করতে জেএস প্রতিরোধ ডিফল্ট ব্যবহার করুন যাতে পৃষ্ঠাটি পুনরায় লোড হবে না। w3schools.com/jsref/…
csandreas1

শিক্ষানবিস হিসাবে, আমি আমার সন্দেহ পরিষ্কার করতে চাই want এই পৃষ্ঠাগুলি যেখানে এইচটিএমএল এবং পিএইচপি কোড উভয়ই একক পৃষ্ঠায় একত্র হয়ে ফর্ম এবং পিএইচপি যেমন এইচটিএমএল ফর্মগুলির জবাব হিসাবে পরিবেশন করে যেমন কোনও এইচটিএমএল এবং পিএইচপি কোডগুলি একক পৃষ্ঠায় একত্রিত হতে বাধা দেওয়া উচিত যেমন কোনও কোনও বোতামের উপর ভিত্তি করে কিছু ফলাফল মুদ্রণ করা Should ফর্ম ক্লিক করা হয়?
কেপিএমজি

এটি কীভাবে কাজ করার কথা? আমি অ্যাবসি ফাংশন বডিটিতে একটি প্রতিবেদনটি রেখেছি এবং আমি ফাংশন ডিক্লেয়ারেশন লাইন এবং ফাংশনে ইকো কল উভয় বিরতি রেখেছি। আমি যখন বোতামটি ক্লিক করি, তখন প্রথম ব্রেকপয়েন্টটি হিট হয় (অর্থাত্ ফাংশনটি ঘোষিত হয়) তবে শরীরে যেটি কখনও আঘাত করে না, যার অর্থ আমি ফাংশনটি বলা হয় না।
শেগিডগ

41

আপনার বোতামটি একই পৃষ্ঠায় কল করা উচিত এবং পিএইচপি বিভাগে বোতামটি টিপানো হয়েছে কিনা তা পরীক্ষা করে দেখুন:

এইচটিএমএল:

<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

আপনি এইচটিএমএল থেকে বোতামে ক্লিক করার মতো পিএইচপি ফাংশনগুলি কল করতে পারবেন না। কারণ এইচটিএমএল ক্লায়েন্টের পাশে রয়েছে যখন পিএইচপি সার্ভার সাইড চালায়।

হয় আপনাকে কিছু অ্যাজাক্স ব্যবহার করতে হবে বা নীচের কোড স্নিপেটের মতো এটি করতে হবে।

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

আপনাকে আপনার ফর্মের ডেটা পোস্ট করতে হবে এবং তারপরে ক্লিক করা উপযুক্ত বাটনটি পরীক্ষা করতে হবে।


এবং যদি আমি ফাংশন একটি পরম দিতে চান?
নিক আলেকজান্ডার

আপনি পিএইচপি
জেসন ডব্লু

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>

একটি বহিরাগত ফাইল হিসাবে ফাংশনকলিং.এফপি ব্যবহার করতে আপনাকে এটিকে আপনার 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

ফর্ম ক্রিয়াটি নিজে কল করে এমন একটি পুনরাবৃত্তি কল ব্যবহার করুন। তারপরে এটি ধরতে একই ফর্মটিতে পিএইচপি কোড যুক্ত করুন। ইন foo.phpআপনার ফর্ম ডাকব foo.phpউপরpost

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

ফর্মটি জমা হয়ে গেলে এটি নিজেই কল করবে ( foo.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

আপনি কেবল এটি করতে পারেন। পিএইচপি-তে আপনি ব্যবহারের মাধ্যমে বোতাম ক্লিক নির্ধারণ করতে পারেন

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.