Foros del Web » Programando para Internet » PHP »

Ordenar una tabla en un select

Estas en el tema de Ordenar una tabla en un select en el foro de PHP en Foros del Web. Bueno, el tema es este: Tengo una tabla con una serie de categorías: Tabla categorías [id][categoria][padre] -id: identificador -categoria: nombre de la categoria -padre: nombre ...
  #1 (permalink)  
Antiguo 28/06/2011, 05:32
 
Fecha de Ingreso: julio-2009
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 1
Ordenar una tabla en un select

Bueno, el tema es este:

Tengo una tabla con una serie de categorías:

Tabla categorías
[id][categoria][padre]

-id: identificador
-categoria: nombre de la categoria
-padre: nombre de la categoria padre

-------------------------

Quiero crear un <select> que me liste las categorías, para ello tengo el siguiente código:
En esta parte hago el select
Código PHP:
Ver original
  1. $consulta2='SELECT id,categoria,padre FROM categoria ORDER BY padre,categoria';
  2. $res_categorias=mysql_query($consulta2);

Y aquí viene el "lío"
Código PHP:
Ver original
  1. <select name="categoria">
  2.                               <?php
  3.                               /* Imprimimos todas las categorias que tenemos en el Select */
  4.                               while($categorias=mysql_fetch_array($res_categorias))
  5.                               {  
  6.                                   $cat_actual = $categorias[2];
  7.                                   $cont = 0;
  8.                                   if($cat_actual == $categorias[2]){
  9.                                       if($cont == 0){
  10.                               ?>
  11.                                   <option class="categoriapadre" value="titulo de categoria"><?php echo $categorias[2]; ?></option>  
  12.                               <?php
  13.                                         $cont = 1 ;
  14.                                       }
  15.                                   }else{
  16.                                       $cont = 0;
  17.                                   }
  18.                               ?>
  19.                                   <option value="<?php echo $categorias[0]; ?>"><?php echo $categorias[1]; ?></option>
  20.                               <?php
  21.                               }
  22.                               ?>
  23.                             </select>

El while funciona bien, es decir me muestra todas las categorías, lo que pasa que quiero que el formato sea:
--TITULO DE LA CATEGORÍA (lo que tengo en la tabla como "padre")--
cat1
cat2
cat3
cat4
cat5
--TITULO DE LA CATEGORÍA--
cat1
cat2
...

Y así sucesivamente, con esto que he puesto ahí lo máximo que consigo esque siempre salga el padre encima de cada categoría, lo ideal esque sólo saliera la primer vez por cada padre, he probado haciendo otra consulta y con otro código pero lo lié más, dejo esto porque es lo más cerca que he estado.

Gracias
  #2 (permalink)  
Antiguo 28/06/2011, 05:45
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Ordenar una tabla en un select

usa HTML optgroup
http://www.w3schools.com/tags/tag_optgroup.asp
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 28/06/2011, 06:21
 
Fecha de Ingreso: julio-2009
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Ordenar una tabla en un select

Si, no lo conocía gracias :)
Aún así necesito resolver antes lo de sacar el título 1 vez por cada grupo de categorías.
  #4 (permalink)  
Antiguo 02/07/2011, 18:19
 
Fecha de Ingreso: julio-2009
Mensajes: 103
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Ordenar una tabla en un select

Alguna idea de como conseguir hacer esto correctamente?

Etiquetas: html, mysql, ordenardatos, select
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 19:31.