Cómo hacer un Menú Dinámico php+MySQL?

Hola, amigos!!

Antes que nada, gracias por aceptarme en este estupendo foro, que está genial!

Soy desarrollador Web, novato en esto del php+MySQL y estoy haciendo una Web que requiere un menú que tenga exactamente la misma forma de desplegar las secciones como el que está en este sitio: http://linkenforos.com.ar/

Hasta donde sé, hay que hacer eso con los whiles y lo he intentado, pero no hay caso. De veras les agradeceré que me ayuden, estoy muy angustiado porque no consigo resolver el problema; hasta ahora no lo he conseguido y ya esto me tiene mal.

Por favor, no me dejen botado sin la ayuda que necesito.

Desde ya muy agradecido!
Oh, a lo mejor el tema es de nulo interés, pero bueno, gracias por leer, en todo caso :)

Bye
Ja... yo soy el creador de ese menu jaja
Para lo dinamico, si vas a usar informacion de una base de datos, lo mas simple seria conectarte a ella, seleccionar la informacion y luego ir mostrando los menus segun como tu lo quieras, un ejemplo:
<?php
mysql_connect("localhost","root","");
mysql_select_db("linken");
// Aca hacemos un select, mira bien como:
$select = mysql_query("SELECT * FROM `una_tabla`");
// Ahora se usa una estructura repetitiva, lo mas comun seria un while:
while ($v = mysql_fetch_array($select))
{
/* Y aqui haces lo que necesites, supongamos que en una_tabla tienes una columna llamada "enlaces" con urls a otros sitios y otra llamada "titulo" con el titulo del enlace, entonces seria algo asi: */
echo "".$v['titulo']."
";
}
?>
Espero que sea lo que buscas. Saludos
Uff, que bueno, man, una maravilla que hayan contestado y más encima el creador del sitio y programador de ese sistema de menú! :D

Antes que nada, te felicito por tu sitio Web y tu emprendimiento; está genial, traté de descargar tu solución, pero algo pasa que no pude, parece que la descarga no está disponible. Pero bueno, esto es harina de otro costal!

Bueno, me esforcé por echar a andar el asunto con mi base de datos, pero no ha pasado nada.

Perdona mi atrevimiento, pero la verdad que quiero aprovecharme del pánico (jeje) y pedirte derechamente que me ayudes con el asunto. A lo mejor es una frescura de mi parte, pero creo que puede servirle a los demás; si esto resulta, estoy dispuesto a compartir el script que tengo a punto con toda la comunidad; es bastante completo y tiene hasta un Administrador de Contenidos.

¿Me ayudas, amigo? Ojalá que si.

Mira, ésta es mi base de datos:
-- phpMyAdmin SQL Dump
-- version 2.10.3
-- [url]http://www.phpmyadmin.net[/url]
-- 
-- Servidor: localhost
-- Tiempo de generación: 19-10-2009 a las 21:40:43
-- Versión del servidor: 5.0.51
-- Versión de PHP: 5.2.6

-- 
-- Base de datos: `roger3`
-- 

-- --------------------------------------------------------

-- 
-- Estructura de tabla para la tabla `sn_categorias`
-- 

CREATE TABLE `sn_categorias` (
  `cat_ID` int(11) NOT NULL auto_increment,
  `catCategoria` varchar(100) NOT NULL,
  PRIMARY KEY  (`cat_ID`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

-- 
-- Volcar la base de datos para la tabla `sn_categorias`
-- 


-- --------------------------------------------------------

-- 
-- Estructura de tabla para la tabla `sn_comentarios`
-- 

CREATE TABLE `sn_comentarios` (
  `id` int(11) NOT NULL,
  `id_comentario` int(11) NOT NULL auto_increment,
  `nick` varchar(255) default NULL,
  `email` varchar(255) default NULL,
  `comentario` mediumtext,
  `ip` varchar(150) NOT NULL,
  `fecha` varchar(150) NOT NULL,
  PRIMARY KEY  (`id_comentario`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

-- 
-- Volcar la base de datos para la tabla `sn_comentarios`
-- 


-- --------------------------------------------------------

-- 
-- Estructura de tabla para la tabla `sn_noticias`
-- 

CREATE TABLE `sn_noticias` (
  `not_ID` int(11) NOT NULL auto_increment,
  `notTitulo` varchar(255) NOT NULL,
  `fecha` datetime NOT NULL,
  `notTexto` longtext NOT NULL,
  `notFoto` varchar(255) NOT NULL,
  `catCategoria` varchar(50) NOT NULL,
  `subCategoria` varchar(50) NOT NULL,
  PRIMARY KEY  (`not_ID`),
  FULLTEXT KEY `buscador` (`notTitulo`,`notTexto`,`catCategoria`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

-- 
-- Volcar la base de datos para la tabla `sn_noticias`
-- 


-- --------------------------------------------------------

-- 
-- Estructura de tabla para la tabla `sn_subcategorias`
-- 

CREATE TABLE `sn_subcategorias` (
  `subcat_ID` int(11) NOT NULL auto_increment,
  `subCategoria` varchar(50) NOT NULL,
  `catCategoria` varchar(50) NOT NULL,
  PRIMARY KEY  (`subcat_ID`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

-- 
-- Volcar la base de datos para la tabla `sn_subcategorias`
-- 

Ojalá puedas ayudarme, de veras te lo agradeceré mucho y, repito, si todo queda bien, subo esto a un server como Rapidshare en beneficio de todos los interesados.

Ah, por cierto, si lo necesitas, puedo enviarte lo que he hecho hasta el momento; todo resulta, excepto lo del menú que no tiene caso que me salgan las categorías y subcategorías, tal como en tu sitio Web. Mi email es [correo eliminado]

Saludos y, nuevamente, muchas gracias desde ya!
mmm... ya que este es el foro de php, puedo ayudarte con el codigo php nada mas, si quieres hacer un desplegable pues... para eso esta el foro de js :wink:
Vamos a lo nuestro, podemos hacer un menu lista a un costado de la pagina como nos enseño jorgens, y mediande php ir agregandole contenido, algo asi:
<?php
// ...
echo "<ul>";
$scategorias = mysql_query("SELECT * FROM `sn_categorias`");
while ($categorias = mysql_fetch_array($scategorias))
{
echo "
  • ".$categorias['catCategoria']."";
    $sub = mysql_query("SELECT * FROM `sn_subcategorias`");
    if (mysql_num_rows($sub) > 0)
    {
    // Hacemos otro while solo si vale la pena (si me entiendes)
    echo "<ul>";
    while ($subcategorias = mysql_fetch_array($sub))
    {
    echo "
  • ".$subcategorias['subCategoria']."";
    }
    echo "";
    }
    }
    echo "";
    ?>
  • Espero que te sirva y lo puedas modificar
    Hola, KenLego!

    Por más que lo intenté, no hay caso. No me lee la base de datos. Hablando de la base de datos, decidí simplificar un poco el tema del nombre de las tablas y campos y formé una nueva base de datos, quedando así:

    -- phpMyAdmin SQL Dump
    -- version 2.10.3
    -- [url]http://www.phpmyadmin.net[/url]
    -- 
    -- Servidor: localhost
    -- Tiempo de generación: 21-10-2009 a las 17:24:33
    -- Versión del servidor: 5.0.51
    -- Versión de PHP: 5.2.6
    
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    
    -- 
    -- Base de datos: `base_datos`
    -- 
    
    -- --------------------------------------------------------
    
    -- Estructura de tabla para la tabla `categoria`
    -- 
    
    CREATE TABLE `categoria` (
      `id` int(21) NOT NULL auto_increment,
      `Categoria` varchar(30) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    
    -- 
    -- Volcar la base de datos para la tabla `categoria`
    -- 
    
    
    -- --------------------------------------------------------
    
    -- 
    -- Estructura de tabla para la tabla `contenido`
    -- 
    
    CREATE TABLE `contenido` (
      `id` int(21) NOT NULL auto_increment,
      `Titulo` varchar(180) NOT NULL,
      `Categoria` varchar(50) NOT NULL,
      `Subcategoria` varchar(50) NOT NULL,
      `Resumen` mediumtext NOT NULL,
      `Texto` longtext NOT NULL,
      `Foto` varchar(255) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    
    -- 
    -- Volcar la base de datos para la tabla `contenido`
    -- 
    
    
    -- --------------------------------------------------------
    
    -- 
    -- Estructura de tabla para la tabla `subcategoria`
    -- 
    
    CREATE TABLE `subcategoria` (
      `id` int(11) NOT NULL auto_increment,
      `Subcategoria` varchar(30) NOT NULL,
      `Categoria` varchar(30) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    
    -- 
    -- Volcar la base de datos para la tabla `subcategoria`
    -- 

    Como dije antes, si esto tiene un final feliz, estoy dispuesto a compartir el resultado, en beneficio de todos los que se interesen por una solución distinta a las muchas que hay en la megared y que puede servir para proyectos corporativos sin utilizar una solución prehecha, como WordPress, por ejemplo (me encanta el Wordpress, pero nunca se me ocurriría hacer un sitio para un cliente en este script, aunque me consta que hay personas que sí lo hacen!! jeje).

    Saludos y gracias por tu ayuda y buena disposición.
    creo que acá hay una pequeña confusión...
    dragon, vos lo que queres es crear ese menú desplegable?

    si es asi, te comento que no se hace con php, sino con java script, y es el que le da el caracter de desplegable :D

    ¿entendes esto que te digo?

    o tal vez yo no entiendo que es lo que queres hacer?

    para hacer un desplegable como ese, o cualquier otro, es necesario el script del mismo, que podes armar vos mismo (y comerte algunas horas, calculando que sabes java script, sentado programando) o utilizar uno de los tantos que existen en la web.

    vemos que decis
    Sí, sé perfectamente lo que te digo. El comportamiento del menú cuando se despliegan las subcategorías hacia abajo (mouseover) es mediante un Javascript. Pero, precisamente, para que salgan los vínculos o subcategorías correspondientes a cada categoría al pasar el mouse por cada categoría, tiene que estar leyendo la data almacenada en la base de datos MySQL, ¿me entiendes? Ambos interactuando como relojito suizo. Sé muy bien que conseguir esto no es fácil, pero si lo hizo Ken, quiere decir entonces que demás se puede! :)

    Y éso es lo que quiero lograr y no se si me pueden ayudar con esta tarea. Bueno, siempre y cuando todos acá tengan ganas de echarle para adelante, se subentiende, en caso contrario, no hay drama por mi parte y dejamos esto hasta acá :wink:

    Bye
    okey entiendo, pero realmente no se si vale tanto la pena hacer tanto lio :?

    es decir en que facilitaría tener eso en una bd?

    se hace que es un lio de mas, ya que se puede hacer mas simple, sin tener que utilizar una base de datos :?
    Lo sé, amigo. Es un problema, pero como estoy haciendo un sitio Web con secciones o categorías variables, que se pueden agregar o eliminar a voluntad, entonces necesito hacer algo así.

    Imagínate un sitio donde una persona quiere tener 10 áreas de interés (secciones o categorías) y 20 subcategorías en cada una de ellas, hacer el sitio Web que sea auto administrable, es algo pesadillesco.

    No me imagino haciendo tablas en mi base de datos (o sea, sí me lo imagino, porque una vez tuve que hacerlo!) para cada una de las categorías y subcategorías y más encima tener que rehacer todo si, andando el tiempo, el cliente decide tener 3 secciones más con otras 10 subsecciones para c/u; ya me pasó una vez y créeme que fue una pesadilla; trabajé como mono y al final terminé trabajando por bolitas de dulce, hasta llegaba a tiritar cada vez que esa persona me llamaba! jejeje :shock:

    Por eso es que pido esta ayuda.

    Desde ya muchísimas gracias por vuestra ayuda! :)
    claro si eso lo entiendo, pero es por eso que creo que trabajar con una bd es medio complicado al dope.

    mira esto que escribí hace un tiempo:

    http://www.zona-webmaster.com.ar/php-mysql/web-modular.php

    con esa función solamente tendrías que modificar los .txt que serian comunes a todas tus paginas.

    de todas formas te digo que no soy muy diestro en php/mysql, así que no podría participar en tu proyecto por falta de conocimiento.

    bueno amigo, espero que tengas suerte con eso, para cualquier otra cosa que puedas necesitar, ya sabes donde encontrarme :wink:
    Sip, ojalá me vaya bien, amigo Arian :)

    Aunque, me late que tendré que hacer todo según las viejas usanzas!! jajja :P

    Bye
    He usado este código para hacer mi menú; en Firefox me funciona a las mil maravillas, pero en Explorer no funciona para nada.
    ¿Qué puede ser?
    ayuda por favor soy principiante en esto y se los agradeseria mucho
    <?php

    require("conex.php");

    $select = mysql_query("SELECT * FROM materias where semestre=1");

    while ($v = mysql_fetch_array($select))
    {
    echo "<a href='uploads/ciclos de vida.pdf'>".$v[1]."</a><br>
    ";

    }
    ?>
    aqui me muestra mis datos en forma de lista pero todos me mandan al mismo documento.
    como hacer que cada registro me mande al documento que yo quiera????
    <?php
    
    
    //Esta consulta es un Join con la tabla categorias y subcategorias
    $sqlQuery = mysql_query("SELECT categorias.*, subcategorias.* FROM categorias, subcategorias
    
                             WHERE categorias.categoria_ID = subcategorias.categoria_id
    
                             ORDER BY categoria_nombre ASC", $hard) or die(mysql_error());
    
    
    
    $categoria = ""; //Declaración de la variable categoria
    
    $categorias = array(); //declarando la variable categorias de tipo array
    
    $pos = 0; // variable con valor 0
    
    while ($row = mysql_fetch_object($sqlQuery)){ // mi primer bucle
    
        if($categoria != $row -> categoria_nombre){
    
            //echo "<h1>".$row -> categoria_nombre."...</h1>"; //Encabezado del menú
    
            $categoria = $row -> categoria_nombre;
    
            $pos = array_push( $categorias,  array( $categoria, array() ) );
    
        }    
    
       $categorias[$pos][1][] = array( $row->subcategoriaCategoriaID, $row -> categoriaCategoria ); // Usamos la variable de tipo Array...
    
        
    
    }
    
    
    
    foreach ($categorias as $categoria) //Sub-cabezado del menu
    
    {
    
        echo "<table width=\"100%\" height=\"32px\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
    
            <tr>
    
              <td height=\"2px\" background=\"img/menu.png\" valign=\"middle\"  class=\"encabezados\"><div align=\"center\" id='enc'>" . $categoria[0] . "</div></td></tr>";
    
       
    
            foreach ($categoria[1] as $subCat)
    
    		
    
            {
    
    		/* PRUEBA DE LA PROGRAMACI&Oacute;N
    
    		if($categoria != $row -> categoria_nombre){
    
    		echo $categoria = $row -> categoria_nombre;
    
            $pos = array_push( $categorias,  array( $categoria, array() ) );
    
    		echo $categoria[1];
    
    		}
    
    		echo $row -> categoria_nombre;
    
    		*/
    
    		echo "<div id=\"button\"  background=\"#C2E8C3\"><ul>";
    
             echo "<tr bgcolor=\"#0066CC\">
    
              <td bgcolor=\"#00CCCC\"><div id=\"button\">
    
                  <ul>
    
                    <!-- CSS Tabs -->
    
                    <li  background=\"#C2E8C3\"><a href='?mod=&categoriaID=" .  $subCat[0] . "'>" . $subCat[1] ."</a></li>" . 
    
                    
    
                  "</ul>
    
              </div></td>
    
            </tr>";
    
            }echo "</table>";
    
        
    
         
    
    } 
    
    ?>
    [:D] Esto si funciona de mil maravilla... en estos días lo voy a cambiar el código para poner otro sub-menu dentro del otro sub-menú... jajaja... si alguien tiene duda del código...???