Comunidad de diseño web y desarrollo en internet online

PHP switch con while

Citar            
MensajeEscrito el 28 Ago 2009 06:08 am
Hola cristaleros...
Tengo una página donde uso un while para hacer un menú deplegable desde una base de datos MySQL, y luego el mismo lo uso más abajo para hacer un SWITCH, donde para cada CASE que es un número imprima un nombre... pero no pude resolverlo, o lo resolví mal porque no funciona, tira error en la linea del WHILE dentro del SWITCH.
Cómo trabajo esto? Mi tabla tiene ID y CATEGORIA, ID es el número, CATEGORIA es la palabra que quiero que imprima.
Gracias, saludos.
Emiliano

Por boratlon

Claber

139 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Ago 2009 07:20 am
Sin ver el código es difícil saber qué está pasando pero quizá deberías volver el puntero del array de resultados de la base de datos a cero antes de comenzar un nuevo while.

Si te parece que mi respuesta no tiene sentido, postea algo de código para ver bien qué está pasando.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 28 Ago 2009 07:39 am
Hola, gracias por responder... no es que no tenga sentido, pero ya estoy quemado... te dejo el code:

Código PHP :

$sql = "SELECT * FROM producto WHERE categoria LIKE '%$_GET[frubro]%'";
$result = mysql_query($sql,$conn);
while($array=@mysql_fetch_array($result)) 
{
   $selectCategoria = $array[categoria];

   $sqlCat = "SELECT * FROM categoria";
   $resultCat = mysql_query($sqlCat);
   //$rowCat=mysql_fetch_row($resultCat);
   
   switch ($selectCategoria)
   {            
      while($arrayCat=mysql_fetch_array($resultCat))
      {
         case $arrayCat[0]: $categoria = "$arrayCat[1]"; break;
      }
      case 0:
      $mensaje = "Seleccione una categor&iacute;a al buscar un producto.<br />";
      break;
   }
if($i%2)
{
   $color="#E9E9E9";
   $btnmodificar="<img src='images/btnmodificar.png' id='editar' border='0' onfocus='blur()' />";
   $btneliminar="<img src='images/btneliminar.png' id='eliminar' border='0' onfocus='blur()' />";
   }
   else
   {
      $color="#CCCCCC";
      $btnmodificar="<img src='images/btnmodificar2.png' id='editar' border='0' onfocus='blur()' />";
      $btneliminar="<img src='images/btneliminar2.png' id='eliminar' border='0' onfocus='blur()' />";
   }
   echo "<tr bgcolor='$color'>
     <td><div style='display:none; padding:0px; margin:0px;'>$array[id]</div>".$categoria."</td>
     <td>".$array[descripcion]."</td>
     <td><a href='eliminar.php?n_id=$array[id]&n_codigo=$array[codigo]' title='Elimine el inmueble'>$btneliminar</a></td>
     <td><a href='cargar.php?n_id=$array[id]&accion=editar' title='Edite el inmueble'>$btnmodificar</a></td>
              
     </tr>";
     $i++;
}
?>


Espero sirva de algo... gracias

Por boratlon

Claber

139 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Ago 2009 11:08 am
Discúlpame la rudeza pero lo que estás haciendo no tiene ningún sentido. No puedes poner un while dentro de un switch xD. Va en contra de la sintaxis de switch.

No sé exactamente qué quieres lograr pero aparentemente quieres comparar los resultados de la primera consulta SQL con los resultados de la segunda consulta. ¿Pero qué es lo que quieres encontrar?. Porque la segunda consulta como está dentro de un while (el primero que aparece en tu código) y al ser fija devolverá siempre los mismos resultados ¿para qué repites esa consulta entonces?, ¿no sería mejor hacer las dos consultas una detrás de la otra ANTES de entrar al ciclo while?.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 30 Ago 2009 03:55 am
de poder se puede, pero la sintaxis esta mal:
mira este ejemplo, lo hice con foreach, pero para el caso da igual:

Código PHP :

$caso='a';
$sepuede= array(1,2,3,4,5,6,7,8,9,10);
switch($caso){
    case 'a':
        foreach($sepuede as $s){
            echo "$s aviones <br/>";
        }
    break;

    case 'b':
        foreach($sepuede as $s){
            echo "$s barcos <br/>";
        }
    break;
}


la verdad no entendí nada de tu código, ni idea de que estaba pasando por tu cabeza en ese momento, en fin, si lo que quieres es obtener resultados de mas de una tabla te podría ayudar

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 30 Ago 2009 07:20 am

Inyaka escribió:

de poder se puede...

No, no se puede. Dentro de un case sí, pero dentro del switch no.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 30 Ago 2009 07:40 am

DriverOp escribió:

Inyaka escribió:

de poder se puede...

No, no se puede. Dentro de un case sí, pero dentro del switch no.


a claro :P por eso dije que era error de sintaxis


XD pero tecnicamente el case esta dentro del switch asi es que de todos modos yo gano

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 30 Ago 2009 11:27 am
A ver si nos entendemos, el ámbito del switch solo admite case, pero el case tiene otro ámbito en el que sí admite while. Lo que quiero decir es que dentro del ámbito del switch y fuera del ámbito del case no puede haber un while (ni otra cosa más que un case), ¿estamos de acuerdo?. :)

Luego me cuentas cómo vas a disfrutar de tu premio.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 30 Ago 2009 05:31 pm
yo opino que crees un grupo de arreglos con la informacion de los menus y luego recorras cada uno por aparte para pintarlos.... y deja de invetar sintaxis demoniaca!

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.