Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Problemas al pasar de página en paginación

Estas en el tema de Problemas al pasar de página en paginación en el foro de PHP en Foros del Web. Chicos tengo un problema con la paginación y es que al realizar una búsqueda por provincia aparece bien la primera página de resultados (incluso me ...
  #1 (permalink)  
Antiguo 24/06/2013, 06:08
 
Fecha de Ingreso: mayo-2013
Ubicación: Valladolid
Mensajes: 8
Antigüedad: 11 años, 6 meses
Puntos: 0
Exclamación Problemas al pasar de página en paginación

Chicos tengo un problema con la paginación y es que al realizar una búsqueda por provincia aparece bien la primera página de resultados (incluso me dice bien el número de resultados obteniedos de la consulta) pero al pasar de página se fastidia la consulta y me muestra todos los resultados de la base de datos.

He estado revisandolo de arriba a abajo y no encuentro el fallo, sé que es un problema en el envío de la petición hacia el resto de páginas pero no doy con ello si me echárais un cable os lo agradecería.

El código es el siguiente:

Código PHP:
// COMPROBAMOS QUE VIENE DEL BUSCADOR SINO REDIRECCIONAMOS CON UN ELSE
    
if( isset ($_GET['comienzo']) or (isset($_GET['comautonoma'])and !empty ($_GET['comautonoma'])) or (isset($_GET['provincia'])and !empty($_GET['provincia'])) or (isset($_GET['preciocat']) and !empty($_GET['preciocat'])) or (isset($_GET['codigopostal']) and !empty($_GET['codigopostal']))) {    


                
        <!-- 
CONTENEDOR -->
            <
div class="contenedor" id="contenedor"
        
            <!-- 
ENCABEZADO -->    
                

// DATOS DE MYSQL
    
$servidor="servidor";
    
$user="usuario";
    
$pass="contraseña";
    
$bd="db";
    
$conexion=mysql_connect($servidor,$user,$pass) or die (mysql_error("La base de datos no está disponible"));

// CONECTAMOS CON LA BASE DE DATOS    
    
mysql_select_db($bd,$conexion);

// COMPROBAMOS LOS DATOS REQUERIDOS POR EL USUARIO PARA REALIZAR LA CONSULTA
    
$comunidad=$_GET['comautonoma'];
    
$provincia=$_GET['provincia'];
    
$preciocat=$_GET['preciocat'];
    
$codigopost=$_GET['codigopostal'];

// ESTABLECEMOS EL NÚMERO DE FILAS POR PÁGINA Y LA FILA INICIAL
    
$filaspag 10;
    
$comienzo $_REQUEST['comienzo'];
    if (!isset(
$comienzo))
    {
        
$comienzo =0;
    }

    if(isset(
$comunidad) && $comunidad!="")
        {
        
$where .= "AND comunidadautonoma='$comunidad'";
        }
    if(isset(
$provincia) && $provincia !="")
        {
        
$where .=" AND provincia='$provincia'";
        }
    if(isset(
$preciocat) && $preciocat !="")
        {
        
$where .= " AND preciocat='$preciocat'";
        }
    if(isset(
$codigopost) && $codigopost !="")
        {
        
// SI HAN INTRODUCIDO UN CODIGO POSTAL REALIZAR LA CONSULTA SINO ELSE
            
$numero "$codigopost";
            
$codigopostal=$numero[0];
            
$codigopostal .=$numero[1];
            
$codigopostal .=$numero[2];
            
$codigopostal .=$numero[3];
            
$codigopostal .=$numero[4];
    
            
$where .= " AND codigopostal like '$codigopostal%'";

            
$where .="ORDER BY codigopostal";
            
$consulta "SELECT * FROM geriatricos WHERE numplazas not like '0' $where";
        }
    else 
        {
            
$where .=" ORDER BY codigopostal ASC";
            
$consulta "SELECT * FROM geriatricos WHERE numplazas not like '0' $where";
        }
    
// LLAMAMOS A LOS RESULTADOS Y COMPROBAMOS EL NÚMERO DE REGISTROS OBTENIDOS
    
$resultado=mysql_query($consulta) or die (mysql_error());
    
$numregistros=mysql_num_rows($resultado);

        
// SI EXISTEN REGISTROS ENTONCES MOSTRAMOS RESULTADOS SINO DAMOS ERROR
    
if ($numregistros>0)
        {                                
    
    echo <<< html
    
<!-- CONTENIDO CENTRAL -->    
        <div  class="contenido1" id="contenido">
            <div id="titulo" class="titulo">
            Residencias encontradas 
        </div>
    <br />
            
<!--TABLA DE DATOS-->            
    <table style="width: 800px; height: 250px">
        <td style="width: 13px">
        </td>
        <td style="width: 205px">
            <fieldset  style="border:2px solid #578fc4; width:100px; height:100%" class="round">
                <legend align="left"><b>Recomendadas</b>
                </legend>
                <marquee height="400"  direction="up" onmouseover="this.stop();" onmouseout="this.start();" scrolldelay="220" STYLE="background-color:transparent">
            <br />

            
<!--MOSTRAMOS LA PUBLICIDAD-->
html;
    
$var1="<center><a class='seleccion' target=\'_blank\' href='detallesres.php?id=117'>Gravina</a></center>";
    
$var2="<center><a class='seleccion' target=\'_blank\' href='detallesres.php?id=246'>Moral</a></center>";
    
$var3="<center><a class='seleccion' target=\'_blank\' href='detallesres.php?id=33'>Avenida San Luis</a></center>";
    
$var4="<center><a class='seleccion' target=\'_blank\' href='detallesres.php?id=216'>Madre Maravillas</a></center>";
    
$var5="<center><a class='seleccion' target=\'_blank\' href='detallesres.php?id=60'>Dos de Mayo</a></center>";
     echo 
"<strong><span>$var1</span></strong><br /><br /><br /><br />";
     echo 
"<span><strong>$var2</strong></span><br /><br /><br /><br />";
     echo 
"<span><strong>$var3</strong></span><br /><br /><br /><br />";
     echo 
"<span><strong>$var4</strong></span><br /><br /><br /><br />";
     echo 
"<span><strong>$var5</strong></span><br /><br /><br /><br />";
         
echo <<< html
                     <br />
                </marquee>
            </fieldset>
        </td>
        <td style="width: 11px">
        </td>
        <td class="tabla" style="width: 1546px; height: 145px;">

        
<!--MOSTRAMOS PÁGINAS CON EL NÚMERO DE RESULTADOS ENCONTRADOS-->
html;

      
// Calculamos el número total de filas de la tabla
    
      
if ($numregistros 0)
        {
          
// Mostrar números inicial y final de las filas a mostrar
          
print ("<strong><center>Mostrando resultados " . ($comienzo 1) . " a ");
          
          if ((
$comienzo $filaspag) < $numregistros)
              {
                  print (
$comienzo $filaspag);
              }
        
          else
              {
                  print (
$numregistros);
                  
              }
              print (
" de un total de $numregistros </font></center></strong> <br>");
                }
            
          
// Mostramos botones anterior y siguiente
                    
          
if ($numregistros $filaspag)
              {
                  if (
$comienzo 0)
                      {
                          print (
"  <A HREF='BUSCA.php?comienzo=" . ($comienzo $filaspag) . "'>Anterior</A> || </center> ");
                      }                 
                  if (
$numregistros > ($comienzo $filaspag))
                      {
                      print (
"<A HREF='BUSCA.php?comienzo=" . ($comienzo $filaspag) . "'> Siguiente</A> \n");
                      }
                  }
              print (
"\n ");
              echo 
"</right>";
          
              
echo <<< html
            
<!--TABLA DE RESULTADOS-->
                                                                    
html;

// MIENTRAS HAYA REGISTROS OBTENIDOS DE LA CONSULTA MOSTRAR
        
    
$instruccion "$consulta limit $comienzo, $filaspag";
    
$consulta mysql_query ($instruccion$conexion)        or die ("Fallo en la consulta");

// Mostrar resultados de la consulta
    
$numregistros mysql_num_rows ($consulta);
    if (
$numregistros 0)
    {
        
echo <<< html
        <table style="width: 100%" border="0">
        <td class="style39" style="width: 210px">
        <center><h3>Nombre de la Residencia</h3></center>
        </td>
        <td class="style39" style="width: 50px">
        <h3><center>Plazas</center></h3>
        </td>
        <td  class="style39" style="width: 35px" >
        <h3><center>C.Postal</center></h3>
        </td>
html;
        
        while (
$row=mysql_fetch_assoc($consulta))
//            {


    //    for ($i=0; $i<$numregistros; $i++)
            
{
                
$id=$row['id_residencia'];
                echo 
"<tr><td ><center><a class='seleccion' target=\'_blank\' href='detallesres.php?id=$id'>$row[nombre]</a></center></td>";
                echo 
"<td ><center>$row[numplazas]</center></td>";
                echo 
"<td ><center>$row[codigopostal]</center></td></tr>";
            }
    
        }        
echo <<< html
         </table>
        </td>
    </table>

html; 

La página donde se encuentra el buscador es: www.residenciasasequibles.es/buscador.php por si alguien quiere echar un ojo y comprobar por sí mismo mi problema.

Agradecería que el que viese mi problema me respondiera lo antes posible, como comprenderéis es una web bastante visitada y no puedo mantener ese problema mucho tiempo
  #2 (permalink)  
Antiguo 24/06/2013, 07:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problemas al pasar de página en paginación

Piensa que tu consulta utiliza parámetros $_GET para definir ciertos comportamientos, pero en los enlaces para paginar únicamente pasas el número de página, ¿cómo esperas que los demás parámetros se conserven si haces caso omiso de ellos?

Nada más simple que eso, tu lo has programado así, si quieres que la consulta funcione igual procura poner atención a los enlaces que generas, ahí está la clave.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/06/2013, 11:46
 
Fecha de Ingreso: mayo-2013
Ubicación: Valladolid
Mensajes: 8
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Problemas al pasar de página en paginación

Cita:
Iniciado por pateketrueke Ver Mensaje
Piensa que tu consulta utiliza parámetros $_GET para definir ciertos comportamientos, pero en los enlaces para paginar únicamente pasas el número de página, ¿cómo esperas que los demás parámetros se conserven si haces caso omiso de ellos?

Nada más simple que eso, tu lo has programado así, si quieres que la consulta funcione igual procura poner atención a los enlaces que generas, ahí está la clave.
Vale es verdad, era facilísimo y una chorrada como una catedral, pero gracias por tu consejo porque la verdad es que sabía que el problema era que no cogía la consulta pero no me daba cuenta que era porque no lo enviaba a través del enlace, en cuanto me dijiste eso ya empecé a pensar en cómo arreglarlo ^^

Última edición por Anisakys; 25/06/2013 a las 02:39 Razón: Solucionado

Etiquetas: html, mysql, página, registro, resultados, select, sql, 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 21:53.