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?
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
}
?>
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.
HTML-i atribuut "onclick" kutsub JavaScript-funktsioone, mitte PHP-funktsioone.