Un formulario dos botones de envío

Tengo dos formularios similares en un sitio que me gustaría fusionar en un solo formulario con dos botones de envío. Utilizan la mayor parte de los mismos datos.

El primer formulario usa GET para enviar los datos a otro servidor. El segundo formulario lo envía en un correo electrónico. Me gustaría recomendar encarecidamente a los usuarios del sitio que usen la opción uno antes de probar la opción dos.

Sé cómo hacer esto con javascript, pero no de una manera que se degrade bien. ¿Alguna otra forma de tener dos opciones de envío? ¿U otras ideas sobre cómo lograr esto? ¡Gracias!

preguntado el 27 de julio de 12 a las 21:07

Literalmente, puede usar dos botones de envío, con diferentes nombres o valores, y verificar la acción que desea realizar según las variables $_POST que coincidan con los botones que definió. -

¿Por qué no tener un botón de envío y luego un par de botones de radio para que el usuario elija? Luego procéselo en el lado del servidor. Dos botones de envío pueden resultar confusos para sus visitantes. -

Mucha gente sugiere usar un menú desplegable/radio dentro del formulario, así que creo que debería dar más detalles. El formulario es para una biblioteca. El primer formulario busca si la biblioteca tiene un artículo, el segundo formulario envía un correo electrónico a una bibliotecaria y le pide que lo ordene. La gente se ha saltado el primer formulario, por eso quiero fusionarlos. Mi plan era diseñar el primer botón de envío para que dijera algo como "Por favor, marque aquí antes de enviar su solicitud". Creo que la solución de Nikola debería funcionar para esto. -

3 Respuestas

Ciego de nieve proporcionó la buena solución, pero no puede determinar en qué botón se hizo clic.
Los botones deben tener nombres diferentes, no iguales.

Ejemplo:

<input type="submit" name="server" value="Server" />
<input type="submit" name="email" value="Email" />

<?php

if(isset($_GET['server']))
{
    // Send to another server
}
else if(isset($_GET['email']))
{
    // Send to email
}
else die("None of buttons was clicked.");

?>

Adicionalmente, si tienes un mismo código en ambas partes (servidor y correo electrónico), puedes hacer lo siguiente:

if(isset($_GET['server']) || isset($_GET['email']))
{
    // Do something common to both methods
    if(isset($_GET['server'])) 
    {
        // Send to server
    }
    else 
    {
        // Send to email
    }
}




La mejor solución, en mi opinión, es poner solo 1 botón de envío + un menú desplegable con el método para elegir.

<select name="sendMethod">
    <option value="" disabled>Choose sending method...</option>
    <option value="server">Send to another server</option>
    <option value="email">Send to e-mail</option>
</select>

Respondido 27 Jul 12, 22:07

Como todos dijeron, use la casilla de verificación o el botón de opción. Y configure el que usa GET como la opción predeterminada

Si no desea usar JavaScript, siempre puede obtener el valor y la casilla de verificación/radio y verificar la elección del usuario

Respondido 27 Jul 12, 22:07

Puede crear dos botones de envío y darles el mismo name pero diferente value.

<input type="submit" name="submit" value="Server">
<input type="submit" name="submit" value="Email">

Entonces puedes comprobar $_GET['submit'] or $_POST['submit'] (Dependiendo de form method) para ver qué envío se utilizó.

Respondido 27 Jul 12, 21:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.