Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Menu bd y php

Estas en el tema de Menu bd y php en el foro de PHP en Foros del Web. Estimados tengo un problema que me esta volviendo un poco loco resulta que tengo una tabla de mysql llamada menu esta tiene estos campos ID,nombre,tipo,relacion,drop ...
  #1 (permalink)  
Antiguo 08/04/2013, 12:13
 
Fecha de Ingreso: junio-2012
Ubicación: Santiago de Chile
Mensajes: 164
Antigüedad: 11 años, 10 meses
Puntos: 1
Menu bd y php

Estimados tengo un problema que me esta volviendo un poco loco

resulta que tengo una tabla de mysql llamada menu

esta tiene estos campos

ID,nombre,tipo,relacion,drop

el tipo es 1,2 y 3
si el tipo es 1 la relacion siempre es 0
si el tipo es 2 la relacion lleva el ID del tipo 1
si el tipo es 3 la relacion lleva el ID del tipo 2

es para gestionar si tiene o no dropdown...bueno hasta aquí todo perfe, el campo drop es el que dice si tiene o no drop

el tipo 1 puede tener valor S o N (S si tiene dropdown por ende algun tipo 2 debe llevar en el campo relacion su ID)

el tipo 2 puede tener valor S o N (S si tiene dropdown por ende algun tipo 3 debe llevar en el campo relacion su ID)

el tipo 3 solo tiene valor N



ahora sabiendo esto...estoy tratando de cargar el menu en una pagina web, pero me ha costado un mundo



Código PHP:


$menu
[] = array('Colores' => array('Rojo''Verde''Azul') );
$menu[] = array('Animales' => array('Perro''Gato''Conejo') );
 
foreach (
$menu as $menu_key => $menu_item){
    foreach(
$menu_item as $menu_name => $sub_menu){
        echo 
"<li><a href='#'>".$menu_name."</a>";
        if (isset(
$sub_menu)){
            echo 
"<ul>";
            foreach(
$sub_menu as $items){
                echo 
"<li><a href='#'>".$items."</a>";
            }
            echo 
"</ul>";
        }
        echo 
"</li>";
    }
}
 
?> 

esta idea esta genial, pero debo cambiar los valores del array por los encontrados en la consulta sql, me esta costando más de la cuenta, por eso recurro a su ayuda!!!
  #2 (permalink)  
Antiguo 08/04/2013, 13:41
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Menu bd y php

Holas, gusanosxr.

Me da la impresión que tu menú de base de datos tiene hasta 3 niveles, no? Pero el código PHP pareciera estar hecho para un menú de sólo 2 niveles, si no me equivoco... (aunque efectivamente tiene 3 niveles, pero el más externo no tiene datos asociados, como un nombre o clave; de hecho, hasta pareciera estar demás...).

Creo que lo primero sería hacer que el menú del PHP coincida con el menú obtenido de la base de datos. Sin hacer eso antes, no puedo ayudarte, ya que es como obtener peras para armar un menú de manzanas...

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 08/04/2013, 13:47
 
Fecha de Ingreso: junio-2012
Ubicación: Santiago de Chile
Mensajes: 164
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Menu bd y php

no entendi mucho, pero el tercer submenu se puede omitir...la cosa es aprender y después arreglarlo yo, ya sabiendo o entendiendo el algoritmo que debería seguir...


:(

llevo como 3 horas, he intentado mucho, puedo imprimir los primeros menu, los "padres", pero imprimir a sus hijos me esta costando!
  #4 (permalink)  
Antiguo 08/04/2013, 14:19
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: Menu bd y php

Muestra como estas armando los arreglos de los datos que traes de las tablas...
  #5 (permalink)  
Antiguo 08/04/2013, 14:33
 
Fecha de Ingreso: junio-2012
Ubicación: Santiago de Chile
Mensajes: 164
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Menu bd y php

Código PHP:
Ver original
  1. <?php
  2. include "conectar.php";
  3. //IMPRIME MENU PRINCIPAL
  4. $result=mysql_query("SELECT * FROM menu WHERE tipo=1");
  5. if (mysql_num_rows($result)>0){
  6. $i=0;
  7. $rows=mysql_num_rows($result);
  8.     while($i<$rows){
  9.     echo "<li><a href=".mysql_result($result,$i,"link")."?var=".mysql_result($result, $i, "ID").">".mysql_result($result,$i,"nombre")."</a>";
  10.     if (mysql_result($result,$i,"drop")=='S'){
  11.         $result2=mysql_query("SELECT * FROM menu WHERE tipo=2 AND relacion=".mysql_result($result,$i,"ID"));
  12.         $a=0;
  13.         $rows2=mysql_num_rows($result2);
  14.         echo "<ul>";
  15.         while($a<$rows2){          
  16.         echo "<li><a href=".mysql_result($result2,$a,"link")."?var=".mysql_result($result2, $a, "ID").">".mysql_result($result2,$a,"nombre")."</a>";
  17.             if (mysql_result($result2,$a,"drop")=='S'){
  18.             $result3=mysql_query("SELECT * FROM menu WHERE tipo=3 AND relacion=".mysql_result($result2,$a,"ID"));
  19.             $e=0;
  20.             $rows3=mysql_num_rows($result3);
  21.             echo "<ul>";
  22.             while($e<$rows3){
  23.             echo "<li><a href=".mysql_result($result3,$e,"link")."?var=".mysql_result($result3, $e, "ID").">".mysql_result($result3,$e,"nombre")."</a>";
  24.             $e++;    
  25.             }            
  26.             }
  27.         $a++;    
  28.         }
  29.         echo "</ul>";    
  30.     }    
  31.     $i++;    
  32.     }    
  33. }
  34. ?>

al final lo hice así....es php 4 creo, soy nuevo en esto



mi base de datos es


id,nombre,link,tipo,relacion,drop

arriba explique que hacia cada columna...

saludos

marcaré el tema como solucionado!!!

si a alguien le sirve, dejé mi código ahí...

estoy estudiando por mi cuenta php y php Orientado a objetos, pero aun soy muy novato,

saludos a todos

Etiquetas: bd, mysql, sql, tabla
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 04:41.