Enviar formulario al seleccionar una opción

Aplicar lo que vamos a explicar a continuación podría ser de utilidad aplicarlo cuando queremos implementar un sistema de encuesta y tenemos una pregunta con sus x opciones. Al seleccionar una de las opciones, se enviará el formulario sin necesidad de pulsar un botón.

En el ejemplo que vamos a ilustrar vamos a mostrar simplemente 2 opciones donde el usuario solo elegirá a que sexo pertenece.

Entonces, en el <body> deberíamos tener un formulario como el siguiente:

<form name="input" action="index.php" method="post">
    <input type="radio" name="sex" value="Masculino" onchange="this.form.submit()"/> Masculino<br />
    <input type="radio" name="sex" value="Femenino" onchange="this.form.submit()" /> Femenino<br />
</form>

Tenemos 2 inputs tipo «radio» con el mismo nombre, valor distinto y que al cambiar su valor el formulario se envía al servidor.

Tras enviar el formulario necesitaremos recoger los datos con php.

<?php
if (isset($_POST['sex'])) {
    echo '<p>Has elegido el sexo '.$_POST['sex'].'</p>';
}
?>

En este caso simplemente imprimimos por pantalla la opción seleccionada en el caso de que la variable $_POST[‘sex’] exista.

Ver el ejemplo en funcionamiento

Autor
Escrito por Jose Aguilar - Director ejecutivo y tecnológico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.
Te ha servido? Valora esta entrada!
(18 votos, promedio: 4 de 5)
Comparte en las redes sociales
¿Buscas trabajo de programador?

9 respuestas a “Enviar formulario al seleccionar una opción”

  1. lcbarret dice:

    que buen aporte muchas gracias

  2. PHP | Annotary dice:

    […] Publisher More from Patrick Hammer: JQuery Web TIEMPO ASCENSION Sort Share http://www.jose-aguilar.com       0 minutes […]

  3. Mario Campos dice:

    Estimado José,

    Exacto, ese era el problema. Sinembargo, lo que veo es una solución javascript que manda a guardar el formulario y después lo trae por POST. Lo que yo ando buscando es una solucion en Ajax que guarde la variable en POST o GET del radiobutton, sin tener que enviar los datos por submit y sin necesidad de recargar la página web, dado que lo que tengo es un formulario interno dentro de un formulario contenedor. Yo mandaré a guardar todos los datos del formulario contenedor hasta el final del mismo.

    Por eso siempre te preguntaba por la función Ajax que yo no la veía en el archivo index.

    Me puedes ayudar please.

    Muchas gracias por todo.

  4. Jose Aguilar dice:

    Hola Mario,

    he estado observando el código fuente de tu ejemplo y veo varios errores que deberías revisar:

    1- El action del formulario debería ir a index.php o al nombre del archivo donde se vaya a ejecutar.

    2- La extensión del archivo debe ser php. No funcionará en un index.html.

    3- En la opción fenenina debes separar el atributo onchange

    Prueba y me comentas,
    Saludos

  5. Mario Campos dice:

    Hola Jose,

    Lo he probado y nada, puedes revisarlo en http://elchatel.com/pruebaajax,
    el código que tengo es el de tu ejemplo, pero yo no veo la llamada de la función Ajax, ayúdame te lo agradecería mucho.
    =================
    <html>
    <head>
    </head>
    <body>
    <form name="input" action="" method="post">
    <input type="radio" name="sex" value="Masculino" onchange="this.form.submit()"/> Masculino<br />
    <input type="radio" name="sex" value="Femenino"onchange="this.form.submit()" /> Femenino<br />

    </form>
    <?php
    if (isset($_POST[‘sex’])) {
    echo ‘<p>Has elegido el sexo ‘.$_POST[‘sex’].'</p>’;
    }
    ?>
    </body>
    </html>

  6. Mario Campos dice:

    Hola Jose,

    Lo he probado y nada, puedes revisarlo en http://elchatel.com/pruebaajax,
    el código que tengo es el de tu ejemplo, pero yo no veo la llamada de la función Ajax, ayúdame te lo agradecería mucho.
    =================

    Masculino
    Femenino

    <?php
    if (isset($_POST['sex'])) {
    echo 'Has elegido el sexo ‘.$_POST[‘sex’].»;
    }
    ?>

  7. Mario Campos dice:

    Hola amigo,
    En este ejemplo de "Enviar formulario al seleccionar una opción", yo copie el código exacto en un archivo index, pero no me funcionó. Igual en éste ejemplo no veo la llamada a la función de Ajax en el código que pusiste.
    Tienes el archivo con el código completo por favor?

    Saludos

    Mario Campos

    • Jose Aguilar dice:

      Pues no se que puede estar pasando en tu index.php, podría ser que algo externo a este artículo afecte al código.

      Intenta poner tanto el código php como el html en el body de tu index.php.

      Saludos

  8. Alysia Sirico dice:

    Absolutely pent subject material, Really enjoyed examining.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.