Tengo varios botones en mi página, pero no estoy seguro de cómo saber en cuál se hizo clic. Aquí está el marcado para mis dos botones:
<input type="submit" id="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" value="Delete" />
Tengo varios botones en mi página, pero no estoy seguro de cómo saber en cuál se hizo clic. Aquí está el marcado para mis dos botones:
<input type="submit" id="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" value="Delete" />
Respuestas:
Con un formulario HTML como:
<input type="submit" name="btnSubmit" value="Save Changes" />
<input type="submit" name="btnDelete" value="Delete" />
El código PHP a usar se vería así:
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Something posted
if (isset($_POST['btnDelete'])) {
// btnDelete
} else {
// Assume btnSubmit
}
}
Siempre debe asumir o por defecto que el primer botón de envío aparezca en el código fuente HTML del formulario . En la práctica, los distintos navegadores envían de forma fiable el nombre / valor de un botón de envío con los datos de la publicación cuando:
Existen otras formas de enviar un formulario y algunos navegadores / versiones deciden no enviar el nombre / valor de los botones de envío en algunas de estas situaciones. Por ejemplo, muchos usuarios envían formularios presionando la Entertecla cuando el cursor / foco está en un campo de texto. Los formularios también se pueden enviar a través de JavaScript, así como algunos métodos más oscuros.
Es importante prestar atención a este detalle; de lo contrario, puede frustrar a sus usuarios cuando envían un formulario, pero "no pasa nada" y sus datos se pierden, porque su código no detectó el envío de un formulario, porque usted no anticipó el hecho. que el nombre / valor de un botón de envío no se puede enviar con los datos de la publicación.
Además, el consejo anterior también debe usarse para formularios con un solo botón de envío porque siempre debe asumir un botón de envío predeterminado .
Soy consciente de que Internet está lleno de toneladas de tutoriales para el manejo de formularios, y casi todos ellos no hacen más que verificar el nombre y el valor de un botón de envío. ¡Pero, simplemente están equivocados!
En HTML:
<input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" name="btnDelete" value="Delete" />
En PHP:
if (isset($_POST["btnSubmit"])){
// "Save Changes" clicked
} else if (isset($_POST["btnDelete"])){
// "Delete" clicked
}
Todo lo que necesita para dar el atributo de nombre a cada botón. Y debe abordar cada pulsación de botón desde el script PHP. Pero tenga cuidado de darle a cada botón un nombre único. Porque el script PHP solo se ocupa del nombre la mayor parte del tiempo
<input type="submit" name="Submit_this" id="This" />