it-swarm-es.com

Cómo llamar a un PHP Función en el clic de un botón

Soy un novato en PHP y acabo de comenzar a aprender lo básico de este idioma.

He creado una página llamada functioncalling.php que contiene dos botones, Enviar e Insertar. Como principiante en PHP, quiero probar qué función se ejecuta cuando se hace clic en un botón. Quiero que la salida venga en la misma página. Así que creé dos funciones, una para cada botón. El código fuente de functioncalling.php es el siguiente:

<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.";
}
?>

El problema aquí es que no obtengo ningún resultado después de hacer clic en cualquiera de los botones.

¿Alguien por favor me puede decir a dónde exactamente me voy mal? Respuestas a la mayor brevedad serán muy apreciadas. Gracias de antemano.

122
Razor

El clic del botón es client side mientras que PHP es server side, pero puede lograrlo usando ajax

 $('.button').click(function() {

 $.ajax({
  type: "POST",
  url: "some.php",
  data: { name: "John" }
}).done(function( msg ) {
  alert( "Data Saved: " + msg );
});    

    });

En tu archivo php:

<?php
function abc($name){
//your code here
}
 ?>
54
Moeed Farooqui

Si necesitas ajax aquí. Por favor, consulte el código de abajo para más detalles.

Cambia tu marca como esta

<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");
        });
    });

});

En 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;
}
?>
69
Roopendra

Debe hacer que el botón llame a la misma página y en una sección PHP verifique si se presionó el botón

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     
    }
?>
26
DavidS

no puedes llamar a funciones php como hacer clic en un botón desde HTML. porque HTML está en el lado del cliente mientras que PHP se ejecuta en el lado del servidor.

O necesita usar Ajax o hacerlo como en el fragmento de código a continuación.

<?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.";
    }

?>.

Debe publicar los datos de su formulario y, a continuación, verificar que se haga clic en el botón correspondiente.

15
Jason W

Para mostrar $ mensaje en su entrada:

    <?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>

Para usar functioncalling.php como archivo externo, debe incluirlo de alguna manera en su documento html

12
user5253060

Prueba esto:

if($_POST['select'] and $_SERVER['REQUEST_METHOD'] == "POST"){
    select();
}
if($_POST['insert'] and $_SERVER['REQUEST_METHOD'] == "POST"){
    insert();
}
8
user2399308

Puedes escribir así en javascript o jquery ajax y llamar al archivo

$('#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
Vipul Tank

Use una llamada recursiva donde la acción de formulario se llama a sí misma. Luego agregue PHP código en la misma forma para atraparlo. En foo.php su formulario llamará foo.php en post

<html>
    <body>
        <form action="foo.php" method="post">

Una vez que se haya enviado el formulario, se llamará a sí mismo (foo.php) y puede capturarlo a través de la PHP variable predefinida $_SERVER como se muestra en el siguiente código

<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        echo "caught post";
    }
?>
        </form>
    </body>
</html>
3
bradleybrentmeyer

Estaba atrapado en esto y lo resolví con el campo Oculto.

<form method="post" action="test.php">
<input type="hidden" name="ID" value"">
</form>

en valor puede agregar lo que quiera agregar

en test.php puede recuperar valor a través de $ _Post [ID]

3
Sanya Zahid

El atributo onclick en HTML llama a las funciones de Javascript, no a las funciones PHP.

3
linesarefuzzy

Aquí hay un ejemplo que podrías usar:

<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
Sagar Mali