elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Estoy realizando un CMS (pequeña duda de lógica)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Estoy realizando un CMS (pequeña duda de lógica)  (Leído 8,295 veces)
dimitrix


Desconectado Desconectado

Mensajes: 4.847



Ver Perfil WWW
Estoy realizando un CMS (pequeña duda de lógica)
« en: 4 Marzo 2011, 00:58 am »

Vamos a ver, estoy realizando un pequeño CMS tipo Joomla (digo el panel y como está dividido), no tengo ningún problema en nada... excepto... en como hacer cuando por ejemplo hay un menú dentro de otro menu por ejemplo:

- Inicio
- Donde Estamos

--> En Valencia
--> En Barcelona

-----> En Tarrassa
-----> Otros lugares
--> En Alicante
--> En Madrid

- Servicios que ofrecemos



Es decir, un sección dentro de otra, así hasta 3 nivele en este caso.
El problema es que en el desplegable para seleccionar la 'sección' me salen en lista:

Citar
Inicio
Donde Estamos
En Valencia
En Barcelona
En Tarrassa
Otros lugares
En Alicante
En Madrid
Servicios que ofrecemos

y yo quiero que me salgan tipo

Citar
Inicio
Donde Estamos
 |-> En Valencia
 |-> En Barcelona
 |---> En Tarrassa
 |---> Otros lugares
 |-> En Alicante
 |-> En Madrid
Servicios que ofrecemos

Y no tengo ni idea de como hacerlo. Los tengo en la base de datos y todas las secciones tienen un ID y un ID_Padre que el ID_Padre es la sección dentro de la que van o si es el Índice(la principal el valor es 0).

Había pensado en un While dentro de otro While dentro de otro, pero me gustaría algo que no sea tan cutre, sobretodo por que si tiene 5 niveles ya la he cagado.

¡Un saludo!


En línea




Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: Estoy realizando un CMS (pequeña duda de lógica)
« Respuesta #1 en: 4 Marzo 2011, 03:54 am »

entonces quiere decir que:
Citar
Inicio   ID_PADRE=0
Donde Estamos   ID_PADRE=0
 |-> En Valencia   ID_PADRE=1
 |-> En Barcelona   ID_PADRE=1
 |---> En Tarrassa   ID_PADRE=2
 |---> Otros lugares    ID_PADRE=2
 |-> En Alicante   ID_PADRE=1
 |-> En Madrid   ID_PADRE=1
Servicios que ofrecemos   ID_PADRE=0

Si esto es asi, trata de tener una idea segun este codigo:
Código
  1. //$items[] es un array('nombre','id','id_padre')
  2. foreach($items as $item){
  3. echo (($item['id_padre']>0)?'|'.str_repeat('-',$item['id_padre']).'>':NULL)." {$item['nombre']}";
  4. }

Lógicamente faltan links y tendrias que adaptarlo a TU diseño HTML, que si trabajas con listas, en vez de agregar caracteres ("|-->"), agregar <ul>.

Espero serte de ayuda, si no trabajas de esta forma con los items, o no podes implementarlo, un poco de código no viene mal, aunque esta bien que por ahora no quieras dar código.

PD: Yo también estoy con un proyectito algo asi: "Blotg!" un blog programado unicamente por mi, llevo ya 3 semanas de su comienzo y ya estoy imprimiendo/subiendo/modificando posts,tags,categorias y comentarios. Ya lo vas a ver por aca...


En línea

Lunfardo


Desconectado Desconectado

Mensajes: 568


Ver Perfil
Re: Estoy realizando un CMS (pequeña duda de lógica)
« Respuesta #2 en: 4 Marzo 2011, 04:13 am »

fijate en usar una solucion recursiva sino te queres enroscar con los while
En línea

Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: Estoy realizando un CMS (pequeña duda de lógica)
« Respuesta #3 en: 4 Marzo 2011, 04:59 am »

Yo creo que de esa solucion recursiva que hablas ya se encargo, porque por lo que pienso guarda en la base de datos con un "ID_PADRE" y ya ahi entra en juego la logica con respecto a este id.
En línea

dimitrix


Desconectado Desconectado

Mensajes: 4.847



Ver Perfil WWW
Re: Estoy realizando un CMS (pequeña duda de lógica)
« Respuesta #4 en: 4 Marzo 2011, 12:47 pm »

Me gustaría publicarlo para uso no empresarial, pongo parte del código:

Código
  1.   <option value="0">&Iacute;ndice</option>');
  2. while ($valores = mysql_fetch_array($resultados)){
  3. echo('<option value="'.$valores["ID"].'">'.$valores["Titulo"].'</a><br>');
  4. };
  5.  

El $valores es un array que contiene: ID, ID_padre y Titulo.

El value de la opción tiene que ser el ID y el título lo que aparezca en el seleccionador. Lo único que me falta es poner lo de -> -->.

Lo que está claro que esa parte la tengo que cambiar, que no puede ir con WHILE.
En línea




Lunfardo


Desconectado Desconectado

Mensajes: 568


Ver Perfil
Re: Estoy realizando un CMS (pequeña duda de lógica)
« Respuesta #5 en: 4 Marzo 2011, 16:05 pm »

edit: jaja entendi el problema tarde , =P
« Última modificación: 4 Marzo 2011, 18:56 pm por SmogMX » En línea

dimitrix


Desconectado Desconectado

Mensajes: 4.847



Ver Perfil WWW
Re: Estoy realizando un CMS (pequeña duda de lógica)
« Respuesta #6 en: 4 Marzo 2011, 17:42 pm »

No SmogMX, no tiene nada que ver con eso, pero gracias por el intento.
Tiene algo que ver más bien con lo de 'Castg!'.
En línea




Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Estoy realizando un CMS (pequeña duda de lógica)
« Respuesta #7 en: 4 Marzo 2011, 18:37 pm »

No me he fijado del todo bien en el código, pero así por encima yo hice un proyecto parecido e hice algo así:

El mismo while que tú, mas o menos, pero dentro del while pones un swtich.

Si el ID_PADRE == 0 por ejemplo no pones nada, si es 1 pones delante -> y si es 2, pones delante -->, de esta forma conseguirás la estructura en árbol que buscas. Así al menos lo hice yo y me funcionó bastante bien.
En línea

dimitrix


Desconectado Desconectado

Mensajes: 4.847



Ver Perfil WWW
Re: Estoy realizando un CMS (pequeña duda de lógica)
« Respuesta #8 en: 4 Marzo 2011, 18:44 pm »

No me he fijado del todo bien en el código, pero así por encima yo hice un proyecto parecido e hice algo así:

El mismo while que tú, mas o menos, pero dentro del while pones un swtich.

Si el ID_PADRE == 0 por ejemplo no pones nada, si es 1 pones delante -> y si es 2, pones delante -->, de esta forma conseguirás la estructura en árbol que buscas. Así al menos lo hice yo y me funcionó bastante bien.

Pero no serviría puesto que en la base de datos no está el nivel de cada uno 0, 1 o 2, por que puede llamar hasta 10.
En línea




Castg!
Wiki

Desconectado Desconectado

Mensajes: 1.191



Ver Perfil WWW
Re: Estoy realizando un CMS (pequeña duda de lógica)
« Respuesta #9 en: 4 Marzo 2011, 19:10 pm »

Código
  1. //...
  2. '<option value="0">&Iacute;ndice</option>');
  3. while ($valores = mysql_fetch_array($resultados)){
  4. echo('<option value="'.$valores["ID"].'">'(($valores['ID_padre']>0)?'|'.str_repeat('-',$valores['ID_padre']).'>':NULL)..$valores["Titulo"].'</a><br>');
  5. };
  6.  

Así tendría que funcionar bien, eso creo... jeje.
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines