Kuidas kutsuda PHP-funktsiooni nupule vajutamisel

Olen loonud lehe nimega functioncalling.php, mis sisaldab kahte nuppu, Submit ja Insert. Algaja PHP-ga, tahan testida, milline funktsioon käivitub, kui nupule vajutatakse. Ma tahan, et väljund tuleks samale lehele. Seega lõin kaks funktsiooni, ühe mõlema nupu jaoks. Funktsiooni functioncalling.php lähtekood on järgmine:

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

Probleem siin on see, et ma ei'ei saa mingit väljundit pärast ühegi nupu vajutamist.

Kus ma täpselt valesti lähen?

Lahendus

Nuppude klõpsamine on kliendi poolel, samas kui PHP-d täidetakse serveri poolel, kuid seda saab saavutada Ajax abil:

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

Sinu PHP-failis:

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

Te ei saa kutsuda PHP-funktsioone, nagu näiteks nupule klõpsamine HTML-ist. Sest HTML on kliendi poolel, samas kui PHP töötab serveri poolel.

Sa pead kas kasutama Ajaxi või tegema seda nagu alljärgnevas koodilõikes.

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

Sa pead postitama oma vormi andmed ja seejärel kontrollima, kas sobiv nupp on klõpsatud.

Kommentaarid (2)

HTML-i atribuut "onclick" kutsub JavaScript-funktsioone, mitte PHP-funktsioone.

Kommentaarid (0)