Foros del Web » Programando para Internet » PHP »

Select con varias categorias

Estas en el tema de Select con varias categorias en el foro de PHP en Foros del Web. Hola, Tengo varios select anidados, es decir, eliges opcion en select1 y salen los valores apropiados en select2, así hasta 4. Funcionan a la perfeccion, ...
  #1 (permalink)  
Antiguo 16/10/2012, 04:49
 
Fecha de Ingreso: abril-2011
Mensajes: 7
Antigüedad: 13 años
Puntos: 0
Pregunta Select con varias categorias

Hola,
Tengo varios select anidados, es decir, eliges opcion en select1 y salen los valores apropiados en select2, así hasta 4.
Funcionan a la perfeccion, pero ahora quiero mostrarlos en un solo select así;
Select1
opcion1
opcion1.1
opcion1.2
opcion2
opcion2.1
opcion3
opcion 3.1

Espero haberme explicado...
  #2 (permalink)  
Antiguo 16/10/2012, 05:56
 
Fecha de Ingreso: septiembre-2012
Ubicación: Argentina
Mensajes: 144
Antigüedad: 11 años, 7 meses
Puntos: 12
Respuesta: Select con varias categorias

Buenos dias amigo...

Intente comprender tu idea y encontre esta pagina espero que sea lo que buscabas...

http://www.htmlquick.com/es/tutorial...2.html#options

Al final de todo hay algo parecido a lo que necesitas...
Saludos!!
  #3 (permalink)  
Antiguo 16/10/2012, 10:30
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Select con varias categorias

Algo parecido a lo que queres,
Primero la base de datos:
Código MySQL:
Ver original
  1. CREATE TABLE `categorias` (
  2.     `idCategoria` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.     `nombreCategoria` VARCHAR(60) NOT NULL,
  4.     `idCategoriaPadre` SMALLINT(6) NULL DEFAULT '0' COMMENT 'Nos refleja si es hijo de una categoria o es padre(0).',
  5.     `imagenCategoria` VARCHAR(150) NULL DEFAULT NULL,
  6.     `padre` SET('No','Si') NOT NULL DEFAULT 'No',
  7.     `descripcionCategoria` TEXT NULL,
  8.     PRIMARY KEY (`idCategoria`)
  9. )
  10. COMMENT='Ej.Refrigeracion, que podria contener Heladeras, Freezers...'
  11. COLLATE='utf8_general_ci'
  12. ENGINE=MyISAM

Ahora el Codigo que eran clases pero saque las funciones:
Código PHP:
Ver original
  1. <?php
  2. <?php
  3. // Configuro Base de Datos //
  4. $dbhost     = 'localhost';
  5. $dbuser     = 'root';
  6. $dbpass     = '**********';
  7. $dbname     = 'table_name';
  8. $dbport     = 3306;
  9. $conexion   = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname, $dbport);
  10. $categorias = arbolJerarquico('categorias','idCategoria','nombreCategoria','idCategoriaPadre',0,$prefijo='-');
  11. $datos      = array();
  12. $categoriaPadre = 0;
  13.  
  14.  
  15.         foreach ($categorias as $valores)
  16.         {  
  17.                     global  $datos;
  18.                     $selected   = ($categoriaPadre==$valores['id'])?' selected ': '';
  19.             $nivel      = calcularNivel($valores['prefijo'],$prefijo);
  20.             $pixeles    = 5 + $nivel * 10;
  21.             $espacios   = str_repeat('=>',$nivel*2);
  22.             $datos[]    = array('valor'     => $valores['id'],
  23.                                                 'nombre'    => $valores['categoria'],
  24.                         'pixeles'   => $pixeles,
  25.                         'nivel'     => $nivel,
  26.                         'selected'  => $selected,
  27.                         'espacios'  => $espacios);
  28.            
  29.         }  
  30. // en datos quedan todas las categorias
  31. ?>
  32. <select id="idCategoriaPadre" name="idCategoriaPadre" class="inputsText" >
  33. <option value="0" selected="selected">Nueva Categoria Padre</option>
  34. <?php foreach ($datos as $categoria): ?>
  35. <option value="<?php echo $categoria['value']; ?>" ><?php echo $categoria['espacios'] . $categoria['nombre']; ?></option>
  36. <?php endforeach; ?>
  37. </select>
  38.  
  39. <?php
  40.  
  41.     /**
  42.      * Genera un arbol de categorias a partir de una base de datos.
  43.      *
  44.      * @param   String  $tabla      nombre de la tabla de la cual se realizara el arbol jerarquico.
  45.      * @param   String  $campoId    Campo clave primaria de la tabla.
  46.      * @param   String  $categoria  Campo a mostrar = nombre de la categoria.
  47.      * @param   String  $relacion   Campo que vincula a los hijos con los padres.
  48.      * @param   Integer $padre      es el padre para la categoria Actual.
  49.      * @param   String  $prefijo    Prefijo que se antepondra a cada categoria.
  50.      * @return  void
  51.      */
  52.     function arbolJerarquico($tabla,$campoId,$categoria,$relacion,$padre,$prefijo='-')
  53.     {
  54.             global $categorias;
  55.             $categTable         = generarArbolCategorias($tabla,$relacion,$padre);
  56.             if($categTable) {  
  57.                 $filas      = mysqli_fetch_object($categTable);
  58.             while($filas) {
  59.                     $categorias[]['id']             = $filas->$campoId;
  60.                     $cnt                            = count($categorias)-1;
  61.                     $categorias[$cnt]['prefijo']    = $prefijo;
  62.                     $categorias[$cnt]['categoria']  = $filas->$categoria;
  63.                     $categorias[$cnt]['padre']      = $filas->padre;
  64.                     arbolJerarquico($tabla,$campoId,$categoria,$relacion,$filas->$campoId, $prefijo . $prefijo);
  65.                     $filas      = mysqli_fetch_object($categTable);
  66.             }
  67.             }
  68.             return $categorias;
  69.     }
  70.    
  71.  
  72.         function generarArbolCategorias($tabla,$relacion,$padre)
  73.     {
  74.             global $conexion;
  75.             $consulta   = "SELECT  * FROM " . $tabla . " WHERE " . $relacion . "=" . $padre ." ORDER BY nombreCategoria";
  76.             $resultado  = mysqli_query($conexion, $consulta);
  77.             return $resultado;
  78.     }
  79.    
  80.     /**
  81.      * Calcula el nivel para una Categoria pasando el prefijo de la categoria actual y prefijo base.
  82.      *
  83.      * @param   String  $prfActual  prefijo para la categoria a analizar.
  84.      * @param   String  $prfBase    prefijo tomado como base por ej. -
  85.      * @return  integer Entero natural que representa el nivel en el arbol jerarquico.
  86.      */
  87.     function calcularNivel($prfActual,$prfBase)
  88.     {   $prfActual_b2   = strlen($prfActual) / strlen($prfBase);
  89.         $nivel          = log($prfActual_b2,10)/log(2,10);
  90.         return $nivel;
  91.     }

Mas o menos con eso andaria la cosa.
Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #4 (permalink)  
Antiguo 17/10/2012, 02:21
 
Fecha de Ingreso: abril-2011
Mensajes: 7
Antigüedad: 13 años
Puntos: 0
Respuesta: Select con varias categorias

Muchas gracias! Me pongo con ello, pero es justo lo que buscaba.

Etiquetas: categorias, 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 18:07.