Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

170
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda