Chicos me sucede una cosa muy curiosa. El caso es que ya he comprobado con echos todas las salidas de las variables para ver en qué momento me falla pero no logro encontrar el fallo y ya se sabe que 4 ojos (o más) ven más que dos.
El tipo de paginación es sencilla:
- Quiero que muestre 10 registros en cada fila --> Esto funciona
- Que diga el número de registros que ha encontrado en la consulta --> Esto funciona
- Que saque tantas páginas como sean necesarias para mostrar todos los resultados --> No funciona
Me falla porque o me saca sólo 10 registros y cuando doy a siguiente me dice que no encuentra resultados; o me saca todo el tocho de registros en una sola página.
El código es el siguiente:
Código PHP:
<?php
// EVITAMOS PROBLEMAS DE ESCRITURA: ACENTOS Y EÑES
header('Content-Type: text/html; charset=ISO-8859-1');
// EVITAMOS MOSTRAR ERRORES
error_reporting(E_ALL & ~E_NOTICE);
// COMPROBAMOS QUE VIENE DEL BUSCADOR SINO REDIRECCIONAMOS CON UN ELSE
if((isset($_POST['comautonoma'])and !empty ($_POST['comautonoma'])) or (isset($_POST['provincia'])and !empty($_POST['provincia'])) or (isset($_POST['preciocat']) and !empty($_POST['preciocat'])) or (isset($_POST['codigopostal']) and !empty($_POST['codigopostal']))) {
echo <<< html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Microsoft Theme" content="none, default">
<meta name="Microsoft Border" content="none, default">
<title>Resultados</title>
<link href="meneame.css" type="text/css" rel="stylesheet">
</head>
<!-- CUERPO DE LA WEB -->
<body>
<!-- CONTAINER -->
<div style="z-index: 1; top: 0px; left: 11px; width: 831px; background-position: center; margin: 0 auto 0 auto; height: 100%;" id="container" class="style41">
html;
// DATOS DE MYSQL
$servidor="mi servidor";
$user="user";
$pass="pass";
$bd="casas";
$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=$_POST['comautonoma'];
$provincia=$_POST['provincia'];
$preciocat=$_POST['preciocat'];
$codigopost=$_POST['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 casas WHERE numplazas not like '0' $where";
}
else
{
$where .=" ORDER BY codigopostal ASC";
$consulta = "SELECT * FROM casas 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
<!-- CUERPO CONTENIDO -->
<div style="left: 12px; top: 252px; width: 831px; height: 550px; z-index: 1; background-color: #FCD68B; background-position: center; margin: 0 auto 0 auto; position: static;" id="cuerpocontenido" onclick="FP_goToURL(/*href*/'default.html')">
<div style="position: static; width: 576px; height: 24px; z-index: 9; left: 63px; top: 461px; float: left; margin-left: 100px; visibility: visible; margin-top: -20px;" id="capa12" class="style24">
Resultado consulta
</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 />
html;
echo <<< html
<br />
</marquee>
</fieldset>
</td>
<td style="width: 11px">
</td>
<td class="style39" 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>Mostrando resultados " . ($comienzo + 1) . " a ");
if (($comienzo + $filaspag) < $numregistros)
{
print ($comienzo + $filaspag);
}
else
{
print ($numregistros);
}
print (" de un total de $numregistros </font></strong> <br>");
}
// Mostramos botones anterior y siguiente
$estapagina = $_SERVER['PHP_SELF'];
if ($numregistros > $filaspag)
{
echo "<right>";
if ($comienzo > 0)
{
print (" <A HREF='$estapagina?comienzo=" . ($comienzo - $filaspag) . "'>Anterior</A> || ");
}
else
{
//print (" Anterior || ");
}
if ($numregistros > ($comienzo + $filaspag))
{
print ("<A HREF='$estapagina?comienzo=" . ($comienzo + $filaspag) . "'> Siguiente</A> \n");
}
else
{
//print (" Siguiente \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>Dirección Casa</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_casa'];
echo "<tr><td ><center><a 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;
}
echo <<< html
<!--CERRAMOS CUERPO CONTENIDO-->
</div>
<!-- EL PIE DE PÁGINA -->
<br />
<div style="left: 11px; top: 717px; width: 826px; height: 36px; z-index: 1; margin: 0 auto 0 auto; background-color: #CCCCCC; background-position: center" id="pie">
<div style="position: static; left: 640px; top: 610px; width: 164px; height: 19px; z-index: 1; float: right; margin: 20px 20px 0 0" id="infopieizq" class="style3">
<strong>
<div style="margin: -5px 0 0 0; position: static; left: 694px; top: 1001px; width: 146px; height: 24px; z-index: 1; float: right" id="capa9" class="style20">
<a href="acceso.html">Login</a>
</div>
</strong>
</div>
<div style="position: static; left: 100px; top: 610px; width: 164px; height: 19px; z-index: 1; float: left; margin: 10px 0 0 20px" id="infopieizq0" class="style33">
<a href="mailto:[email protected]">mi e-mail</a>
</div>
<div style="position: static; left: 100px; top: 610px; width: 164px; height: 19px; z-index: 1; float: left; margin: 10px 0 0 150px" id="infopieizq1" class="style38">
html;
//$row=mysql_fetch_array($resultados);
$sede=$row['telefonosede'];
echo $sede;
echo <<< html
</div>
</div>
<!-- CIERRE DEL CONTAINER, BODY Y HTML -->
</div>
</body>
</html>
html;
// CERRAMOS LOS DOS IF: DE DATOS DE BUSCADOR Y EL DE RESULTADOS
// YA QUE NO VIENE DEL BUSCADOR O NO SE HAN ENCONTRADO RESULTADOS
}
}
else
{
echo header("Location:buscador.php?error=1");
}