Am creat o pagină numită functioncalling.php care conține două butoane, Submit și Insert. Fiind începător în PHP, vreau să testez ce funcție este executată atunci când un buton este apăsat. Vreau ca rezultatul să apară pe aceeași pagină. Așa că am creat două funcții, câte una pentru fiecare buton. Codul sursă pentru functioncalling.php este următorul:
<!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.";
}
?>
Problema aici este că nu primesc nici un rezultat după ce oricare dintre butoane este apăsat.
Unde anume greșesc?
Clicurile pe butoane sunt lateral client, în timp ce PHP este executat lateral server, dar puteți realiza acest lucru folosind Ajax:
$('.button').click(function() {
$.ajax({
type: "POST",
url: "some.php",
data: { name: "John" }
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
});
În fișierul PHP:
<?php
function abc($name){
// Your code here
}
?>
Nu puteți apela funcții PHP, cum ar fi apăsarea unui buton, din HTML. Deoarece HTML se află pe partea clientului, în timp ce PHP rulează pe partea serverului.
Ori trebuie să folosiți Ajax, ori să procedați ca în fragmentul de cod de mai jos.
<?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.";
}
?>.
Trebuie să afișați datele din formular și apoi să verificați dacă s-a făcut clic pe butonul corespunzător.
Atributul onclick
din HTML apelează funcții JavaScript, nu funcții PHP.