Comment appeler une fonction PHP sur le clic d'un bouton
Je suis une recrue en PHP et je viens de commencer à apprendre les bases de cette langue.
J'ai créé une page appelée functioncalling.php qui contient deux boutons, soumettre et insérer. En tant que débutant en PHP, je veux tester quelle fonction est exécutée lorsqu'un bouton est cliqué. Je veux que la sortie Vienne sur la même page. J'ai donc créé deux fonctions, une pour chaque bouton. Le code source pour functioncalling.php est comme suit:
<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.";
}
?>
Le problème ici est que je ne obtenez une sortie après avoir cliqué sur l'un des boutons.
Quelqu'un peut-il me dire exactement où je vais mal? Les réponses au plus tôt seront très appréciées. D'avance, merci.
11 réponses
Cliquez sur le Bouton est client side
alors que PHP est server side
, mais vous pouvez y parvenir en utilisant ajax
$('.button').click(function() {
$.ajax({
type: "POST",
url: "some.php",
data: { name: "John" }
}).done(function( msg ) {
alert( "Data Saved: " + msg );
});
});
Dans votre fichier php:
<?php
function abc($name){
//your code here
}
?>
Oui, vous avez besoin d'ajax ici. Veuillez vous référer au code ci-dessous pour plus de détails.
Changer votre balise comme ceci
<input type="submit" class="button" name="insert" value="insert" />
<input type="submit" class="button" name="select" value="select" />
JQuery:-
$(document).ready(function(){
$('.button').click(function(){
var clickBtnValue = $(this).val();
var ajaxurl = 'ajax.php',
data = {'action': clickBtnValue};
$.post(ajaxurl, data, function (response) {
// Response div goes here.
alert("action performed successfully");
});
});
});
À ajax.php
<?php
if (isset($_POST['action'])) {
switch ($_POST['action']) {
case 'insert':
insert();
break;
case 'select':
select();
break;
}
}
function select() {
echo "The select function is called.";
exit;
}
function insert() {
echo "The insert function is called.";
exit;
}
?>
Vous devriez faire appeler le bouton sur la même page et dans une section PHP vérifier si le bouton a été pressé:
HTML:
<form action="theSamePage.php" method="post">
<input type="submit" name="someAction" value="GO" />
</form>
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['someAction']))
{
func();
}
function func()
{
// do stuff
}
?>
Vous ne pouvez pas appeler des fonctions php comme cliquer sur un bouton depuis HTML. parce que HTML est côté client tandis que PHP s'exécute côté serveur.
Vous devez utiliser de L'Ajax ou le faire comme dans l'extrait de code ci-dessous.
<?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.";
}
?>.
Vous devez publier vos données de formulaire, puis vérifier le bouton approprié qui est cliqué.
Pour afficher $message dans votre entrée:
<?php
if(isset($_POST['insert'])){
$message= "The insert function is called.";
}
if(isset($_POST['select'])){
$message="The select function is called.";
}
?>
<form method="post">
<input type="text" name="txt" value="<?php if(isset($message)){ echo $message;}?>" >
<input type="submit" name="insert" value="insert">
<input type="submit" name="select" value="select" >
</form>
Pour utiliser functioncalling.php comme fichier externe que vous avez pour l'inclure d'une manière ou d'une autre dans votre document html
Essayez ceci:
if($_POST['select'] and $_SERVER['REQUEST_METHOD'] == "POST"){
select();
}
if($_POST['insert'] and $_SERVER['REQUEST_METHOD'] == "POST"){
insert();
}
Vous pouvez écrire comme ceci en javascript ou jQuery ajax et appeler le fichier
$('#btn').click(function(){
$.ajax({
url:'test.php?call=true',
type:'GET',
success:function(data){
body.append(data);
}
});
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<form method='get' >
<input type="button" id="btn" value="click">
</form>
<?php
if(isset($_GET['call'])){
function anyfunction(){
echo "added";
// your funtion code
}
}
?>
L'attribut onclick
en HTML appelle des fonctions Javascript, pas des fonctions PHP.
J'étais coincé dans ceci et je l'ai résolu avec le champ caché
<form method="post" action="test.php">
<input type="hidden" name="ID" value"">
</form>
, vous pouvez ajouter ce que vous voulez ajouter
Dans le test.php vous pouvez récupérer la valeur via $_Post [ID]
Voici un exemple que vous pourriez utiliser:
<html>
<body>
<form action="btnclick.php" method="get">
<input type="submit" name="on" value="on">
<input type="submit" name="off" value="off">
</form>
</body>
</html>
<?php
if(isset($_GET['on'])) {
onFunc();
}
if(isset($_GET['off'])) {
offFunc();
}
function onFunc(){
echo "Button on Clicked";
}
function offFunc(){
echo "Button off clicked";
}
?>
Utilisez un appel récursif où l'action de formulaire s'appelle elle-même. Ensuite, ajoutez du code PHP sous la même forme pour l'attraper. Dans foo.php
votre formulaire d'appel de foo.php
sur post
<html>
<body>
<form action="foo.php" method="post">
Une fois le formulaire soumis, il s'appellera (foo.php
) et vous pourrez l'attraper via la variable prédéfinie PHP {[6] } comme indiqué dans le code ci-dessous
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo "caught post";
}
?>
</form>
</body>
</html>