it-swarm.com.de

So rufen Sie eine PHP -Funktion auf Knopfdruck auf

Ich habe eine Seite namens functioncalling.php erstellt, die zwei Schaltflächen enthält: Submit und Insert. Als Anfänger in PHP möchte ich testen, welche Funktion ausgeführt wird, wenn auf eine Schaltfläche geklickt wird. Ich möchte, dass die Ausgabe auf derselben Seite erfolgt. Also habe ich zwei Funktionen erstellt, eine für jede Taste. Der Quellcode für functioncalling.php lautet wie folgt:

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

Das Problem hierbei ist, dass ich keine Ausgabe erhalte, nachdem auf eine der Schaltflächen geklickt wurde.

Wo genau gehe ich falsch?

132
Razor

Tastenklicks sind clientseitig , wohingegen PHP serverseitig ausgeführt wird . Sie können dies jedoch erreichen, indem Sie - verwenden. Ajax :

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

In Ihrer PHP Datei:

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

Ja, du brauchst Ajax hier. Bitte beziehen Sie sich auf den Code unten für weitere Details.

Ändere dein Markup so

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

Sie sollten dafür sorgen, dass die Schaltfläche dieselbe Seite aufruft und in einem Abschnitt PHP prüfen, ob die Schaltfläche gedrückt wurde:

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

Sie können PHP nicht aufrufen, indem Sie in HTML auf eine Schaltfläche klicken. Da HTML auf der Clientseite ausgeführt wird, während PHP auf der Serverseite ausgeführt wird.

Entweder müssen Sie Ajax verwenden oder wie im folgenden Codefragment beschrieben vorgehen.

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

Sie müssen Ihre Formulardaten veröffentlichen und dann die entsprechende Schaltfläche auswählen, auf die geklickt wird.

15
Jason W

So zeigen Sie $ message in Ihrer Eingabe an:

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

Um functioncalling.php als externe Datei zu verwenden, müssen Sie diese irgendwie in Ihr HTML-Dokument einfügen.

12
user5253060

Versuche dies:

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

Sie können so in JavaScript oder jQuery Ajax schreiben und die Datei aufrufen

$('#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
Vipul Tank

Das Attribut onclick in HTML ruft JavaScript-Funktionen auf, nicht die Funktionen PHP.

4
linesarefuzzy

Verwenden Sie einen rekursiven Aufruf, bei dem sich die Formularaktion selbst aufruft. Fügen Sie dann PHP Code in derselben Form hinzu, um den Code abzufangen. In foo.php ruft Ihr Formular foo.php auf post auf

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

Sobald das Formular gesendet wurde, ruft es sich selbst auf (foo.php) und Sie können es über die PHP vordefinierte Variable $_SERVER abrufen, wie im folgenden Code gezeigt

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

Ich steckte darin fest und löste es mit einem versteckten Feld:

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

In value können Sie hinzufügen, was Sie hinzufügen möchten.

In test.php können Sie den Wert über $_Post[ID] abrufen.

3
Sanya Zahid

Hier ist ein Beispiel, das Sie verwenden könnten:

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