Saltar al contenido

Llamar a una función PHP desde un formulario HTML en el mismo archivo

Solución:

Esto no se puede hacer de la manera de la que estás hablando. PHP es lado del servidor tiempo la forma existe en el lado del cliente. Deberá considerar el uso de JavaScript y / o Ajax si no desea actualizar la página.

test.php

<form action="javascript:void(0);" method="post">
    <input type="text" name="user" placeholder="enter a text" />
    <input type="submit" value="submit" />
</form>

<script type="text/javascript">
    $("form").submit(function(){
        var str = $(this).serialize();
        $.ajax('getResult.php', str, function(result){
            alert(result); // The result variable will contain any text echoed by getResult.php
        }
        return(false);
    });
</script>

Llamará getResult.php y pasarle el formulario serializado para que PHP pueda leer esos valores. Cualquier cosa getResult.php Los ecos volverán a la función de JavaScript en el result variable de nuevo en test.php y (en este caso) se muestra en un cuadro de alerta.

getResult.php

<?php
    echo "The name you typed is: " . $_REQUEST['user'];
?>

NOTA

Este ejemplo usa jQuery, un contenedor de JavaScript de terceros. Le sugiero que primero desarrolle una mejor comprensión de cómo estas tecnologías web funcionan juntas antes de complicarse aún más las cosas.

Tiene un gran malentendido sobre cómo funciona la web.

Básicamente, las cosas suceden de esta manera:

  • Solicitudes del usuario (bueno, el navegador) test.php desde tu servidor
  • En el servidor test.php se ejecuta, todo lo que hay dentro se ejecuta y una página HTML resultante (que incluye su formulario) se enviará de vuelta al navegador
  • El navegador muestra el formulario, el usuario puede interactuar con él.
  • El usuario envía el formulario (a la URL definida en action, que es el mismo archivo en este caso), por lo que todo comienza desde el principio (excepto que también se enviarán los datos del formulario). Nueva solicitud al servidor, PHP se ejecuta, etc. Eso significa que la página se actualizará.

Estabas intentando invocar test() de tu onclick atributo. Esta técnica se utiliza para ejecutar un lado del cliente script, que en la mayoría de los casos Javascript (el código se ejecutará en el navegador del usuario). Eso no tiene nada que ver con PHP, cual es lado del servidor, reside en su servidor y solo se ejecutará si llega una solicitud. Por ejemplo, lea Codificación del lado del cliente versus Codificación del lado del servidor.

Si desea hacer algo sin provocar una actualización de la página, debe usar Javascript para enviar una solicitud en segundo plano al servidor, dejar que PHP haga lo que debe hacer y recibir una respuesta. Esta técnica se llama básicamente AJAX, y puedes encontrar muchos recursos geniales usando Google (como el increíble tutorial de Mozilla).

Sin recargar, usar HTML y PHP solo no es posible, pero esto puede ser muy similar a lo que quieres, pero tienes que recargar:

<?php
    function test() {
        echo $_POST["user"];
    }

    if (isset($_POST[])) { // If it is the first time, it does nothing
        test();
    }
?>

<form action="test.php" method="post">
    <input type="text" name="user" placeholder="enter a text" />
    <input type="submit" value="submit" onclick="test()" />
</form>
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *