Foros del Web » Programando para Internet » PHP »

Menu con submenus anidados de sql y php

Estas en el tema de Menu con submenus anidados de sql y php en el foro de PHP en Foros del Web. Buenas Tardes a los Integrantes de este Foro: De antemano agradezco la colaboración que me puedan brindar, yo soy nuevo en el tema del php, ...
  #1 (permalink)  
Antiguo 01/08/2011, 14:53
 
Fecha de Ingreso: agosto-2011
Ubicación: Bogota
Mensajes: 37
Antigüedad: 12 años, 9 meses
Puntos: 1
Menu con submenus anidados de sql y php

Buenas Tardes a los Integrantes de este Foro:

De antemano agradezco la colaboración que me puedan brindar, yo soy nuevo en el tema del php, deseo hacer unos menus principales con varios submenus por cada uno de los principales, desde un tabla que contiene estos datos id,padre,nom_men,ruta,estado, se muestren por ul en html, pero no se como hacer la consulta para poder anidar los menus que no importe los submenu su que se generen hacia abajo, la única condición es que los menus principales van a tener dentro del campo padre "0", osea que desde hay inicia el menu y los submenus que contenga, he intentado con while y for pero no lo he podido lograr, agradeceria una mano amiga que me guie con esta tarea.

Atentamente;


OSWALDO GAITAN ARAQUE
Bendiciones para todos!!
  #2 (permalink)  
Antiguo 02/08/2011, 01:23
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Menu con submenus anidados de sql y php

Buenas,

Si nadie te ha respondido, es porque no concretas mucho el tiro de lo que buscas y tampoco das mucha info.

Te cuento:
- Para el tema de la consulta, deberás dar más datos de la tabla, qué significan esos campos? Qué es cada uno? Un ejemplo de cómo tienes guardado y cómo quieres que se muestre...
- El tema de que se muestren "hacia abajo" no es PHP, aquí podrás definir el tipo de salida HTML (ul, li, p...), pero para hacer que eso tome la forma que tú deseas, tendrás que maquetar con CSS.
- Si has intentado con while y con for a nosotros no nos dice nada, deberías poner algo de código si crees que vas por el buen camino y nosotros te lo corregiremos o diremos en qué falla.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 02/08/2011, 02:12
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Menu con submenus anidados de sql y php

Que tal osga2002,

Primero, bienvenido, segundo este tema se ha tratado varias veces en el foro, te dejo una referencia http://www.forosdelweb.com/f18/que-c...2/#post3826936

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 02/08/2011, 11:46
 
Fecha de Ingreso: agosto-2011
Ubicación: Bogota
Mensajes: 37
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Menu con submenus anidados de sql y php

Buenas Tardes a los integrates del Foro:

Reciban un cordial saludo, primero que todo gracias por su colaboración y la respuesta brindada, lei los documentos referencias y trate de modificar el codigo paa usarlo como lo requiero pero no fue posible, entonces nuevamente acudo a su ayuda para solucionarlo... engo dos tablas una para los menus y otra para los permisos de cada usuario asi:

cot_men
id padre nom_men accion activo
1 0 Crear Cotización 0 1
2 1 Cliente Asociado cliaso 1
3 1 Cliente Nuevo clinue 1
4 3 prueba 0 1
5 4 subprueba 0 1
6 0 Administracion 0 1
7 6 Privilegios priusu 1

cot_menper
id id_menu id_user estado
1 1 1 1
2 2 1 1
3 3 1 1
4 4 1 1
5 5 1 1
6 6 1 1
7 7 1 1

Y trate de hacer este codigo:

$node=0;
$tbl="cot_menper a LEFT JOIN cot_men b ON a.id_menu=b.id";
$cls="b.id as id,b.padre,b.nom_men,b.accion";
$order="ORDER BY b.padre,b.nom_men";
$pmt="WHERE a.id_user='$iduser' AND a.estado='1' AND b.activo='1' ";

function get_path($node,$tbl,$pmt,$cls,$order) {
global $xdb;
$parmt="FROM $tbl $pmt AND b.id=$node $order";
// retrieve all children of $parent
$result = mysql_query("SELECT $cls $parmt",$xdb);
echo "SELECT $cls $parmt";
// $result = mysql_query('SELECT parent FROM tree '.

// 'WHERE title="'.$node.'";');

$row = mysql_fetch_array($result);
while($row = mysql_fetch_array($result)){
echo "<br>".$row[0]." es ".$row[1]." otro ".$row[2].$row[3]."<br>";
}


// save the path in this array

$path = array();



// only continue if this $node isn't the root node

// (that's the node with no parent)

if ($row['padre']!='') {

// the last part of the path to $node, is the name

// of the parent of $node

$path[] = $row['padre'];



// we should add the path to the parent of this node

// to the path

$path = array_merge(get_path($row['id'],$tbl,$pmt,$cls,$order), $path);

}



// return the path
return $path;

}

Mi idea es que salgan asi los menus:

Administrar Crear Cotizacion
Privilegios Cliente Asociado
Cliente Nuevo
prueba
subprueba
Pero dejo en padre con 0 los menus que deben quedar en la parte superior como origenes, la verdad no encontre la manera de modificar el codigo para que me haga este resultado, teniendo en cuenta los privilegios del usuario no puede ingresar sino a los menus que le de permiso.

De antemano gracias nuevamente por su generosa colaboración.

Agradezco la ayuda que me puedan brindar.

Atentamente;


OSWALDO GAITAN ARAQUE
Bendiciones!!
  #5 (permalink)  
Antiguo 03/08/2011, 02:44
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Menu con submenus anidados de sql y php

De dónde has sacado este código:
Código PHP:
Ver original
  1. $node=0;
  2. $tbl="cot_menper a LEFT JOIN cot_men b ON a.id_menu=b.id";
  3. $cls="b.id as id,b.padre,b.nom_men,b.accion";
  4. $order="ORDER BY b.padre,b.nom_men";
  5. $pmt="WHERE a.id_user='$iduser' AND a.estado='1' AND b.activo='1' ";
  6.  
  7. function get_path($node,$tbl,$pmt,$cls,$order) {
  8.    global $xdb;
  9.    $parmt="FROM $tbl $pmt AND b.id=$node $order";
  10.    // retrieve all children of $parent
  11.    $result = mysql_query("SELECT $cls $parmt",$xdb);
  12.    echo "SELECT $cls $parmt";
  13.    // $result = mysql_query('SELECT parent FROM tree '.
  14.  
  15.    // 'WHERE title="'.$node.'";');
  16.  
  17.    $row = mysql_fetch_array($result);
  18.    while($row = mysql_fetch_array($result)){
  19.       echo "<br>".$row[0]." es ".$row[1]." otro ".$row[2].$row[3]."<br>";
  20.    }

Es ilegible, con tantas variables para la consulta. Puedes al menos ponerlo formateado (Highlight PHP) y mostrarnos la consulta que se monta con echo "SELECT " . $cls . " " . $parmt;

Si no, es imposible saber qué consulta estás haciendo.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: anidados, html, 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 23:02.