Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

171
Vistas
¿Cómo establecer la condición en el siguiente código para marcar la página actual en la paginación?

Estoy tratando de establecer una condición para la paginación de php-mysql para que pueda cambiar la página actual " li " a " li class="active" " para marcar la página seleccionada actual. Soy nuevo en php y busco un tutorial de paginación de este tipo, pero no tuve suerte.

He hecho hasta ahora lo que funciona pero no puedo marcar la página seleccionada. Aquí $id es para detectar la identificación de la página actual. ¿Cómo puedo establecer una condición (u otra) para poder marcar el elemento de la página actual en la paginación? Mil gracias por ayudarme.

 <ul class="pagination"> <?php if($id > 1) {?> <li><a href="?id=<?php echo ($id-1) ?>">Previous</a></li><?php }?> <?php for($i=1;$i <= $page;$i++){ ?> <?php if ($id>1) { ?> <li class="active"><a href="?id=<?php echo $i ?>"><?php echo $i;?></a></li> <?php } ?> <!-- <li><a href="?id=<?php echo $i ?>"><?php echo $i;?></a></li> --> <?php } ?> <?php if($id!=$page) //3!=4 {?> <li><a href="?id=<?php echo ($id+1); ?>">Next</a></li> <?php }?> </ul>
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Podrías cambiar tu ciclo for de

 <?php for($i=1;$i <= $page;$i++){ ?> <?php if ($id>1) { ?> <li class="active"><a href="?id=<?php echo $i ?>"><?php echo $i;?></a></li> <?php } ?> <!-- <li><a href="?id=<?php echo $i ?>"><?php echo $i;?></a></li> --> <?php } ?>

para:

 <?php for($i=1;$i <= $page;$i++){ $class=($i==$id)? ' class="active"' : ''; echo '<li'.$class.'><a href="?id='.$i.'">'.$i.'</a></li>'; } ?>

Si entendí su código correctamente, $page representa el total de páginas y $id representa la página actual, esto establecerá el número de página actual como la clase activa y dejará las otras páginas sin la clase.

over 4 years ago · Santiago Trujillo Denunciar

0

Suponiendo que $id es el número de página actual y que $page es el número total de páginas, debe resaltar solo una haciendo lo siguiente en su bucle:

  • if($i==$id) // highlight
  • else // don't highlight

Sus principales errores son que no probó si $i==$id y no tenía una versión alternativa sin resaltar.

Realmente creo que deberías simplificar tu código separando tu lógica del HTML. De lo contrario, se vuelve muy ilegible y muy difícil de administrar.

Me he tomado la libertad de hacer justamente eso. De esta manera, puede ver dónde la lógica hace el trabajo duro, y solo necesita imprimir los resultados en el HTML.

 <?php $id=3; // test value $page=20; // test value $li=array(); // temporary array for convenience $template='<li%s><a href="?id=%s">%s</a></li>'; if($id>1) $li[]=sprintf($template,'',$id-1,'Previous'); for($i=1;$i<=$page;$i++) { if($i==$id) $li[]=sprintf($template,' class="active"',$i,$i); // Current else $li[]=sprintf($template,'',$i,$i); } if($id<$page) $li[]=sprintf($template,'',$id+1,'Next'); $li=implode('',$li); // convert to string for printing ?> <ul class="pagination"> <?php print $li; ?> </ul>

También verás dos técnicas para facilitar las cosas:

  • Uso una matriz como contenedor temporal. Es más fácil agregar elementos de esta manera y luego implode en una cadena después
  • sprintf facilita la definición de una cadena de plantilla, por lo que puede administrar el componente HTML más fácilmente y completar los espacios cuando llegue el momento.
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda