
romaditro
Novato-
Posts
4 -
Joined
-
Last visited
Everything posted by romaditro
-
Compilados Recursos PHP
romaditro replied to x_petite_x's topic in Aplicaciones de Escritorio & Scripts PHP
sorry...pero cual es la clave!!! no me peska www.(Palabra Censurada, está prohibido el SPAM) o (Palabra Censurada, está prohibido el SPAM) probe con chilecomparte y tampoko funka ?? :unsure: :unsure: :unsure: -
Menu configurable PHP con B.D.
romaditro replied to romaditro's topic in Aplicaciones de Escritorio & Scripts PHP
Aqui van los distintos codigos: TABLA MENU -- phpMyAdmin SQL Dump -- version 2.10.1 -- http://www.phpmyadmin.net -- -- Servidor: localhost -- Tiempo de generación: 20-03-2009 a las 20:28:44 -- Versión del servidor: 5.0.45 -- Versión de PHP: 5.2.5 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Base de datos: `menu` -- -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `menu` -- CREATE TABLE `menu` ( `id` int(11) NOT NULL auto_increment, `padre` int(11) NOT NULL, `texto` varchar(30) NOT NULL, `url` varchar(200) default NULL, `orden` int(11) NOT NULL, `estado_menu` varchar(20) NOT NULL default 'ACTIVO', PRIMARY KEY (`id`), UNIQUE KEY `texto` (`texto`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=21; -- -- Volcar la base de datos para la tabla `menu` -- INSERT INTO `menu` (`id`, `padre`, `texto`, `url`, `orden`, `estado_menu`) VALUES (1, -1, 'INICIO', '#', 1, 'ACTIVO'), (2, -1, 'OT', '#', 2, 'ACTIVO'), (3, -1, 'MANTENEDOR', '#', 3, 'ACTIVO'), (4, -1, 'SALIR', '#', 5, 'ACTIVO'), (5, 2, 'INGRESAR OT', '#', 2, 'ACTIVO'), (6, 2, 'ACTUALIZAR OT', '#', 3, 'ACTIVO'), (7, 2, 'VER OT', '#', 4, 'ACTIVO'), (8, -1, 'OC', '#', 4, 'ACTIVO'), (9, 8, 'INGRESAR OC', '#', 1, 'ACTIVO'), (10, 8, 'ACTUALIZAR OC', '#', 2, 'ACTIVO'), (11, 3, 'PERSONAL', '#', 1, 'ACTIVO'), (12, 3, 'MAQUINAS', '#', 2, 'ACTIVO'), (13, 11, 'INGRESAR PERSONAL', '#', 1, 'ACTIVO'), (14, 11, 'ACTUALIZAR PERSONAL', '#', 2, 'ACTIVO'), (15, 12, 'INGRESAR MAQUINAS', '#', 1, 'ACTIVO'), (18, 3, 'BODEGA', '#', 3, 'ACTIVO'), (19, 18, 'INGRESAR BODEGA', '#', 1, 'ACTIVO'), (20, 18, 'ACTUALIZAR BODEGA', '#', 2, 'ACTIVO'); CONFIGURACION.php <?php session_start(); $host = "localhost"; $usuario = "root"; $password = ""; $bd = "menu"; ?> FUNCIONES.php function conectarse($host, $usuario, $password, $bd){ //conectarse a la BD con MySQL if (!($link = mysql_connect($host, $usuario, $password, $bd))){ echo "Error conectando a la base de datos."; exit(); } if (!mysql_select_db($bd,$link)){ echo "Error seleccionando la base de datos."; exit(); } return $link; } index.php <?php /** /*Despliega la vitrina con todos los proyectos. /*@author: Rodrigo Marcelo Díaz Troncoso <[email protected]> /*@version: 1.0 /*@copyright Digtrain */ header('content-type: text/html; charset=utf-8'); session_start(); require_once("configuracion.php"); require_once("funcionesPHP.php"); $link = conectarse($host, $usuario, $password, $bd); $menu = "<ul id=\"menu_horizontal\">"; function getHijos($id){ $sql = "SELECT * FROM menu WHERE padre = $id ORDER BY orden ASC"; $res = mysql_query($sql); $hijos = mysql_affected_rows(); return($hijos); } function menu($id, &$m, $profundidad = 0) { //echo "[ $id, $profundidad ]"; $sql = "SELECT * FROM menu WHERE padre = $id ORDER BY orden ASC"; $res = mysql_query($sql); $j = 1; while ($row = mysql_fetch_array($res)){ //pregunto la cantidad de hijos que tiene el item que entra al primero le agrego <ul> y al ultimo hijo le agrego </ul> $hijos = getHijos($row['id']); echo "<br>HIJOS: $hijos - ";echo $row['texto']." -- "; echo "<a href=\"{$row['url']}\">{$row['texto']}</a>";echo "$profundidad, $j"; $m .= "<li><a href=\"{$row['url']}\">".$row['texto']."</a></li>"; if($hijos > 0){ $m .= "<ul>"; } if( ($row['padre'] != 0) && (getHijos($row['padre']) == $j) && (getHijos($row['id']) == 0)){ $m .= "</ul>"; } //caso especial /*if( ($row['padre'] != 0) && (getHijos($row['padre']) == $j) && (getHijos($row['id']) == 0)){ $m .= "<-/ul><-/ul>"; }*/ $j++; menu($row['id'], $m, $profundidad + 1); } } menu(-1, $menu); echo"<br><br>"; $menu .= "</ul>"; print_r($menu); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Tipos de menu</title> <link rel="stylesheet" type="text/css" href="menu.css" </head> <body> <br/><br/><br/> <!-- MENU VERTICAL --> <ul id="menu_horizontal"> <li> INICIO </li> <li> OT </li> <ul> <li><a href="#"> INGRESAR OT</a></li> <li><a href="#"> ACTUALIZAR OT</a></li> <li><a href="#"> VER OT</a></li> </ul> <li> MANTENEDORES </li> <ul> <li><a href="#"> PERSONAL</a></li> <ul> <li><a href="#"> INGRESAR PERSONAL</a></li> <li><a href="#"> ACTUALIZAR PERSONAL</a></li> </ul> <li><a href="#"> MAQUINAS</a></li> <ul> <li><a href="#"> INGRESAR MAQUINAS</a></li> <li><a href="#"> ACTUALIZAR MAQUINAS</a></li> </ul> <li><a href="#"> BODEGA</a></li> <ul> <li><a href="#"> INGRESAR BODEGA</a></li> <li><a href="#"> ACTUALIZAR BODEGA</a></li> </ul> </ul> <li> OC </li> <ul> <li><a href="#"> INGRESAR OC</a></li> <li><a href="#"> ACTUALIZAR OC</a></li> </ul> <li> SALIR </li> </ul> </body> </html> CSS /* MENU HORIZONTAL */ #menu_horizontal{ list-style:none;/*le sacamos los circulos*/ margin: 0; padding: 0; } #menu_horizontal li{ margin: 2px; padding: 2px; border: 1px solid #CCCCCC; list-style:none; /*float:left;*/ /*para eliminar el comportamiento de elemento de bloque(salto de linea), y quede como menu horizontal */ } Al final del index. esta el menu a "fierro" de como deberia quedar arriba muestra como me queda a mi :(... hay me avisas si te funka. -
Menu configurable PHP con B.D.
romaditro replied to romaditro's topic in Aplicaciones de Escritorio & Scripts PHP
Hola viejo gracias por la repuesta, mira justo hice algo como tu decis llamando a una funcion recursiva y me funciono puedo nrecorrer el menu completo y en orden, el problema es que a medida que lo recorro lo voy concatenando con las etiquetas <lu> y <li> correspondientemente para crear una lista y despues le pego el CSS y creo mi menu. El problem que tengo que hasta el segundo nivel me funciona...pero cuando llego al ultimo hijo del tercer nivel (que a la vez es el ultimo nieto) hay que cerrar con dos <ul><ul> y hay es donde se me cae. Si alguien me pued dar una mano seria de gran ayuda. Aqui va el codigo: $menu = "<ul id=\"menu_horizontal\">"; function getHijos($id){ //me indica la cantidad de hijos que tiene un ITEM $sql = "SELECT * FROM menu WHERE padre = $id ORDER BY orden ASC"; $res = mysql_query($sql); $hijos = mysql_affected_rows(); return($hijos); } function menu($id, &$m, $profundidad = 0) { $sql = "SELECT * FROM menu WHERE padre = $id ORDER BY orden ASC"; $res = mysql_query($sql); $j = 1; while ($row = mysql_fetch_array($res)){ //pregunto la cantidad de hijos que tiene el item que entra al primero le agrego <ul> y al ultimo hijo le agrego </ul> $hijos = getHijos($row['id']); echo "<a href=\"{$row['url']}\">{$row['texto']}</a>";echo "$profundidad, $j"; $m .= "<li><a href=\"{$row['url']}\">".$row['texto']."</a></li>"; if($hijos > 0){//si tiene hijos le agrego el <ul> $m .= "<ul>"; } if( ($row['padre'] != 0) && (getHijos($row['padre']) == $j) && (getHijos($row['id']) == 0)){ //si es el ultimo hijo cierro $m .= "</ul>"; } $j++; menu($row['id'], $m, $profundidad + 1); } } menu(-1, $menu); echo"<br><br>"; $menu .= "</ul>"; print_r($menu); En resumen , ahora mi problema es como cresta le voy pegando las etiquetas <ul> y <li>, mi problema puntual es al terminar los "nietos". :angry: <_< -
Hola alguien sabe como hacer un menu que se pueda configurar y almacenar en una base de datos y despues se despliege en pantalla. La estuctura de la tabla de la base de datos ya se como hacerla el problema es como saco los datos de la BD y los despliego en pantalla La tabla seria algo asi: TABLA MENU | id_menu | padre | texto | url | donde : id_menu: seria el identificador unico para cada item del menu padre : para el item principal de cada menu seria un valor -1 (po ejemplo) y para los hijos seria el id al item al cual pertenece texo : es el nombre del item url : bueno obvio. Lo que estoy tratando de hacer es un menu multiniveles y hacerlo una sola vez y que me sirva para siempre y no estar cambiando cada vez que le quito o agrego un nivel. La idea es que quede algo pareido a esto: MENU PRINCIPAL *ITEM 1 +item 1.1 +item 1.2 *ITEM 2 +item 2.1 +item 2.2 -item 2.2.1 -item 2.2.2. ...etc gracias :rolleyes: