Foros del Web » Programando para Internet » PHP »

Switch de 1 variable con varios valores

Estas en el tema de Switch de 1 variable con varios valores en el foro de PHP en Foros del Web. Buenas a todos. Tengo un pequeño problema con el Switch. Tengo este código: Código: <?php switch ($_POST['hobbies']) { case "dance": echo "<li>You like to dance.</li>"; ...
  #1 (permalink)  
Antiguo 16/06/2008, 16:21
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Switch de 1 variable con varios valores

Buenas a todos. Tengo un pequeño problema con el Switch. Tengo este código:

Código:
<?php 
switch ($_POST['hobbies'])
{
case "dance":
echo "<li>You like to dance.</li>";

case "throwstuff":
echo "<li>You like to throw stuff out the window.</li>";

case "adoption":
echo "<li>You like to adopt foreign kids.</li>";

case "pcs":
echo "<li>You like PC's</li>";

case "handstand":
echo "<li>You like to handstand.</li>";
break;

default:
echo "You did not select any listed hobbie.";
}
?>
Tomando en cuenta que 'hobbies' es una variable en la cual está siendo usada en un formulario, con 5 valores distintos. Esta variable está siendo modificada con Checkboxes, así que pueden ser varios valores los que quiero mostrar cuando entregue resultados.

El problema reside en que, no puedo usar Break, ya que si lo uso, al conseguir el 1er valor verdadero, no mostrará los demás, sin importar que sean verdaderos o no. Si no lo uso, los valores que están después se mostrarán, sin importar que se hayan o no seleccionado previamente. No puedo usar continue, si selecciono más de una, muestra es la última. No se que hacer. Tengo que hacer una combinación másgica de if's? o_O

Gracias de antemano.
  #2 (permalink)  
Antiguo 16/06/2008, 17:03
 
Fecha de Ingreso: junio-2008
Mensajes: 30
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Switch de 1 variable con varios valores

prueba esto a ver si te gusta.

Código PHP:
<?php
if(isset($_POST[enviar])){
    if(!empty(
$_POST[hobbie])){
        foreach(
$_POST[hobbie] as $value){
            echo 
"You like ".$value.".<br>";
        }
    
    } else {
        echo 
"You did not select any listed hobbie.";
    }

}
?>

<br /><br />
You like:<br />
<form method="post" action="check.php">
<input type="checkbox" name="hobbie[]" value="to dance"  />to dance<br />
<input type="checkbox" name="hobbie[]" value="to throw stuff out the window"  />to throw stuff out the window<br />
<input type="checkbox" name="hobbie[]" value="to adopt foreign kids"  />to adopt foreign kids<br />
<input type="checkbox" name="hobbie[]" value="PC's"  />PC's<br />
<input type="checkbox" name="hobbie[]" value="to handstand"  />to handstand<br />
<input type="submit" name="enviar" value="Enviar" />
</form>
  #3 (permalink)  
Antiguo 16/06/2008, 17:15
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Switch de 1 variable con varios valores

Parece prometedor, pero soy bastante nuevo en PHP y no se que haces en realidad n.n
¿Podrías explicarme más o menos como estás procediendo? Si no es mucha molestia.
¿Y no hay manera de que con Switch pueda llegar a ese objetivo?
  #4 (permalink)  
Antiguo 17/06/2008, 04:20
 
Fecha de Ingreso: junio-2008
Mensajes: 30
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Switch de 1 variable con varios valores

ok, linea por linea:

Código PHP:
if(isset($_POST[enviar])){ 
Esta linea detecta si hemos enviado el formulario, isset() devuelve "true" en caso de ser correcto.

Código PHP:
if(!empty($_POST[hobbie])){ 
Esta otra detecta si hemos seleccionado algun checkbox, por lo tanto esta vacia ("empty") si no se ha selecionado ningun checkbox. Pero fijate que tiene un negado delante por lo tanto decimos, si no esta vacio "hobbie" entra, de lo contrario, si esta vacia nos muestra lo siguiente:

Código PHP:
echo "You did not select any listed hobbie."
Ara veamos el if de si no esta vacia:

Código PHP:
foreach($_POST[hobbie] as $value){
            echo 
"You like ".$value.".<br>";

veamos, ala funcion "foreach" lo que hace ese recorrer el array "hobbie" y en cada iteracion le asigna su contenido a $value, y seguidante printamos el resultado. (ten en cuenta que lo que contiene el array hobbie son los values del los checkboxs del formulario). Si no has entendido bien el foreach ves aqui: http://es.php.net/foreach
Código HTML:
<form method="post" action="check.php">
<input type="checkbox" name="hobbie[]" value="to dance"  />to dance<br />
<input type="checkbox" name="hobbie[]" value="to throw stuff out the window"  />to throw stuff out the window<br />
<input type="checkbox" name="hobbie[]" value="to adopt foreign kids"  />to adopt foreign kids<br />
<input type="checkbox" name="hobbie[]" value="PC's"  />PC's<br />
<input type="checkbox" name="hobbie[]" value="to handstand"  />to handstand<br />
<input type="submit" name="enviar" value="Enviar" />
</form> 
respecto a lo del switch dudo que lo puedas hacer, la otra forma seria con bastantes if's


Espero que lo hayas entendido.
Un saludo.

Última edición por filzix; 17/06/2008 a las 04:31
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:23.