ayuda paginar resultados

Iniciado por over crash, 17 Diciembre 2006, 17:59 PM

0 Miembros y 1 Visitante están viendo este tema.

over crash

Hola a todos estoy intentando paginar los resultados de una tabla mysql pero no tengo narices. Alguien podria hecharme una mano dejo aqui el codigo php de obtencion de los resultados. Muchas gracias anticipadas.



<?php
   
include("conex.php");
   
$link=Conectarse();

if ((
$Opcion == "0") and ($Tipo == "0") and ($Zona == "0") and ($Precio == "0"))
{

$resultmysql_query("SELECT * FROM datos ",$link);
}

elseif(($Opcion =="0") and ($Tipo == "0") and ($Zona == "0"))
{
$result mysql_query("SELECT * FROM datos WHERE precio < '$Precio'"$link);
}

elseif(($Opcion == "0") and ($Tipo == "0") and ($Precio == "0"))
{
$result mysql_query("SELECT * FROM datos WHERE zona = '$Zona'"$link);
}
elseif(($Opcion == "0") and ($Tipo == "0"))
{
$result mysql_query("SELECT * FROM datos WHERE zona = '$Zona' AND precio < $Precio"$link);
}
elseif(($Opcion == "0") and ($Zona == "0") and ($Precio == "0")) 
{
$result mysql_query("SELECT * FROM datos WHERE tipo = '$Tipo'"$link);
}
elseif(($Opcion == "0") and ($Zona == "0"))
{
$result mysql_query("SELECT * FROM datos WHERE tipo = '$Tipo' AND precio < $Precio"$link);

elseif(($Opcion == "0") and ($Precio == "0"))
{
$result =  mysql_query("SELECT * FROM datos WHERE tipo = '$Tipo' AND zona = '$Zona'"$link);
}
elseif(($Tipo == "0") and ($Zona == "0") and ($Precio == "0"))
{
$result mysql_query("SELECT * FROM datos WHERE opcion = '$Opcion'"$link);
}
elseif(($Tipo == "0") and ($Zona == "0"))
{
$result mysql_query("SELECT * FRoM datos WHERE opcion = '$Opcion' AND precio < '$Precio'"$link);
}
elseif(($Tipo == "0") and ($Precio == "0"))
{
$result mysql_query("SELECT * FROM datos WHERE opcion = '$Opcion' AND zona = '$Zona'"$link);
}
elseif($Tipo == "0")
{
$result mysql_query("SELECT * FROM datos WHERE opcion = '$Opcion' AND zona = '$Zona' AND precio < $Precio"$link);
}
elseif(($Zona == "0") and ($Precio == "0"))
{
$result mysql_query("SELECT * FROM datos WHERE opcion = '$Opcion' AND tipo = '$Tipo'"$link);
}
elseif($Zona == "0")
{
$result mysql_query("SELECT * FROM datos WHERE opcion = '$Opcion' AND tipo = '$Tipo' AND precio < $Precio"$link);
}
elseif($Precio == "0")
{
$result mysql_query("SELECT * FROM datos WHERE opcion = '$Opcion' AND tipo = '$Tipo' AND zona = '$Zona'"$link);
}

else
 {
$result mysql_query("SELECT * FROM datos WHERE  opcion = '$Opcion' AND tipo = '$Tipo' AND zona = '$Zona' AND precio < $Precio"$link);
 }


$total mysql_result($result,0);


/**********************************************/

/*obtener el numero de filas de la tabla */

$num_rows mysql_num_rows($result);

echo(
"numero de resultados: ");
echo(
$num_rows);

/*********************************************/

/*********************************************
variables numero de paginas*/

$reg_paginas 20;
$num_paginas ceil($num_rows $reg_paginas);

/*********************************************/

echo("numero de paginas");
echo(
$num_paginas);
/*********************************************/




if($num_rows 0)

{


# CREAMOS UNA CABECERA DE UNA TABLA (codigo HTML)

echo "<table align=center bgcolor=#FCF1C7 bordercolor=black  border=2 >";



# establecemos un bucle que recoge en un array
# cada una de las LINEAS DEL RESULTADO DE LA CONSULTA
# utilizamos en esta ocasión «mysql_fetch_row»
# en vez de «mysql_fetch_array» para EVITAR DUPLICADOS
# recuerda que esta ultima función devuelve un array escalar
# y otro asociativo con los resultados


 
while ($registro mysql_fetch_row($result)){

# insertamos un salto de línea en la tabla HTML

       
echo "<tr align=center height= 45px>";

       
# establecemos el bucle de lectura del ARRAY
       # con los resultados de cada LINEA
       # y encerramos cada valor en etiquetas <td></td>
       # para que aparezcan en celdas distintas de la tabla

       
foreach($registro  as $clave){
       echo 
"<td>",$clave,"</td>";

 }
}




echo 
"</table>";

}

else
{
echo("NO HAY RESULTADOS");

}



 
mysql_close(); 

?>




Ser consciente de la propia ignorancia es un gran paso hacia el saber.

over crash

Veo que no hay  demasiada ayuda en este tema y yo me estoy volviendo majara.

Con este codigo he conseguido paginar todos los resultados sin problema pero si pones alguna opcion solo consigo que me salga la primera pagina y si le das a la siguiente pagina aunque tuvieran que salir mas resultados no salen y ya es que tengo desgastadas las neuronas  :rolleyes:. A ver si asi alguien se anima y me hecha una manita y ve que es lo que  yo no veo. Muchas gracias



<?
// Datos de conexión a la base
$base="profidatos";
$con=mysql_connect(localhost,user,password);
mysql_select_db($base,$con);

if (!isset($pg))
$pg = 0; // $pg es la pagina actual
$cantidad=20; // cantidad de resultados por página
$inicial = $pg * $cantidad;

$pegar = "SELECT * FROM datos  LIMIT $inicial,$cantidad";
$cad = mysql_db_query($base,$pegar) or die (mysql_error());

$contar = "SELECT * FROM datos";
$contarok= mysql_db_query($base,$contar);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);


echo "<table align=center bgcolor=#FCF1C7 bordercolor=black  border=2 >";


while ($registro = mysql_fetch_row($cad)){

# insertamos un salto de línea en la tabla HTML

       echo "<tr align=center height= 45px>";

       # establecemos el bucle de lectura del ARRAY
       # con los resultados de cada LINEA
       # y encerramos cada valor en etiquetas <td></td>
       # para que aparezcan en celdas distintas de la tabla

       foreach($registro  as $clave){
       echo "<td>",$clave,"</td>";

}
}

echo "</table>";

// Cerramos la conexión a la base
$con=mysql_close($con);

// Creando los enlaces de paginación
echo "<p class=fonty>";
if ($pg != 0) {
$url = $pg - 1;
echo "<a href='$PHP_SELF?pg=".$url."'>&laquo; Anterior</a>&nbsp;";
} else {
echo " ";
}
for ($i = 0; $i <= $pages; $i++) {
if ($i == $pg) {
if ($i == "0") {
echo "<b> 1 </b>";
} else {
$i = $i+1;
echo "<b> ".$i." </b>";
}
} else {
if ($i == "0") {
echo "<a href=$PHP_SELF?pg=".$i.">1</a> ";
} else {
echo "<a href='$PHP_SELF?pg=".$i."'>";
$i = $i+1;
echo $i."</a>&nbsp;";
}
}
}
if ($pg < $pages) {
$url = $pg + 1;
echo "<a href='$PHP_SELF?pg=".$url."'>Siguiente &raquo;</a>";
} else {
echo " ";
}
echo "</p>";
?>



Ser consciente de la propia ignorancia es un gran paso hacia el saber.

coolfrog

el problema es que no asignas un valor a la variable pg, despues de que si existe la misma, ademas deberias usar el
GET o POST y no solo preguntar con el nombre de la variable "pg" ya que esto varia en las versiones de php y algunas no te van a reconocer la variable.
if (!isset($pg))
$pg = 0; // $pg es la pagina actual

deberia ser algo como esto:

if (!isset($_GET['pg'])) //para el inicio
$pg = 0;
else $pg=$_GET['pg']; //cuando haces click sobre el siguiente link del paginador

o de una forma mas resumida

$pg=(!isset($_GET['pg']))0:$_GET['pg'];


bueno ay te ves...
posteas si te resulta

chicuela66

Tengo echo la paginación aqui te paso el codigo si te va bin pos bien sino pos lo siento:


//paginar:

if (!isset($pg)) {
   $pg = 1; // $pg es la pagina actual
   $pag=0;
}

$cantidad=4; // cantidad de resultados por página
if ($pg>1) {
   $pag=$pag+$pg-1;
}

$inicial = $pag * $cantidad;

$pegar = "select Titulo,Marca,Foto,Descripcion,Precio,Aviso,mostrar,grupo from articulos where mostrar='on' and grupo='$tip' LIMIT $inicial,$cantidad";

$cad = mysql_query($pegar) or die (mysql_error());

$contar = "SELECT * FROM articulos where mostrar='on' and grupo='$tip' ORDER BY idArticulo ";
$contarok= mysql_query($contar);
$total_records = mysql_num_rows($contarok);
$pages = $total_records / $cantidad;

// Imprimiendo los resultados

over crash

Siento no haber respondido antes pero me he ido un par de días a lisboa a ver las lucecitas de navidad que a la novia se le habia antojado, por cierto es una pasada el pedazo de arbolote de naviadad que han puesto los lisboetas.
Muchas gracias a los dos pero que va sigue pasandome lo mismo si no pongo opciones  y quiero leer todos los resultados no tengo problema y se va paginando perfectamente pero si quiero ver por ejemplo solo los de un tipo pues me sale la primera pagina con los resultados correctos pero si le doy a la siguiente pagina no me sale ningun otro resultado. Luego seguire dandole vueltas, ahora que estoy mas despejado. Muchisimas gracias.
Ser consciente de la propia ignorancia es un gran paso hacia el saber.

DownRate

para paginar resultados yo utilizo la sig clase:

http://www.phpclasses.org/browse/package/2346.html

sencillo sin tanto quebradero de cabeza ;D

espero te sirva.

saludos..!
Revenge is a Dish Best Served Cold