Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] menu desplegable recursivo php

Estas en el tema de menu desplegable recursivo php en el foro de PHP en Foros del Web. Muy buenas a todos! Mi duda es la siguiente: Quiero crear un menú desplegable con "n" subniveles en php. El problema es que (a ver ...
  #1 (permalink)  
Antiguo 15/02/2013, 06:54
Avatar de dafnemartinezs  
Fecha de Ingreso: febrero-2013
Ubicación: Murcia
Mensajes: 23
Antigüedad: 9 años, 5 meses
Puntos: 1
Información menu desplegable recursivo php

Muy buenas a todos!
Mi duda es la siguiente: Quiero crear un menú desplegable con "n" subniveles en php.
El problema es que (a ver si me explico bien) en el primer nivel, si este tiene subniveles, no puedo poner un enlace, por ejemplo: PERROS(grandes, pequeños, medianos). En PERROS no puedo poner un enlace que vaya a la pagina principal de PERROS , únicamente me sirve para abrir los subniveles que tiene (grandes, pequeños, medianos).

Utilizo 3 archivos, el código php es el siguiente:

ARCHIVO menu.php
<?php
$menu_izq = array(
"PERROS" => array(
"grandes" => "grandes.php",
"pequeños" => "pequeños.php",
"medianos" => "medianos.php",
);

?>



ARCHIVO listadoRecursivo.php
<?php
function listarRecursivamente($datos)
{
$cadena = "";
foreach($datos as $nombre => $value){
if(is_array($value)){
$cadena .= "<li>".$nombre."<ul> \n".listarRecursivamente($value)."</ul>\n</li>\n";
}else{
$cadena .= "<li><a href=\"".$value."\">".$nombre."</a></li>\n";
}
}
return $cadena;
}

?>



ARCHIVO index.php
<?php
include "menu_index.php";
include "listado_recusivo.php";

echo "<ul>\n".listarRecursivamente($menu_izq )."</ul>";
?>



Muchas gracias a todos de antemano!!!! Un saludo!
  #2 (permalink)  
Antiguo 15/02/2013, 06:58
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 15 años, 4 meses
Puntos: 270
Respuesta: menu desplegable recursivo php

Y cuál es el problema?
  #3 (permalink)  
Antiguo 15/02/2013, 07:04
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 18 años, 4 meses
Puntos: 406
Respuesta: menu desplegable recursivo php

No entiendo cual es el problema, no eh probado tu código, pero no veo error, al menos a simple vista (en la función listarRecursivamente()), el unico error que veo es como creas el array $menu_izq, al cual le falta un paréntesis (cerrar el primer array), de hay en fuera, no se, tal vez hace algo que no quieres, pero al final, no eres explicito, di bien que quieres hacer, y que es lo que hace actualmente tu código, si envia un error también deberías publicarlo...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 15/02/2013, 07:06
Avatar de dafnemartinezs  
Fecha de Ingreso: febrero-2013
Ubicación: Murcia
Mensajes: 23
Antigüedad: 9 años, 5 meses
Puntos: 1
Respuesta: menu desplegable recursivo php

El problema es que no se como poner un enlace a la página PERROS. Si se como ponerlo a sus subniveles pero al principal no ya que tengo que indicar que es un array.

$menu_izq = array(
"PERROS" => perros.php array(
"grandes" => "grandes.php",
"pequeños" => "pequeños.php",
"medianos" => "medianos.php",

);
)
?>

He intentado poner eso pero claro, me da error y quería saber si hay alguna manera de hacerlo.

Muchas gracias!
  #5 (permalink)  
Antiguo 15/02/2013, 07:28
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 15 años, 4 meses
Puntos: 270
Respuesta: menu desplegable recursivo php

Ah..
Pues cambiando la estructura del array..
Código PHP:
Ver original
  1. $menu_izq = array(
  2. "PERROS" => array(
  3.      "LINK"=>"perros.php",
  4.     "SUBPAGES"=>array(
  5. "grandes" => "grandes.php",
  6. "pequeños" => "pequeños.php",
  7. "medianos" => "medianos.php")
  8.      )
  9.  
  10. );
  11. )
  12. ?>
  #6 (permalink)  
Antiguo 17/02/2013, 15:39
Avatar de dafnemartinezs  
Fecha de Ingreso: febrero-2013
Ubicación: Murcia
Mensajes: 23
Antigüedad: 9 años, 5 meses
Puntos: 1
Respuesta: menu desplegable recursivo php

Hola de nuevo y disculpas por las molestias. He probado ese código, y el resultado es que tengo las mismas, no puedo poner el link directamente sobre PERROS. Quizás lo que quiero hacer no sea posible en php, tal vez en javascript... ¿qué opináis??
De nuevo gracias!!!
  #7 (permalink)  
Antiguo 17/02/2013, 15:46
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 18 años, 4 meses
Puntos: 406
Respuesta: menu desplegable recursivo php

Tal vez si colocas el código HTML del menú final podamos ver realmente lo que pretendes hacer y de hay aconsejarte....
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 17/02/2013, 15:49
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 15 años, 4 meses
Puntos: 270
Respuesta: menu desplegable recursivo php

Si no lo has conseguido hacer en php, tampoco lo vas a poder hacer en javascript.O al revés.Si lo consigues en uno, lo consigues en el otro..Porque no es cuestión del lenguaje.
Prueba con esto, y con la estructura que te indiqué en un post anterior:
Código PHP:
Ver original
  1. function listarRecursivamente($datos)
  2. {
  3.         $cadena = "";
  4.         foreach($datos as $nombre => $value){
  5.                 if(is_array($value)){
  6.                         if(isset($value["LINK"]))
  7.                              $label="<a href=\"".$value["LINK"]."\">".$name."</a>";
  8.                         else
  9.                              $label=$name;
  10.                         $cadena .= "<li>".$label."<ul> \n".listarRecursivamente($value["SUBPAGRES"])."</ul>\n</li>\n";
  11.                 }else{
  12.                 $cadena .= "<li><a href=\"".$value."\">".$nombre."</a></li>\n";
  13.                 }
  14.         }
  15. return $cadena;
  16. }
  #9 (permalink)  
Antiguo 17/02/2013, 16:05
Avatar de dafnemartinezs  
Fecha de Ingreso: febrero-2013
Ubicación: Murcia
Mensajes: 23
Antigüedad: 9 años, 5 meses
Puntos: 1
Respuesta: menu desplegable recursivo php

Lo he probado, y funciona peeeero no me sale ningún texto en el enlace PERROS, y me da un error:
Notice: Undefined variable: name in ...listado_recusivo.php on line 8
que es esta:
$label="<a href=\"".$value["LINK"]."\">".$name."</a>";

Aqui pongo el codigo completo:
Código PHP:
<?php
function listarRecursivamente($datos){
        
$cadena "";
        foreach(
$datos as $nombre => $value){
                if(
is_array($value)){
                        if(isset(
$value["LINK"]))
                             
$label="<a href=\"".$value["LINK"]."\">".$name."</a>";
                        else
                             
$label=$name;
                        
$cadena .= "<li>".$label."<ul> \n".listarRecursivamente($value["SUBPAGES"])."</ul>\n</li>\n";
                }else{
                
$cadena .= "<li><a href=\"".$value."\">".$nombre."</a></li>\n";
                }
        }
return 
$cadena;
}
?>

Esta es la página del menú:
Código PHP:
<?php
$menu_izq 
= array(
            
"PERROS" => array(
                    
"LINK"=>"animales.php",
                    
"SUBPAGES"=>array(
                        
"grandes" => "grandes.php"
                        
"pequeños" => "pequeños.php"
                        
"medianos" => "medianos.php",
                    )
            
    );
?>

Disculpas de nuevo por el follón que os doy, es que soy nueva en esto... se nota?
  #10 (permalink)  
Antiguo 17/02/2013, 16:12
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 15 años, 4 meses
Puntos: 270
Respuesta: menu desplegable recursivo php

Ah, puñetas, deformación profesional. $name debe ser $nombre.
  #11 (permalink)  
Antiguo 17/02/2013, 16:25
Avatar de dafnemartinezs  
Fecha de Ingreso: febrero-2013
Ubicación: Murcia
Mensajes: 23
Antigüedad: 9 años, 5 meses
Puntos: 1
Respuesta: menu desplegable recursivo php

Ou YEAH mil gracias!!!!! Ya me va perfectamente, sois unos máquinas!

Cierro el tema??? No se muy bien como funciona esto.

Un saludo a todossss y gracias de nuevo!

Etiquetas: desplegable, recursivo
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 10:12.