2012-08-13 16 views
23

Actualmente, tengo un formulario HTML donde el usuario ingresará un título y texto para un artículo. Cuando llega el momento de enviar, se les presentan dos botones. Uno es 'guardar' su artículo sin publicarlo, y el otro es 'publicar' el artículo y hacerlo público.¿Cómo uso dos botones de envío y diferencio entre cuál se utilizó para enviar el formulario?

Estoy usando PHP, y estoy tratando de averiguar cómo decir qué botón se utilizó, para almacenar el valor correspondiente correspondiente en la base de datos.

<td> 
<input type="submit" class="noborder" id="save" value="" alt="Save" tabindex="4" /> 
</td> 
<td> 
<input type="submit" class="noborder" id="publish" value="" alt="Publish" tabindex="5" /> 
</td> 

probablemente debería haber mencionado esto antes, pero no puede asignar los valores botones ya que el botón es una imagen, por lo que el texto se presentaba por encima de ella.

Respuesta

48

Dé a cada input un atributo name. Solo se enviará al servidor el atributo que hizo clic en input.

<input type="submit" name="publish" value="Publish"> 
<input type="submit" name="save" value="Save"> 

Y luego

<?php 
    if (isset($_POST['publish'])) { 
     # Publish-button was clicked 
    } 
    elseif (isset($_POST['save'])) { 
     # Save-button was clicked 
    } 
?> 

Editar: Se ha cambiado value atributos a alt. Sin embargo, no estoy seguro si este es el mejor enfoque para los botones de imagen, ¿alguna razón en particular por la que no desea usar input[type=image]?

Editar: Como esto sigue recibiendo votos favorables Me adelanté y cambié el extraño código alt/value a las entradas de envío real. Creo que la pregunta original pedía algún tipo de botones de imagen, pero hay formas mucho mejores de lograr eso hoy en día en lugar de usar input[type=image].

+0

Estaba probando este método con! Empty(). Ahora que lo mencionas, isset() probablemente funcione. EDITAR: Sí funciona. Gracias por las sugerencias! – fvgs

+0

No recuerdo exactamente por qué opté por usar botones en lugar de imágenes, sin embargo, creo que fue porque no pude aplicar un elemento emergente al envío de la imagen. – fvgs

+0

Solución perfectamente simple para utilizar múltiples botones de envío. – commnux

7

nombre y los valores a los que Dar botones de envío como:

<td> 
    <input type="submit" name='mybutton' class="noborder" id="save" value="save" alt="Save" tabindex="4" /> 
    </td> 
    <td> 
    <input type="submit" name='mybutton' class="noborder" id="publish" value="publish" alt="Publish" tabindex="5" /> 
    </td> 

y luego en el script php se puede comprobar

if($_POST['mybutton'] == 'save') 
{ 
    ///do save processing 
} 
elseif($_POST['mybutton'] == 'publish') 
{ 
    ///do publish processing here 
} 
+1

No puedo dar los valores de los botones porque son imágenes. Si asigno valores, ese texto aparecerá en la parte superior de mi imagen. – fvgs

+1

Si ese es el caso, entonces podría tener 2 bussonts diferentes con diferentes nombres, como ha sugerido @powerbuoy. Luego revisa el script php que botón ha sido enviado. –

+0

No creo que tampoco funcione, dijo que no puede poner valores en los botones ya que son imagen. – WatsMyName

1

Se puede utilizar de la siguiente manera,

<td> 

<input type="submit" name="save" class="noborder" id="save" value="Save" alt="Save" 
tabindex="4" /> 

</td> 

<td> 

<input type="submit" name="publish" class="noborder" id="publish" value="Publish" 
alt="Publish" tabindex="5" /> 

</td> 

Y en PHP,

<?php 
if($_POST['save']) 
{ 
    //Save Code 
} 
else if($_POST['publish']) 
{ 
    //Publish Code 
} 
?> 
2

Si no puede poner valor a los botones. Tengo solo una solución aproximada. Pon un campo oculto Y cuando se hace clic en uno de los botones antes de enviar, rellene el valor del campo oculto con, por ejemplo, 1 cuando se hace clic en el primer botón y 2 si se hace clic en el segundo. y en someter verificación de página para el valor de este campo oculto para determinar en cuál se hace clic.

Cuestiones relacionadas