Foros del Web » Programando para Internet » PHP »

Paginar y elegir orden

Estas en el tema de Paginar y elegir orden en el foro de PHP en Foros del Web. Uii... como explicar A ver, yo normalmente utilizo un sistema de paginación en los listados de mis webs y no tengo problema alguno. Esta vez ...
  #1 (permalink)  
Antiguo 10/09/2004, 09:54
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Paginar y elegir orden

Uii... como explicar

A ver, yo normalmente utilizo un sistema de paginación en los listados de mis webs y no tengo problema alguno. Esta vez a parte de estar hecho el listado con capas (cosa que no me gusta nada ), lleva una paginación un tanto rara...

Tengo que pasar por las paginas de resultados mediante iconos gráficos, eso lo conseguí esta mañana y parece que no me ha ido mal. Pero lo otro que tengo que hacer es ordenar el listado por cosas segun pinchen en otros iconitos, eso también lo consigo pero... a la hora de paginarlo me da serios problemas al pasar la pagina; o se me queda siempre atascada en la primera o bien me hace la siguiente quitando la ordenación (como si no hubiera).

Me he explicado más o menos?

Pues aquí os pongo los trocitos de código, a ver si me podeis ayudar... Ok?

PRIMER TROZO DE PAGINACIÓN
Código:
	$pag = ($_GET['pag']); 
	if (!isset($pag)) $pag=1; 
	$tampag = 3;  //Definiremos el número de resultados para paginar
	$reg1 = ($pag-1) * $tampag;  
	
	if ($accion != "") 		$result = mysql_query("Select * from inmueble where Vendido='' order by $accion", $conexion);
	if ($accion == "") 		$result = mysql_query("Select * from inmueble where Vendido='' order by Id", $conexion);  

	$total = mysql_num_rows($result);  
	
	if (mysql_num_rows($result)){ 
	
	for ($i=$reg1; $i<min($reg1+$tampag, $total); $i++) {  
    mysql_data_seek($result, $i); 
    $Inmueble = mysql_fetch_array($result);
FUNCIÓN PAGINAR

Código:
function paginar($pag, $total, $tampag,$enlace) 
{ 
  $total_paginas = ceil($total/$tampag); 
  $anterior = $pag - 1; 
  $posterior = $pag + 1; 
  
  if ($pag>1)  $izquierda = $enlace.$anterior; 
	 
  for ($i=1; $i<$pag; $i++) $texto .= "<a href=\"$enlace$i\" class='Letras_Rojas'>&nbsp;$i&nbsp;</a>"; 
  $texto .= "<b>&nbsp;$pag&nbsp;</b>"; 
  for ($i=$pag+1; $i<=$total_paginas; $i++) $texto .= "<a href=\"$enlace$i\" class='Letras_Rojas'>&nbsp;$i&nbsp;</a>"; 
 
  if ($pag<$total_paginas) $derecha.=$enlace.$posterior;

$texto="
<div id='Texto'	align='center' style='position:absolute; width:500px; height:20px; z-index:1; left: 2px; top: 552px; overflow: hidden;'>
  <div align='center'><span class='formularios2'>PÁGINA DE RESULTADOS </span>
  <span class='Letras'>$texto</span>
  </div>
</div>"; 
?>

<div id="Derecha" style="position:absolute; width:60; height:50; z-index:6; left: 662px; top: 44px; visibility: visible;">
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="60" height="50">
    <param name="movie" value="iconos/siguiente.swf?enlace=<? print $derecha ?>">
    <param name="quality" value="high">
    <embed src="iconos/siguiente.swf?enlace=<? print $derecha ?>" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="60" height="50"></embed>
  </object>
</div>
<div id="Izquierda" style="position:absolute; width:60; height:51px; z-index:6; left: 597px; top: 44px; visibility: visible;">
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="60" height="50">
    <param name="movie" value="iconos/anterior.swf?enlace=<? print $izquierda ?>">
    <param name="quality" value="high">
    <embed src="iconos/anterior.swf?enlace=<? print $izquierda ?>" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="60" height="50"></embed>
  </object>
</div>

<?
return ($texto);

} 

echo paginar($pag,$total,$tampag,"Venta.php?pag="); 
?>

<?php print $display_block;?>
He borrado todas las pruebas que he hecho con la variable $accion (que es la forma de ordenarlo) para no liaros...

¿Que tal lo veis? Donde me estoy colando? Como se haría?

Muchisimas gracias...
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #2 (permalink)  
Antiguo 12/09/2004, 16:10
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Tan mal me he explicado? :( O es que no tiene solución?
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #3 (permalink)  
Antiguo 13/09/2004, 01:48
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Tienes que propagar en los links de paginacion el valor de $accion. El enlace para pasar de pagina deberia pasar ese parametro. No se si es correcto (no me aclaro con tu codigo de links), pero seria algo como poner:
Código PHP:
echo paginar($pag,$total,$tampag,"Venta.php?accion=$accion&pag="); 
Y luego coger el valor de ese parametro (si no existe, usar el valor por defecto).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 13/09/2004, 02:15
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Ya había probado esa posible solución, me pasa bien el parámetro de la accion pero no el de la página, es muy raro es como si "pag=" tuviera que estar inmediatamente despues del "?"...

No sé que pensar, no entiendo nada :(
__________________
Ibisof | Saludos desde Eivissa !!! :p
  #5 (permalink)  
Antiguo 13/09/2004, 02:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Acabo de ver porque. Usas flash para los enlaces y el parametro de la pelicula queda como:

iconos/siguiente.swf?enlace=Venta.php?accion=$accion&pag= 3

Y asi el navegador piensa que pag es el segundo parametro que le pasas al flash, no como parte del valor del primer parametro.

Tendras que encodear el valor que le pasas al flash, con urlencode() (www.php.net/urlencode) o rawurlencode() (www.php.net/rawurlencode), algo asi como:
Código PHP:
$derecha=urlencode($derecha);
$izquierda=urlencode($izquierda); 
O con rawurlencode(), no se cual sera la necesaria para Flash.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 13/09/2004, 02:31
 
Fecha de Ingreso: junio-2003
Mensajes: 744
Antigüedad: 20 años, 10 meses
Puntos: 0
Siiiiiiiii, era eso ... Jolin que bien, llevaba tiempo dandole vueltas sin solución alguna...

Voy a revisar ahora porque no funciona lo de pinchar en el número de página y te vaya a esa página (que antes de esto funcionaba). Ya contaré...

Muchisimas graciassssssssssss, sola no lo hubiera sacado....!!!

P.d: Ya cuento!!! La función solo tengo que aplicarla a los botonones de derecha e izquierda, para pinchar en las páginas funciona sin eso

De verdad que muchas gracias !
__________________
Ibisof | Saludos desde Eivissa !!! :p

Última edición por Enea; 13/09/2004 a las 02:37
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 01:43.