Realizar opción en función de un desplegable en PHP

Leirlux

Tengo que realizar una determinada acción en función de la opción que yo haya seleccionado en un index cualquiera. Las opciones son:

  • contar nº de peliculas que ha hecho cada actor
  • insertar un nombre X con apellido Y en sakila

El principal problema que me salta es que pasa por la primera condición, pero pasa olímpicamente del resto de opciones; vamos, que se la suda que estén ahí puesta.

INDEX
PHP
RESULTADO
Kiroushi

Línea 13:

$accion=(isset($_POST['acciones']));
if ($accion == "predet")

Estás haciendo una asignación a $accion de tipo bool, con lo que el resultado siempre va a ser true/false (y luego lo comparas con un string para ver qué hacer).

$accion = isset($_POST['acciones']) ? $_POST['acciones'] : "vacio";

switch ($accion) {
    case "predet":
        bla bla bla...
        break
    default:
        bla bla bla...
}

(O mejor aún, aunque dependiendo de cómo tengas configurado el PHP puede darte errores o no):


switch ($_POST['acciones']) {
    case "predet":
        bla bla bla...
        break
    default:
        bla bla bla...
}
1 respuesta
Leirlux

#2 Entonces tendría que crear un case por cada acción (en este caso predet, insertar y actores) ¿no? Quedaría tal que así:

$accion = isset($_POST['acciones']) ? $_POST['acciones'] : "vacio";

switch ($accion) {
    case "predet":
        bla bla bla...
        break
    default:
        bla bla bla...

case "insertar":
    blablabla
    break


case "actores":
    blablabla
    break
}

Lo que sigo sin entender es el "default" ese que metes en la linea 7.

Kiroushi

Sí, pero default debería ser en tu diseño la última opción. Y es redundante con la asignación del valor "vacio" a la variable acción; prueba el segundo que te he puesto a ver si te funciona:

switch ($_POST['acciones']) {
    case "insertar":
        blablabla
        break
    case "actores":
        blablabla
        break
    default:
        bla bla bla...
}

Y recuerda siempre tener cuidado con la inyección de código en los campos get/post en caso de que vayas a a tener la web abierta al público.

1 respuesta
Leirlux

#4 Tal y como lo he hecho es así:

NUEVO CÓDIGO

Me salta el error UNEXPECTED CASE en linea 9 del documento

Parse error: syntax error, unexpected 'case' (T_CASE) in C:\wamp\www\PHP\ejer.php on line 22

Kiroushi

Los puntos y coma detrás de los break.

1 respuesta
Leirlux

#6 Vale, ya lo he visto. Muchísimas gracias Kiroushi, te debo una :D

Usuarios habituales

  • Leirlux
  • Kiroushi