Έχω δημιουργήσει μια σελίδα με όνομα functioncalling.php που περιέχει δύο κουμπιά, Submit και Insert. Ως αρχάριος στην PHP, θέλω να ελέγξω ποια συνάρτηση εκτελείται όταν γίνεται κλικ σε ένα κουμπί. Θέλω η έξοδος να έρχεται στην ίδια σελίδα. Έτσι δημιούργησα δύο συναρτήσεις, μία για κάθε κουμπί. Ο πηγαίος κώδικας για το functioncalling.php έχει ως εξής:
<!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.";
}
?>
Το πρόβλημα εδώ είναι ότι δεν λαμβάνω καμία έξοδο μετά το πάτημα οποιουδήποτε από τα κουμπιά.
Πού ακριβώς κάνω λάθος;
Τα κλικ των κουμπιών είναι στην πλευρά του πελάτη, ενώ η PHP εκτελείται στην πλευρά του διακομιστή, αλλά μπορείτε να το επιτύχετε αυτό χρησιμοποιώντας Ajax:
$('.button').click(function() {
$.ajax({
type: "POST",
url: "some.php",
data: { name: "John" }
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
});
Στο αρχείο PHP σας:
<?php
function abc($name){
// Your code here
}
?>
Δεν μπορείτε να καλέσετε λειτουργίες της PHP όπως το κλικ σε ένα κουμπί από την HTML. Επειδή η HTML βρίσκεται στην πλευρά του πελάτη, ενώ η PHP εκτελείται στην πλευρά του διακομιστή.
Είτε πρέπει να χρησιμοποιήσετε κάποιο Ajax είτε να το κάνετε όπως στο παρακάτω απόσπασμα κώδικα.
<?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.";
}
?>.
Πρέπει να δημοσιεύσετε τα δεδομένα της φόρμας σας και στη συνέχεια να ελέγξετε για το κατάλληλο κουμπί που έχει πατηθεί.
Το χαρακτηριστικό onclick
στην HTML καλεί συναρτήσεις JavaScript, όχι συναρτήσεις PHP.