Вы находитесь на странице: 1из 3

Gestionar múltiples presenta en un único formulario con PHP

 34

Para llevar: formulario de datos de procesamiento en PHP es mucho más simple que la mayoría de otros lenguajes de
programación Web.Esta simplicidad y facilidad de uso permite hacer algunas cosas bastante compleja con las formas,
incluyendo el manejo de múltiples botones de envío de la misma forma.

los datos de procesamiento de formularios en PHP es mucho más simple que en la mayoría de otros lenguajes de programación web, un hecho que
está, sin duda, ya es consciente de si usted ha estado utilizando el lenguaje de un tiempo. Esta simplicidad y facilidad de uso permite hacer algunas
cosas bastante compleja con las formas ... incluyendo el tema del debate de hoy, manejo de las diferentes acciones a través de múltiples botones de
presentar en la misma forma.

¿Por qué presenta múltiples?


Antes de empezar, sin embargo, permítanme responder a la pregunta obvia: Como la mayoría de las formas son perfectamente felices con un solo botón
enviar, ¿por qué alguien alguna vez tiene dos (o más)?
La mejor manera de explicar esta necesidad es con un ejemplo real del último proyecto que trabajé. En ese proyecto, que tuvo la tarea de construir un
sistema de inventario de la colección de libros de préstamo. Los títulos de los libros se almacenan todas en una base de datos, y los administradores
pueden utilizar una interfaz basada en navegador para ver el registro de cualquier libro y luego realice una de las cuatro acciones en ese disco: visita a
un miembro, su entrada de un miembro, la marca como desaparecidas, y la marca tal como se vende.
Todas estas actividades se manejan a través de un formulario único, que los botones correspondientes a las acciones anteriores. Dependiendo de qué
botón se hizo clic, los datos introducidos en el formulario se procesan de manera diferente (check in / out estaba relacionado con registro de socios y de
la marca como falta o vendido actualizado las tablas de inventario). Desde una forma sólo puede tener una sola acción, el mismo script PHP tuvo que
manejar las cuatro tareas, mediante la identificación de qué botón ha sido pulsado y ejecución de la rama de código apropiado. Así, surgió la necesidad
de una sola forma llevar varios botones de enviar, y una secuencia de comandos de procesamiento de forma con la inteligencia para distinguir entre
cada uno.

Una forma de un solo botón


Voy a empezar con un ejemplo sencillo, una forma única con un único botón de envío para garantizar que está claro en lo básico y para proporcionar
una base para el ejemplo más complejo. He aquí una forma:
<html> un solo botón de formulario </ head>
<body>

action="processor.php" <form method="POST"> Introduzca un número: <input type="text" nombre="nombre" size="3"> <br>
<input type="submit" name="submit"> </ form>

</ Body>
</ HTML>
Y aquí está la secuencia de comandos processor.php que se invoca en la presentación:
<? Php

/ / Cheque para la presentación


/ / Recuperar el valor de los datos publicados
if ($ ['submit'] _POST)
{
    echo "Ha introducido el número". $ ['Cantidad'] _POST;}

?>
Cuando se envía un formulario a un script PHP, PHP crea automáticamente un especial de $ _POST o $ _GET matriz asociativa, según el método de
presentación se utilizó (Voy a publicar asumir a lo largo de este tutorial). Los valores introducidos en los campos del formulario de entrada se convierten
automáticamente a los pares de clave y valor en esta matriz y, a continuación se puede acceder usando notación de arreglos regulares.
Preste especial atención a cómo el botón de envío se maneja en el guión anterior.Cuando se envía el formulario, el botón de envío se convierte en un
elemento de la matriz $ _POST, con una clave correspondiente a su "nombre". Esto es claramente visible mediante la adición de la línea:
print_r ($ _POST);
hasta el final de la secuencia de comandos de PHP anteriores. Usted puede mirar dentro de la matriz y ver claramente la correspondencia entre los
controles de formulario y sus representaciones PHP.
Ahora echemos un vistazo a cómo manejar los botones múltiples formas .

Ramificación con if / else


Ahora vamos a hacer las cosas un poco más complicado por la adición de un segundo botón de enviar a la forma:
<html> multi-botón de formulario </ head>
<body>

action="processor.php" <form method="POST"> Introduzca un número: <input type="text" nombre="nombre" size="3"> <br> 
<input type="submit" name="add" value="Add 10"> 
name="subtract" <input type="submit" value="Subtract 10"> </ form>

</ Body>
</ HTML>
Dado que ambos botones de envío invocará el mismo procesador de PHP forma, ese guión PHP debe ser revisada para que "sabe" que una se ha
hecho clic para que pueda responder de manera apropiada.
Puesto que usted ya sabe que el botón de envío aparece en el array $ _POST PHP y se afina por su atributo "name", es muy sencillo (1) dar a cada
botón de envío en la forma un nombre único y (2) escribir un simple "si "prueba en la parte superior del procesador de PHP para ver cuál de las dos
teclas aparece en la matriz $ _POST y la rama de código de forma apropiada. Eso es exactamente lo siguiente que hace el script:
<? Php

/ / Comprobar qué botón se hizo clic


/ / Realizar el cálculo
if ($ _POST ['agregar'])
{
    echo $ ['cantidad'] _POST. "+ 10 =". (['Cantidad'] $ _POST 10);} else if ($ ['restar'] _POST) {
    echo $ ['cantidad'] _POST. "- 10 =". (['Cantidad'] $ _POST -10);}

?>
Si usted tiene un montón de estima, una buena idea es utilizar un modificador / case para manejar el código de diferentes ramas de manera más
eficiente.

Ramificación con interruptor / caja


En el ejemplo anterior, que distingue entre los botones utilizando diferentes atributos nombre para el botones de envío en el formulario. Una alternativa
es dar a todos los botones de enviar el mismo nombre, pero diferentes valores:
<html> multi-botón con el interruptor de / caja </ head>
<body>

action="processor.php" <form method="POST"> Introduzca un número: name="number_1" <input type="text" size="3"> <br>
Introduzca otro número: <input type = "text "name =" número_2 "size =" 3 "> <br> 
<input type="submit" name="calculate" value="add"> 
<input type="submit" name="calculate" value="subtract"> 
<input type="submit" name="calculate" value="multiply"> </ form>

</ Body>
</ HTML>
La secuencia de comandos de procesamiento tiene que comprobar el valor de '] el elemento $ _POST [' calcular, y la rama de código de forma
apropiada. La forma más eficiente de hacerlo es con un interruptor de los casos la declaración de la siguiente manera:
<? Php

/ / Rama sobre la base de "calcular" el valor 


switch ($ ['calcular'] _POST) {
      / / Si el cálculo => Añadir
      caso de 'añadir':
            echo $ ['número_1'] _POST. "+". $ ['Número_2'] _POST."=". ($ _POST ['Número_1']+$_ POST [' número_2 ']);
            break;

      / / Si el cálculo => restar


      caso "restar":
            echo $ ['número_1'] _POST. "-". $ ['Número_2'] _POST."=". ($ _POST ['Número_1']-$_ POST [' número_2 ']);
            break;

      / / Si el cálculo => se multiplican


      caso de 'multiplicar':
            echo $ ['número_1'] _POST. "X". $ ['Número_2'] _POST."=". ($ _POST ['Número_1']*$_ POST [' número_2 ']);
            break;
}

?>
Dependiendo de qué botón se hizo clic, el valor correspondiente se pasa a la secuencia de comandos de transformación y el correspondiente "caso" de
bloque se invoca. Si usted tiene un gran número de botones de envío para hacer frente a este enfoque es más fácil de leer y comprender que varios if-
else bloques.
Pero ¿qué pasa con el caso de que usted tiene botones gráficos presente en lugar de basado en el texto ?

Con los botones de envío gráfico


Una torcedura de menor importancia en la historia viene si se utiliza un gráfico de botón de envío, como en la forma simple siguiente:
<html> gráfica botón "Enviar" </ head>
<body>

<form action="processor.php" method="POST"> Buscar: <input type="text" name="q"> 


<input type="image" name="go" src="/images/go.gif"> </ form>

</ Body>
</ HTML>
Cuando este formulario se envía a PHP para su procesamiento, mira lo que el array $ _POST contiene:
Array
(
    [Q] => urraca
    [Go_x] => 13
    [Go_y] => 13
)
Debido a que es un botón gráfico, PHP realmente acompaña el ratón coordenadas del clic del ratón y crea dos elementos de la matriz resultado para
almacenar las coordenadas. Los elementos se nombran button_name] _x [ y [button_name] _yrespectivamente.
¿Por qué es importante esto? Bueno, si había estado utilizando un si () prueba clave en el control de presentar el "nombre" la prueba de que han
fracasado porque en lugar de crear un solo elemento de acceso a través de $] _POST ['ir', PHP realmente creado dos elementos con nombre $ _POST
['go_x'] y $] _POST ['go_y' , respectivamente.Tome nota de esto para futuras referencias, ya que podría ahorrar un poco de tiempo cuando las cosas no
funcionan como se esperaba.
Así que ahora, ¿qué sucede si tiene varios botones gráficos presente en su formulario:
<html> múltiples gráficos botones de envío </ head>

<body>

action="processor.php" <form method="POST"> Introduzca el número de parte: <input type="text" name="part"> <br> 
<input type="image" name="view" src="/images/view.gif"> 
<input type="image" name="edit" src="/images/edit.gif"> 
<input type="image" name="delete" src="/images/delete.gif"> 
<input type="image" name="order" src="/images/order.gif"> </ form>
</ Body>
</ HTML>
Su script PHP tendría que contener múltiples ramas, algo como esto:
<? Php

if (['view_x'] $ _POST) {
      / / Código para ver el registro
} Else if (['edit_x'] $ _POST) {
      / / Código para editar registro
} Else if (['delete_x'] $ _POST) {
      / / Código para eliminar el registro
} Else if (['order_x'] $ _POST) {
      / / Código para realizar un pedido
}

?>
Por último, he aquí un ejemplo de la vida real para atarlo todo. Este ejemplo consta de un formulario generado dinámicamente con una lista de
direcciones de correo-e de la libreta de direcciones de un usuario. El usuario puede seleccionar una o más direcciones de esta lista y luego agregarlos a
una lista blanca o lista negra a; (s) también puede eliminar de la libreta de direcciones. El formulario contiene tres botones de acción que corresponde a
estas tres tareas. Echa un vistazo a una lista .
Tenga en cuenta que, en este caso, el botones de envío se nombran como elementos de la matriz PHP, con la clave que representa la acción. Cuando
se envía el formulario, este esquema de nombres provocará una serie de elementos individuales que se creará dentro de la matriz $ _POST, lo que
puede ser utilizado para identificar la acción y ejecutar el código de la agencia apropiada utilizando un caso sentencia switch, como se puede ver
en venta B .

Вам также может понравиться