Jeg har oprettet en side kaldet functioncalling.php, der indeholder to knapper, Submit og Insert. Som nybegynder i PHP vil jeg gerne teste, hvilken funktion der udføres, når der klikkes på en knap. Jeg ønsker at output skal komme på samme side. Så jeg har oprettet to funktioner, en for hver knap. Kildekoden til functioncalling.php er som følger:
<!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.";
}
?>
Problemet her er, at jeg ikke får noget output, efter at der er klikket på en af knapperne.
Hvor går jeg helt præcist galt?
Knapklik er klient side, mens PHP udføres server side, men du kan opnå dette ved at bruge Ajax:
$('.button').click(function() {
$.ajax({
type: "POST",
url: "some.php",
data: { name: "John" }
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
});
I din PHP-fil:
<?php
function abc($name){
// Your code here
}
?>
Du kan ikke kalde PHP-funktioner som f.eks. at klikke på en knap fra HTML. HTML er nemlig på klientsiden, mens PHP kører på serversiden.
Enten skal du bruge Ajax eller gøre det som i kodestumpen nedenfor.
<?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.";
}
?>.
Du skal sende dine formulardata og derefter kontrollere, om der er klikket på den relevante knap.
Attributten onclick
i HTML kalder JavaScript-funktioner, ikke PHP-funktioner.