Foros del Web » Programando para Internet » PHP »

Aplicar css a enlace activo de menu dinàmico a partir de registros de tabla

Estas en el tema de Aplicar css a enlace activo de menu dinàmico a partir de registros de tabla en el foro de PHP en Foros del Web. Hola a todos, Soy nuevo usuario en foros del web pero hace mucho que vengo utilizando sus consejos y siempre me han sido de gran ...
  #1 (permalink)  
Antiguo 09/01/2013, 10:55
 
Fecha de Ingreso: enero-2013
Mensajes: 6
Antigüedad: 11 años, 3 meses
Puntos: 1
Aplicar css a enlace activo de menu dinàmico a partir de registros de tabla

Hola a todos,

Soy nuevo usuario en foros del web pero hace mucho que vengo utilizando sus consejos y siempre me han sido de gran ayuda, muchas gracias
Me encuentro con un problema para el que no tengo solución ahora mismo, disculpen si ya se ha tratado, no consigo encontrarlo en el foro
Tengo un menu a partir de los regitros de una tabla que enlazan a la sección del menú a través de la url, querría aplicar una clase al registro activo, es decir a la página en la que me encuentre, por favor podrían ayudarme con esto
El caso sería que si te encuentras en la url: /menu.php?id_section=5&id_lang=1 el registro con id_section=5 utilizase la clase .active


muchas gracias de antemano
el código del menu es el siguiente (trabajo con dreamweaver):


Archivo: menu.php


Código PHP:
<?php require_once('Connections/conexion.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$colname_section_lang "-1";
if (isset(
$_GET['id_lang'])) {
  
$colname_section_lang $_GET['id_lang'];
}
mysql_select_db($database_conexion$conexion);
$query_section_lang sprintf("SELECT mc_section_lang.id, mc_section_lang.id_section, mc_section_lang.id_lang, mc_section_lang.section_lang  FROM mc_section_lang WHERE id_lang = %s AND id_section >3"GetSQLValueString($colname_section_lang"int"));
$section_lang mysql_query($query_section_lang$conexion) or die(mysql_error());
$row_section_lang mysql_fetch_assoc($section_lang);
$totalRows_section_lang mysql_num_rows($section_lang);
?>
<!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>menu</title>
<style type="text/css">
.active {
    font-style: italic;
    font-weight: bold;
    text-transform: uppercase;
    color: #F00;
    text-decoration: none;
}
</style>
</head>

<body>

<div id="submenu">
<ul>
<?php do { ?>
  <li><a href="?id_section=<?php echo $row_section_lang['id_section']; ?>&id_lang=<?php echo $row_section_lang['id_lang']; ?>"><?php echo $row_section_lang['section_lang']; ?></a></li>
  <?php } while ($row_section_lang mysql_fetch_assoc($section_lang)); ?>
</ul>
</div>

</body>
</html>
<?php
mysql_free_result
($section_lang);
?>
Archivo: conexion.php


Código PHP:
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_conexion "localhost";
$database_conexion "db372898479";
$username_conexion "root";
$password_conexion "";
$conexion mysql_pconnect($hostname_conexion$username_conexion$password_conexion) or trigger_error(mysql_error(),E_USER_ERROR); 
?>
  #2 (permalink)  
Antiguo 09/01/2013, 11:02
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Aplicar css a enlace activo de menu dinàmico a partir de registros de tabl

Podrias usar Jquery

Código PHP:
Ver original
  1. <?php require_once('Connections/conexion.php'); ?>
  2. <?php
  3. if (!function_exists("GetSQLValueString")) {
  4. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")  
  5. {
  6.   if (PHP_VERSION < 6) {
  7.     $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  8.   }
  9.  
  10.   $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  11.  
  12.   switch ($theType) {
  13.     case "text":
  14.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  15.       break;    
  16.     case "long":
  17.     case "int":
  18.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  19.       break;
  20.     case "double":
  21.       $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  22.       break;
  23.     case "date":
  24.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  25.       break;
  26.     case "defined":
  27.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  28.       break;
  29.   }
  30.   return $theValue;
  31. }
  32. }
  33.  
  34. $colname_section_lang = "-1";
  35. if (isset($_GET['id_lang'])) {
  36.   $colname_section_lang = $_GET['id_lang'];
  37. }
  38. mysql_select_db($database_conexion, $conexion);
  39. $query_section_lang = sprintf("SELECT mc_section_lang.id, mc_section_lang.id_section, mc_section_lang.id_lang, mc_section_lang.section_lang  FROM mc_section_lang WHERE id_lang = %s AND id_section >3", GetSQLValueString($colname_section_lang, "int"));
  40. $section_lang = mysql_query($query_section_lang, $conexion) or die(mysql_error());
  41. $row_section_lang = mysql_fetch_assoc($section_lang);
  42. $totalRows_section_lang = mysql_num_rows($section_lang);
  43. ?>
  44. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  45. <html xmlns="http://www.w3.org/1999/xhtml">
  46. <head>
  47. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  48. <title>menu</title>
  49. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
  50. <script type="text/javascript">
  51.     $(function()
  52.     {
  53.        $(".links").click(function()// en evento click de cada enlace con la clase .links
  54.        {  
  55.           $(".links").removeClass("active");//quito la clase active de todos los demas links
  56.           $(this).addClass("active");// añado la clase active al enlace clickeado
  57.        });
  58.     })
  59. </script>
  60.  
  61. <style type="text/css">
  62. .active {
  63.     font-style: italic;
  64.     font-weight: bold;
  65.     text-transform: uppercase;
  66.     color: #F00;
  67.     text-decoration: none;
  68. }
  69. </style>
  70. </head>
  71.  
  72. <body>
  73.  
  74. <div id="submenu">
  75. <ul>
  76. <?php do { ?>
  77.   <li><a class="links" href="?id_section=<?php echo $row_section_lang['id_section']; ?>&id_lang=<?php echo $row_section_lang['id_lang']; ?>"><?php echo $row_section_lang['section_lang']; ?></a></li>
  78.   <?php } while ($row_section_lang = mysql_fetch_assoc($section_lang)); ?>
  79. </ul>
  80. </div>
  81.  
  82. </body>
  83. </html>
  84. <?php
  85. mysql_free_result($section_lang);
  86. ?>
  #3 (permalink)  
Antiguo 09/01/2013, 11:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Aplicar css a enlace activo de menu dinàmico a partir de registros de tabl

Simplemente realiza un if() donde compruebes el valor que tienes en $_GET con el de tu fila y le agregue la clase active.

Saludos.
  #4 (permalink)  
Antiguo 09/01/2013, 11:19
 
Fecha de Ingreso: enero-2013
Mensajes: 6
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Aplicar css a enlace activo de menu dinàmico a partir de registros de tabl

Cita:
Iniciado por GatorV Ver Mensaje
Simplemente realiza un if() donde compruebes el valor que tienes en $_GET con el de tu fila y le agregue la clase active.

Saludos.
Muchas gracias GatorV, podrías por favor explicarmelo un poco más detalladamente, no domino tanto php todavía y ,pese a que lo entiendo, no se como aplicar lo que me comentas
gracias de nuevo
  #5 (permalink)  
Antiguo 09/01/2013, 11:24
 
Fecha de Ingreso: enero-2013
Mensajes: 6
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Aplicar css a enlace activo de menu dinàmico a partir de registros de tabl

informacionsys, podrías indicarme donde puedo encontrar una solucion con jquery por favor
gracias de antemano
  #6 (permalink)  
Antiguo 09/01/2013, 11:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Aplicar css a enlace activo de menu dinàmico a partir de registros de tabl

Pues es un simple if:
Código PHP:
Ver original
  1. if ($laseccionactiva == $valoractualdeldowhile) { echo "class=\"active\""; }

Solo reemplaza las variables por las correctas y listo
  #7 (permalink)  
Antiguo 09/01/2013, 11:32
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Aplicar css a enlace activo de menu dinàmico a partir de registros de tabl

hola

simplemente prueba el codigo que te publique , si te fijas ahi unos cambios..
  #8 (permalink)  
Antiguo 09/01/2013, 11:35
 
Fecha de Ingreso: enero-2013
Mensajes: 6
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Aplicar css a enlace activo de menu dinàmico a partir de registros de tabl

disculpa, me pasa por no fijarme, ahora lo miro, muchas gracias
saludos
  #9 (permalink)  
Antiguo 09/01/2013, 11:44
 
Fecha de Ingreso: enero-2013
Mensajes: 6
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Aplicar css a enlace activo de menu dinàmico a partir de registros de tabl

hola de nuevo, fuenciona en el momento soltar el click pero una vez suelto desparece la clase, me interesa que se mantenga, se puede utilizar otra variable jquery en vez de click?
gracias
  #10 (permalink)  
Antiguo 09/01/2013, 11:47
 
Fecha de Ingreso: enero-2013
Mensajes: 6
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Aplicar css a enlace activo de menu dinàmico a partir de registros de tabl

Gator
Lo tengo muchísimas gracias

<a href="section.php?id_section=<?php echo $row_section_lang['id_section']; ?>&id_lang=<?php echo $row_section_lang['id_lang']; ?>" <?php if ($_GET['id_section'] == $row_section_lang['id_section']) { echo "class=\"active\""; } ?>
  #11 (permalink)  
Antiguo 09/01/2013, 11:48
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Aplicar css a enlace activo de menu dinàmico a partir de registros de tabl

mmmm , raro porque deberia dejarlo activo hasta que le de click en otro enlace.. no tiene sentido que lo quite cuando se deja de presionar
  #12 (permalink)  
Antiguo 09/01/2013, 13:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Aplicar css a enlace activo de menu dinàmico a partir de registros de tabl

Cita:
Iniciado por levistubbs Ver Mensaje
Gator
Lo tengo muchísimas gracias

<a href="section.php?id_section=<?php echo $row_section_lang['id_section']; ?>&id_lang=<?php echo $row_section_lang['id_lang']; ?>" <?php if ($_GET['id_section'] == $row_section_lang['id_section']) { echo "class=\"active\""; } ?>
Excelente

Etiquetas: css, css+dinamicos, dinamico, registros, 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 10:13.