Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/09/2012, 18:02
tkngrafik
 
Fecha de Ingreso: septiembre-2012
Mensajes: 15
Antigüedad: 11 años, 7 meses
Puntos: 0
Pregunta Respuesta: current en menu dinamico y for con mysqli

Gracias por tomar tu tiempo para ayudarme.....Bien te pondré el código según el orden que tengo ya que son varias páginas y también te pondré el de la base de datos.......la idea es que si está en la página contacto por medio de una clase en css tenga un estilo diferente mmmm sea de color rojo por ejemplo o sea que si yo le doy clic a un enlace del menú cuando me abra la página aparezca ese menú con un efecto de color (eso ya lo hice en css pero no logro aplicarlo a un menú dinámico)........sobre lo del for con mysqli te pondré un código que utilice pero no se como aplicarlo a este.........


BASE DE DATOS
Código MySQL:
Ver original
  1. --
  2. -- Base de datos: `menu`
  3.  
  4. -- Estructura de tabla para la tabla `menuPrincipal`
  5.  
  6. DROP TABLE IF EXISTS `menuPrincipal`;
  7. CREATE TABLE IF NOT EXISTS `menuPrincipal` (
  8.   `idNavPri` tinyint(3) NOT NULL AUTO_INCREMENT,
  9.   `nomNavPri` varchar(100) NOT NULL,
  10.   `urlNavPri` varchar(100) NOT NULL,
  11.   `titleNavPri` varchar(100) NOT NULL,
  12.   PRIMARY KEY (`idNavPri`)
  13. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT='Tabla para el menu principal' AUTO_INCREMENT=4 ;
  14.  
  15. --
  16. -- Volcado de datos para la tabla `menuPrincipal`
  17. --
  18.  
  19. INSERT INTO `menuPrincipal` (`idNavPri`, `nomNavPri`, `urlNavPri`, `titleNavPri`) VALUES
  20. (1, 'Inicio', 'index', 'Página principal'),
  21. (2, 'Programación', 'programacion', 'Toda la programación'),
  22. (3, 'Noticias', 'noticias', 'Espacio para noticias'),
  23. (4, 'Agenda', 'agenda', 'Información de eventos importantes ');

PÁGINA CONEXION.PHP
AQUÍ REALIZO LA CONEXIÓN A LA BASE DE DATOS Y LA CONSULTA SQL
Código PHP:
Ver original
  1. <?php
  2. //CONEXION
  3. $conn = new mysqli("localhost", "user", "pass", "basededatos");
  4. $conn->query("SET NAMES 'utf8'");
  5.  
  6. // COMPROBAR CONEXION
  7. if ($conn->connect_errno) {
  8.     printf("Error al conectarse: %s\n", $conn->connect_error);
  9.     exit();}
  10.  
  11. //MENU PRINCIPAL
  12. $queryNavPri       = "SELECT p.idNavPri, p.nomNavPri, p.urlNavPri, p.titleNavPri FROM menuPrincipal AS p";
  13. $resNavPri         = $conn->query($queryNavPri);
  14.  
  15. //CERRAR CONEXION
  16. $conn->close();
  17. ?>

PÁGINA MENUPRINCIPAL.PHP
AQUÍ REALIZO LOS ARREGLOS PARA EL MENU PRINCIPAL
Código PHP:
Ver original
  1. <ul>
  2. <?php
  3. if($resNavPri->num_rows > 0){
  4. while($rowNavPri = $resNavPri->fetch_assoc()){
  5. echo'
  6.     <li>
  7.         <a href="'.$rowNavPri['urlNavPri'].'.php" title="'.$rowNavPri['titleNavPri'].'">'.$rowNavPri['nomNavPri'].'</a></li>';}}?>
  8. </ul>

PÁGINA INDEX.PHP
ESTE ES EL INDEX Y VINCULO EL MENU CON UN INCLUDE
Código PHP:
Ver original
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Página de menú</title>
  6. </head>
  7.  
  8. <body>
  9. ?php include('clases/menu.php'); ?><!--menu Principal -->
  10. </body>
  11. </html>

Este sería el código y de la manera que lo tengo.......Funciona a la perfección pero el punto es que no me da para poner un estilo al menu que está activo y ese es mi problema.....


sobre lo anterior que te decía del for con mysqli y no mysql te mostraré el código


CLASE PARA LA CONEXIÓN Y CONSULTA
ESTA ES UNA CLASE BASADA EN MYSQL
Código PHP:
Ver original
  1. /////////////////////////////////////
  2. /*conexion para la base de datos menu*/
  3. ////////////////////////////////////
  4. class ConnMysql{
  5.     public static function conn(){
  6.         $conexion = mysql_connect("localhost","user","pass");
  7.         mysql_query("SET NAMES 'utf8'");
  8.         mysql_select_db("elementos");
  9.         return $conexion;
  10.         }
  11.     }
  12. //consulta para la tabla menu
  13. class menu{
  14.     private $enlaces;
  15.     public function __contruct(){
  16.         $this->enlaces=array();
  17.         }
  18.     public function get_enlaces(){
  19.         $sql_menu = "SELECT nombre_pagina, enlace_menu FROM menu";
  20.         $datos_menu = mysql_query($sql_menu, ConnMysql::conn());
  21.             while ($reg_menu=mysql_fetch_assoc($datos_menu)){
  22.             $this->enlaces[]=$reg_menu;
  23.             }
  24.             return $this->enlaces;
  25.     }
  26. }

PAGINA INDEX.PHP
AQUÍ MUESTO EL MENÚ PERO CON UN FOR Y NO UN WHILE Y AHÍ ES QUE ME ENREDO....EL MENÚ FUNCIONA IGUAL DE MARAVILLA EN ESTE EJEMPLO PERO COMO TE DECÍA CON MYSQL
Código PHP:
Ver original
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Página menú</title>
  6. </head>
  7. <body>
  8.  
  9. <nav class="nav_principal">
  10.     <ul>
  11.         <?php
  12.         $nav = new menu;
  13.         $ver_menu = $nav->get_enlaces();
  14.         for($i=0;$i<7;$i++){
  15.         echo "<li><a href='page/".$ver_menu[$i]["enlace_menu"]."'>".$ver_menu[$i]["nombre_pagina"]."</a><li>";}?>                  
  16.     </ul>
  17. </nav>
  18. <nav class="sub_nav">
  19.     <ul>
  20.         <?php
  21.         for($i=8;$i<13;$i++){
  22.         echo "<li><a href='page/".$ver_menu[$i]["enlace_menu"]."'>".$ver_menu[$i]["nombre_pagina"]."</a><li>";}?>      
  23.     </ul>
  24. </nav>
  25.  
  26. </body>
  27. </html>


Si te fijas en esta parte dividí el menú en principal y secundario pero haciendo una sola consulta y sería fantástico si descubro como hacerlo pero no con mysql sino con mysqli..........pero por favor en partes la primera es la más primordial y si conoces como aplicar la segunda en la primera te lo agradezco