¿Cómo puedo tener un formulario con botones que sean submit y a la vez fotos?

Se ha presentado otra cuestión que no hemos podido arreglar.
Se trata de tener en un formulario 3 botones que sean submit, pero que sean imágenes también. Lo cierto es que hemos encontrado algún código que pone la imagen como enlace e invoca al método submit() del formulario, pero no hace nada, y necesitamos saber cual fue la imagen que apretó para hacer cosas (llevar a otra pag). No pueden ser enlaces solo las imágenes pues se necesita el valor de los checkbox seleccionados y eso solo se consigue procesando el form.
Como siempre tu ayuda nos sacara del enriedo!

1 respuesta

Respuesta
1
Se puede hacer de forma muy sencilla ya que tienes el botón imagen pulsado en $_POST['submit']. Siguiendo con el código de ejemplo de arriba, podéis realizar la siguiente modificación:
<?php
if ( isset($_POST['submit'] ) ) {
$botonPulsado = $_POST['submit'];
if ($botonPulsado == 'imagen1') {
echo "Se ha pulsado la primera imagen.";
} else{
if ($botonPulsado == 'imagen2') {
echo "Se ha pulsado la segunda imagen.";
} else {
echo "Se ha pulsado la tercera imagen.";
}
}
} else {
?>
<form name='formulario' method='post'>
<input type='checkbox' name='check[0]' value='1'> CheckBox 1 <br>
<input type='checkbox' name='check[1]' value='2'> CheckBox 2 <br>
<input type='checkbox' name='check[2]' value='3'> CheckBox 3<br>
<input type='checkbox' name='check[3]' value='4'> CheckBox 4 <br>
<input type="image" src="thumb.jpg" name=submit value='imagen1'>
<input type="image" src="thumb.jpg" name=submit value='imagen2'>
<input type="image" src="thumb.jpg" name=submit value='imagen3'>
</form>
<?php
}
?>
Y para acceder a los valores de los checkbox recuerda que podéis hacerlo según el primer ejemplo, con el array $check.
Si se ha marcado el checkbox 2 y 3, obtendreis que $check[0] esta sin definir, $check[1] = 2, $check[2] = 3 y $check[3] está sin definir. De esta forma sabeis qué checkbox han sindo seleccionada por los usuarios.
Te voy a poner un código que te muestra como se hace. Solo tienes que poner un campo del formulario de tipo imagen con el nombre submit. Luego recoges con $_POST['submit'] el valor que hayas puesto en ese campo imagen del formulario.
<?php
if ( isset($_POST['submit'] ) ) {
echo "Array con los elementos checkbox seleccionados: <br>";
$check = $_POST['check'];
print_r( $check );
} else {
?>
<form name='formulario' method='post'>
<input type='checkbox' name='check[0]' value='1'> CheckBox 1 <br>
<input type='checkbox' name='check[1]' value='2'> CheckBox 2 <br>
<input type='checkbox' name='check[2]' value='3'> CheckBox 3<br>
<input type='checkbox' name='check[3]' value='4'> CheckBox 4 <br>
<input type="image" src="thumb.jpg" name=submit value='imagen1'>
<input type="image" src="thumb.jpg" name=submit value='imagen2'>
<input type="image" src="thumb.jpg" name=submit value='imagen3'>
</form>
<?php
}
?>
Hola! El código esta entendible, lo único es que queremos que al ejecutar cualquiera de tres botones imágenes, haga algo distinto con los valores del check, y probando ese código no me determina cual botón presiono.
¿Se puede hacer de alguna manera?
Esperamos que si!
Gracias
Ay! Me vas a sacar corriendo!
¿Puede ser que tenga algo mal configurado en el php.ini? Pues ni tu código me funciona, es decir cuando pulso sobre algún botón no hace nada (el formulario tiene el action correspondiente y todo).
No se si tiene algo que ver, pero tengo Register Globals en On en php.ini, la cambie a off, reinicie el servidor y sigue igual. ¿Qué puede pasar?
Miles de disculpa, no me gusta estar preguntando a cada rato (se que igualmente lo hago)pero te agradezco enormemente tu voluntad de ayudarnos siempre
Ya he podido probar el código y he comprobado que no funciona correctamente con Internet Explorer, pero si con Firefox que es con lo que yo probaba.
El código correcto que funciona en los dos navegadores (y supongo que en cualquier otro) es el siguiente:
<?php
if (isset($_POST['submit1_x'])) {
echo "Se ha pulsado la primera imagen.";
} else {
if (isset($_POST['submit2_x'])) {
echo "Se ha pulsado la segunda imagen.";
} else {
if (isset($_POST['submit3_x'])) {
echo "Se ha pulsado la tercera imagen.";
} else {
?>
<form name='formulario' method='post'>
<input type='checkbox' name='check[0]' value='1'> CheckBox 1 <br>
<input type='checkbox' name='check[1]' value='2'> CheckBox 2 <br>
<input type='checkbox' name='check[2]' value='3'> CheckBox 3<br>
<input type='checkbox' name='check[3]' value='4'> CheckBox 4 <br>
<input type="image" src="thumb.jpg" name='submit1'>
<input type="image" src="thumb.jpg" name='submit2'>
<input type="image" src="thumb.jpg" name='submit3'>
</form>
<?php
}
}
}
echo "<br><br> El array POST completo es el siguiente: <br>";
print_r( $_POST );
?>
Ahora solo falta adaptarlo a tu aplicación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas