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.

106
demandé sur BuddhistBeast 2013-12-23 10:47:19

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
}
 ?>
40
répondu Moeed Farooqui 2016-09-09 05:06:28

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;
}
?>
65
répondu Roopendra 2014-11-24 16:47:04

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     
    }
?>
18
répondu DavidS 2016-12-06 14:50:16

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é.

15
répondu Jason W 2013-12-23 06:55:22

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

12
répondu user5253060 2015-08-21 17:52:19

Essayez ceci:

if($_POST['select'] and $_SERVER['REQUEST_METHOD'] == "POST"){
    select();
}
if($_POST['insert'] and $_SERVER['REQUEST_METHOD'] == "POST"){
    insert();
}
7
répondu user2399308 2014-03-29 20:28:59

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

}
}
?>
7
répondu Vipul Tank 2015-12-30 07:39:59

L'attribut onclick en HTML appelle des fonctions Javascript, pas des fonctions PHP.

3
répondu linesarefuzzy 2013-12-23 06:56:33

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]

3
répondu Sanya Zahid 2016-03-18 12:21:40

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";
    }
?>
2
répondu Sagar Mali 2015-07-18 15:44:34

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>
2
répondu bradleybrentmeyer 2015-07-21 21:00:24