Dos botones de envío en un formulario

Resuelto Alex asked hace 15 años • 23 respuestas

Tengo dos botones de envío en un formulario. ¿Cómo puedo determinar cuál fue afectado por el servidor?

Alex avatar Feb 14 '09 04:02 Alex
Aceptado

Solución 1:
asigne a cada entrada un valor diferente y mantenga el mismo nombre:

<input type="submit" name="action" value="Update" />
<input type="submit" name="action" value="Delete" />

Luego, en el código, verifique cuál se activó:

if ($_POST['action'] == 'Update') {
    //action for update here
} else if ($_POST['action'] == 'Delete') {
    //action for delete
} else {
    //invalid action!
}

El problema con esto es que vincula su lógica al texto visible para el usuario dentro de la entrada.


Solución 2:
Asigne a cada uno un nombre único y verifique en $_POST la existencia de esa entrada:

<input type="submit" name="update_button" value="Update" />
<input type="submit" name="delete_button" value="Delete" />

Y en el código:

if (isset($_POST['update_button'])) {
    //update action
} else if (isset($_POST['delete_button'])) {
    //delete action
} else {
    //no button pressed
}
Parrots avatar Feb 13 '2009 21:02 Parrots

Si le da un nombre a cada uno, el que hizo clic se enviará como cualquier otra entrada.

<input type="submit" name="button_1" value="Click me">
Greg avatar Feb 13 '2009 21:02 Greg