Foros del Web » Programando para Internet » PHP »

Menú de 3 niveles

Estas en el tema de Menú de 3 niveles en el foro de PHP en Foros del Web. Tengo un menú que descarga de un MySQL a 2 niveles: Categorias y subcategorias. Quiero añadir un nivel mas llamado "marca" no se por donde ...
  #1 (permalink)  
Antiguo 07/02/2011, 17:30
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Menú de 3 niveles

Tengo un menú que descarga de un MySQL a 2 niveles: Categorias y subcategorias.

Quiero añadir un nivel mas llamado "marca" no se por donde empezar...


Código PHP:
<? 
include("conex.php"); 
$sqlQueryCat mysql_query("SELECT * FROM categories ORDER BY ordre ASC"
                            or die(
mysql_error()); 

if(isset(
$_GET[select3]) AND $_GET[select3]!=NULL){ $comarca="&amp;select3=";}

while(
$rowCat mysql_fetch_array($sqlQueryCat)){
?>
   <li  class="even" style="width: 175px;"><a href="index.php?id=<?=$rowCat[cat_ID]?><?=$comarca?><?=$_GET[select3]?>" style="width: 175px;"><?=$rowCat[catCategoria]?></a></li>
<?
if ( isset( $_GET['id'] ) && !empty( $_GET['id'] ) &&  $_GET['id']==$rowCat[cat_ID] ){
    
$query mysql_query("SELECT * FROM sub_categories WHERE   id_cat = '".$rowCat[cat_ID]."' ORDER by nom_subc") or die(mysql_error);

        while(
$sub_cat mysql_fetch_array($query)){
?>
   <li  class="odd"><a href="index.php?id=<?=$rowCat[cat_ID]?>&amp;sub_categoria=<?=$sub_cat[id_subc]?>&amp;select3=<?=$_GET[select3]?>" style="width: 150px;">&nbsp;&nbsp;<?=$sub_cat[nom_subc]?></a></li>
<?
        
}


}
?>
  #2 (permalink)  
Antiguo 07/02/2011, 18:36
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Menú de 3 niveles

Busca sobre funciones recursivas y árboles en google o en este mismo foro, hay muchisimos ejemplos de como hacer eso.
  #3 (permalink)  
Antiguo 08/02/2011, 12:47
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Menú de 3 niveles

Si ya te entiendo pero digo ya que tengo el sistema medio hecho mejor hacerlo en base a esto que no buscar otro sistema

De momento he conseguido esto que hace algo parecido pero si se hace clic en una subcategoria que no tenga subsubcategoria ocurre que se despliega la subcategoria con subsubcategoria.

Código PHP:
<? 
include("conex.php"); 
$sqlQueryCat mysql_query("SELECT * FROM categories ORDER BY ordre ASC")
                            or die(
mysql_error()); 

if(isset(
$_GET[select3]) AND $_GET[select3]!=NULL){ $comarca="&amp;select3=";}

while(
$rowCat mysql_fetch_array($sqlQueryCat)){
?>
   <li  class="even" style="width: 175px;"><a href="index.php?id=<?=$rowCat[cat_ID]?><?=$comarca?><?=$_GET[select3]?>" style="width: 175px;"><?=$rowCat[catCategoria]?></a></li>
<?
if ( isset( $_GET['id'] ) && !empty( $_GET['id'] ) &&  $_GET['id']==$rowCat[cat_ID] ){
    
$query mysql_query("SELECT * FROM sub_categories WHERE   id_cat = '".$rowCat[cat_ID]."' ORDER by nom_subc") or die(mysql_error);

        while(
$sub_cat mysql_fetch_array($query)){
?>
   <li  class="odd"><a href="index.php?id=<?=$rowCat[cat_ID]?>&amp;sub_categoria=<?=$sub_cat[id_subc]?>&amp;select3=<?=$_GET[select3]?>" style="width: 150px;">&nbsp;&nbsp;<?=$sub_cat[nom_subc]?></a></li>
<?if ( isset( $_GET['sub_categoria'] ) && !empty( $_GET['sub_categoria'] ) ){
    
$query mysql_query("SELECT * FROM marca WHERE id_subc = '".$_GET[sub_categoria]."' ORDER by nom_marca") or die(mysql_error);
        while(
$sub_cat mysql_fetch_array($query)){
        if(isset(
$sub_cat[nom_marca])){
?>
   <li  class="odd"><a href="index.php?id=<?=$rowCat[cat_ID]?>&amp;sub_categoria=<?=$sub_cat[id_subc]?>&amp;select3=<?=$_GET[select3]?>" style="width: 150px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?=$sub_cat[nom_marca]?></a></li>
<? }
        }
}


        }
}


}
?>
Si alguien cree que puede ayudarme y quiere verlo en vivo: [email protected] (msn sin los puntos) o bien comentadlo y publico el web.

Saludos
  #4 (permalink)  
Antiguo 08/02/2011, 13:02
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Menú de 3 niveles

He hecho una mejora pero aun no esta del todo, ahora lo que hace es imprimir la subsubcategoria hasta la subcategoria que elijas.

Por ejemplo

Alimentacion
Bebidas
Carne
Pez
Verduras
Fruta

Si hago clic en "Bebidas" Se despliegan las subcategorias y queda asi:

Alimentacion
Bebidas
Refrescos
Vinos
Cavas
Infusiones

(No sale carne pez verduras i furta).

Pero por ejemplo si haces clic en "Verduras" que no tiene subsubcateoria aparece lo siguiente:

Alimentacion
Bebidas
Carne
Pez
Verduras

(No sale Fruta) Solo sale hasta donde hagas clic.

Código PHP:
<? 
include("conex.php"); 
$sqlQueryCat mysql_query("SELECT * FROM categories ORDER BY ordre ASC")
                            or die(
mysql_error()); 

if(isset(
$_GET[select3]) AND $_GET[select3]!=NULL){ $comarca="&amp;select3=";}

while(
$rowCat mysql_fetch_array($sqlQueryCat)){
?>
   <li  class="even" style="width: 175px;"><a href="index.php?id=<?=$rowCat[cat_ID]?><?=$comarca?><?=$_GET[select3]?>" style="width: 175px;"><?=$rowCat[catCategoria]?></a></li>
<?
if ( isset( $_GET['id'] ) && !empty( $_GET['id'] ) &&  $_GET['id']==$rowCat[cat_ID] ){
    
$query mysql_query("SELECT * FROM sub_categories WHERE id_cat = '".$rowCat[cat_ID]."' ORDER by nom_subc") or die(mysql_error);

        while(
$sub_cat mysql_fetch_array($query)){
?>
   <li  class="odd"><a href="index.php?id=<?=$rowCat[cat_ID]?>&amp;sub_categoria=<?=$sub_cat[id_subc]?>&amp;select3=<?=$_GET[select3]?>" style="width: 150px;">&nbsp;&nbsp;<?=$sub_cat[nom_subc]?></a></li>
           <?if ( isset( $_GET['sub_categoria'] ) && !empty( $_GET['sub_categoria']) && $_GET['sub_categoria']==$sub_cat[id_subc]  ){
    
$query mysql_query("SELECT * FROM marca WHERE id_subc = '".$_GET[sub_categoria]."' ORDER by nom_marca") or die(mysql_error);
        while(
$sub_cat mysql_fetch_array($query)){

?>
   <li  class="odd"><a href="index.php?id=<?=$rowCat[cat_ID]?>&amp;sub_categoria=<?=$sub_cat[id_subc]?>&amp;select3=<?=$_GET[select3]?>" style="width: 150px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?=$sub_cat[nom_marca]?></a></li>
<?
        
}
}
?>
<?


        
}
}


}
?>
  #5 (permalink)  
Antiguo 08/02/2011, 13:31
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Menú de 3 niveles

Cita:
Si ya te entiendo pero digo ya que tengo el sistema medio hecho mejor hacerlo en base a esto que no buscar otro sistema
Estas en un error hacer las cosas medio bien son problemas a corto plazo y mas en esto. Mejor pierde unas horas investigando cual es la mejor forma que intentar hacer un parche para una aproximación que no es la adecuada. Entiendo tu punto quizá tengas que modificar varias cosas a todos no ha pasado esto alguna vez, pero a la larga es mejor hacer los cambio necesarios y dormir tranquilo. te dejo una liga para que veas formas adecuadas de resolver tu problema con ventajas y desventajas Four ways to work with hierarchical data
__________________
Saludos.

Etiquetas: Ninguno
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 08:17.