Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Paginación

Estas en el tema de Paginación en el foro de PHP en Foros del Web. Buenas, tengo una función de paginación que me anda correctamente lo unico que me estoy comiendo la cabeza por una tonteria que no consigo hacer. ...
  #1 (permalink)  
Antiguo 29/04/2014, 04:47
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Paginación

Buenas, tengo una función de paginación que me anda correctamente lo unico que me estoy comiendo la cabeza por una tonteria que no consigo hacer. Lo que intento hacer es que marque el número de página que estoy, por ejemplo:

Si estoy en pagina principal = color azul número 1, resto gris

Si estoy en página secundaria = color azul número 2, resto gris

Espero que se me entienda.

Código PHP:
Ver original
  1. function comprobar_paginacion_temas($tabla, $cat_id, $subcat_id) {
  2.    
  3.     $html = '';
  4.    
  5.     $enlace = 'forum/'.$cat_id.'/'.$subcat_id;
  6.        
  7.     $inicio = 1;
  8.     $pagina = 1;
  9.    
  10.     $total_temas = contar_db(TABLA_F_TEMAS, 'categoria_id = "'.$cat_id.'"
  11.     AND subcategoria_id = "'.$subcat_id.'"');
  12.    
  13.     $total_paginas = ceil($total_temas / $inicio);
  14.    
  15.     if($pagina > $total_paginas) {
  16.        
  17.         $menos = $pagina - 1;
  18.        
  19.         $html .= '<a class="an" href="'.$enlace.'/" title="Primera página"><<</a>';
  20.        
  21.         $html .= '<a class="an" style="margin-left:10px" href="'.$enlace.'/'.$menos.'/" title="Anterior"><</a>';
  22.    
  23.     }else {
  24.        
  25.         $html .= '<a class="dis" langhref="#"><<</a>';
  26.        
  27.         $html .= '<a class="dis" style="margin-left:10px" langhref="#"><</a>';
  28.        
  29.     }
  30.    
  31.     for($i = 1; $i <= $total_paginas; $i++) {
  32.    
  33.     if($pagina == 1) {
  34.    
  35.         $html .= '<a langhref="#" class="sel" style="cursor:default">'.$pagina.'</a>';
  36.    
  37.     }else {
  38.    
  39.         $html .= '<a href="'.$enlace.'/'.$i.'/" title="Página '.$i.'">'.$i.'</a>';
  40.    
  41.     }
  42.  
  43.     }
  44.    
  45.     if($pagina < $total_paginas) {
  46.        
  47.         $mas = $pagina + 1;
  48.    
  49.         $html .= '<a class="sg" href="'.$enlace.'/'.$mas.'/" title="Siguiente">></a>';
  50.        
  51.         $html .= '<a class="sg" style="margin-left:10px" href="'.$enlace.'/'.$total_paginas.'/"
  52.         title="Última página">>></a>';
  53.        
  54.     }else {
  55.        
  56.         $html .= '<a class="dis" langhref="#">></a>';
  57.        
  58.         $html .= '<a class="dis" style="margin-left:10px" langhref="#">>></a>';
  59.        
  60.     }
  61.  
  62. return $html;
  63.    
  64. }

En el código donde quiero que se quede marcada donde tiene la class="sel" - linea 35.

Un saludo.
  #2 (permalink)  
Antiguo 29/04/2014, 08:42
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Paginación

Uhm...


creo q es aqui:

Código PHP:
if($pagina == 1) { 
Si en vez de 1 (que sería el valor por defecto), pones $i, que será el número de la página del bucle?

Ahora mismo estás comparando esto:

Supongamos 3 páginas en total: 1, 2, 3.

En el bucle, para pagina 1, compararias esto (tal y como lo tienes)
"Si 1($pagina) == 1" (Primera iteracion) [TRUE]
"Si 1($pagina) == 1" (Segunda iteracion) [TRUE]
"Si 1($pagina) == 1" (Tercera iteracion) [TRUE]

Para página 2, tal y como lo tienes, seria:
"Si 2($pagina) == 1" (Primera iteracion) [FALSE]
"Si 2($pagina) == 1" (Segunda iteracion)[FALSE]
"Si 2($pagina) == 1" (Tercera iteracion)[FALSE]

Si cambias ese 1 por $i, para pagina 1 seria:
"Si 1($pagina) == 1($i)" (Primera iteracion) [TRUE]
"Si 1($pagina) == 2($i)" (Segunda iteracion)[FALSE]
"Si 1($pagina) == 3($i)" (Tercera iteracion)[FALSE]

Y si pagina vale 2:
"Si 2($pagina) == 1($i)" (Primera iteracion)[FALSE]
"Si 2($pagina) == 2($i)" (Segunda iteracion)[TRUE]
"Si 2($pagina) == 3($i)" (Tercera iteracion)[FALSE]

Q creo q es lo q te falla ;)
Saludos!
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 29/04/2014, 08:56
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Paginación

Ya lo e intentado con:

$pagina == $i

pero nada me sigue marcando como si estuviera en la 1 cuando los resultados ya me aparecen de la 2.

Seguiré probando haber.

Saludos.
  #4 (permalink)  
Antiguo 29/04/2014, 09:10
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Paginación

No será por esto? :

Código PHP:
$pagina 1
¿No deberias recibirla de un get?
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 29/04/2014, 09:23
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Paginación

No hago la llamada por _GET la utlizo url amigales, pero funciona porque por ejemplo puedo sacar el total para ir a la ultima, la siguiente, la anterior...... Pero el número de pagina pasa por la url pero claro la url si la meto dentro de la función no me la leera. Aun que voy a probarlo haber.

Saludos.
  #6 (permalink)  
Antiguo 29/04/2014, 09:28
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Paginación

Al final si, era sacar por la función la url y de hay cojer que numero esta en ese momento visualizando los resultado.

Marco solucionado. Gracias por todo.

Saludos.

Etiquetas: funcion, paginacion
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 20:44.