Hoe een PHP-functie aan te roepen met een klik op de knop

Ik heb een pagina gemaakt met de naam functioncalling.phpdie twee knoppen bevat, Submiten Insert.

Ik wil testen welke functie wordt uitgevoerd als er op een knop wordt geklikt. Ik wil dat de uitvoer op dezelfde pagina verschijnt. Dus heb ik twee functies gemaakt, één voor elke knop.

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

Het probleem hier is dat ik geen uitvoer krijg nadat op een van de knoppen is geklikt.

Waar ga ik precies fout?


Antwoord 1, autoriteit 100%

Klikken op de knop zijn clientzijdeterwijl PHP wordt uitgevoerd serverzijde, maar u kunt dit bereiken door Ajax:

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

In je PHP-bestand:

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

Antwoord 2, autoriteit 92%

Ja, je hebt Ajax hier nodig. Raadpleeg de onderstaande code voor meer details.

 

Wijzig uw opmaak als volgt

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

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

Antwoord 3, autoriteit 66%

Je moet de knop dezelfde pagina laten aanroepen en in een PHP-sectie controleren of de knop is ingedrukt:

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

Antwoord 4, autoriteit 26%

Je kunt geen PHP-functies aanroepen, zoals klikken op een knop vanuit HTML. Omdat HTML zich aan de clientzijde bevindt, terwijl PHP aan de serverzijde draait.

Je moet een beetje Ajax gebruiken of het doen zoals in het onderstaande codefragment.

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

U moet uw formuliergegevens posten en vervolgens controleren op de juiste knop waarop is geklikt.


Antwoord 5, autoriteit 19%

Om $message in uw invoer te tonen:

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

Om functioncalling.php als een extern bestand te gebruiken, moet je het op de een of andere manier in je HTML-document opnemen.


Antwoord 6, autoriteit 12%

Probeer dit:

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

Antwoord 7, autoriteit 11%

Je kunt zo schrijven in JavaScript of jQuery Ajax en het bestand aanroepen

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

Antwoord 8, autoriteit 7%

Het onclickattribuut in HTML roept JavaScript-functies aan, geen PHP-functies.


Antwoord 9, autoriteit 7%

Ik zat hierin vast en heb het opgelost met een verborgen veld:

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

In valuekun je alles toevoegen wat je wilt toevoegen.

In test.php kun je de waarde ophalen via $_Post[ID].


Antwoord 10, autoriteit 5%

Gebruik een recursieve aanroep waarbij de formulieractie zichzelf aanroept. Voeg vervolgens PHP-code in dezelfde vorm toe om deze op te vangen. In foo.phproept je formulier foo.phpaan op post

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

Zodra het formulier is ingediend, roept het zichzelf op (foo.php) en kunt u het ophalen via de voorgedefinieerde PHP-variabele $_SERVERzoals weergegeven in de onderstaande code

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

Antwoord 11, autoriteit 4%

Hier is een voorbeeld dat u zou kunnen gebruiken:

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

Antwoord 12, autoriteit 3%

Een PHP-functie aanroepen met de HTML-knop: Maak een HTML-formulierdocument dat de HTML-knop bevat. Wanneer op de knop wordt geklikt, wordt de methode POST aangeroepen. De POST-methode beschrijft hoe gegevens naar de server moeten worden verzonden. Nadat u op de knop hebt geklikt, wordt de functie array_key_exists()aangeroepen.

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

bron: geeksforgeeks.org


Antwoord 13

U kunt dit eenvoudig doen. In php kunt u de klik op een knop bepalen door gebruik te maken van

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

Daarom moet u uw code als volgt wijzigen:


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

Other episodes