Problema com paginação em PHP

  • Autor Autor newmesis
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
N

newmesis

Beta
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Hola amigos mi problema es el siguiente
engo este codigo

PHP:
<?php
/*
* autor: Abraham Zenteno Sánchez
* mail:  abzenteno@gmail.com

* page: http://abzenteno.blogspot.com
*/
$host = "localhost";
$user = "root";
$passwd = "colocolo";
$database = "tag";

//provando conexion con mysql
$db = mysql_connect($host,$user,$passwd);

//provando conexion con la base de datos
@mysql_select_db($database,$db);

$rows_for_page = 6; //numero de registros a mostra
$sql = "SELECT * FROM picture";
$result = mysql_query($sql, $db);
//total de registros existentes en la tabla
$total_records = @mysql_num_rows($result);

//total de paginas
$pages = ceil($total_records / $rows_for_page);

@mysql_free_result($result);

//si no existe por GET la var screen coloca por defecto el valor de 0
if (!isset($_GET['screen']))
  $screen = 0;
//de lo contrario asigna el valor por get a $position
else
  $position = (int)$_GET['screen'];

//comenzando el paginado
$start = $screen * $rows_per_page;
//consulta ala db por limites
$sql = "SELECT * FROM picture order by id ASC LIMIT ".$position.",".$rows_for_page;
//ejecuta el query
$result = mysql_query($sql, $db);
//resultados de la consulta (total)
$rows = @mysql_num_rows($result);

//imprime registros
for ($i = 0; $i < $rows; $i++) {
  $title = mysql_result($result,$i,0);
  $content = mysql_result($result,$i,1);
  echo "<h1> $title </h1>
      <br>
      <p>$content</p><br>";
}
//comienza el paginado
echo '<p><hr></p>
<div style="width:100%; text-align:center;">';
//si posicion es mayor o igual a 1 quiere decir que muestre la parte Primero y Anterior de la paginación
if ($position >= 1) {
  $url = "busquedas.php?screen=0";
  echo "<a href=\"$url\">Primero</a>\n";
  //para que el preius no termine con valor 0
   $url = "busquedas.php?screen=" .($position-1);
  echo "<a href=\"$url\">Anterior</a>\n";
}
//sirve para expandir el prollecto para poder paginar de la manera (Primero Anterior | 0 | 1 | 2 | 3 | Siguiente Ultimo)
/*for ($i = 0; $i < $pages; $i++) {
  $url = "busquedas.php?screen=" . $i;
  echo " | <a href=\"$url\">$i</a> | ";
}*/

//muestra total de resultados 1 de N
echo '<strong>'.($position+1).' de '.$pages.' </strong>';

//si position es menor a el valor entre los parentesis muestra la parte (Siguiente Ultimo)
if ($position < ($pages-1)) {
  $url = "busquedas.php?screen=" . ($position+1);
  echo "<a href=\"$url\">Siguiente</a>\n";
  $url = "busquedas.php?screen=" . ($pages-1);
  echo "<a href=\"$url\">Ultimo</a>\n";
}
echo '</div>';
?>

el problema esque me muestra bien en la pagina 1 todos mis post ejemplo
1,2,3,4,5 cuando le doy a sieguiente pasa a la pagina 2 pero me muestra desde las 2 en adelante ejemplo 2,3,4,5,6 y asi noc en que estoy mal ayuda plis
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Ésta linea:

PHP:
$sql = "SELECT * FROM picture order by id ASC LIMIT ".$position.",".$rows_for_page;

Déjala así:

PHP:
$sql = "SELECT * FROM picture order by id ASC LIMIT ".$position.",".$start;

Es decir cambia "rows_for_page" por "start".

Espero que te sirva

Saludos!
 
Ésta linea:

PHP:
$sql = "SELECT * FROM picture order by id ASC LIMIT ".$position.",".$rows_for_page;

Déjala así:

PHP:
$sql = "SELECT * FROM picture order by id ASC LIMIT ".$position.",".$start;

Es decir cambia "rows_for_page" por "start".

Espero que te sirva

Saludos!
gracias amigo lo cambie pero ahora no me muesta los datos (los post) que sera?
 
Bueno, lo analicé y creo que encontré los errores:

Esta línea:
PHP:
$position = (int)$_GET['screen'];

Déjala así:
PHP:
$screen= (int)$_GET['screen'];

Y ésta otra:
PHP:
$sql = "SELECT * FROM picture order by id ASC LIMIT ".$position.",".$rows_for_page;

Así:
PHP:
$sql = "SELECT * FROM picture order by id ASC LIMIT ".$start.",".$rows_for_page;

Ahora sí tiene que funcionar jeje

Saludos!
 
Última edição:
Bueno, lo analicé y creo que encontré los errores:

Esta línea:
PHP:
$position = (int)$_GET['screen'];

Déjala así:
PHP:
$screen= (int)$_GET['screen'];

Y ésta otra:
PHP:
$sql = "SELECT * FROM picture order by id ASC LIMIT ".$position.",".$rows_for_page;

Así:
PHP:
$sql = "SELECT * FROM picture order by id ASC LIMIT ".$start.",".$rows_for_page;

Ahora sí tiene que funcionar jeje

Saludos!

Xd amigo lo cambie pero ahora me da otro error me muestra de a 1 al ponerle siguiente se le agrega el post 2 quedando el 1 y 2 disculpa por molestar si no fuera porque tengo que entregarlo como trabajo en la u

isculpa no avia visto el ultimo comentario pero tampoko me resulto ahora se queda pegado siempre en el 1 screem=1
 
Estás usando nombres distintos: $rows_for_page y $rows_per_page

Cambia
PHP:
$start = $screen * $rows_per_page;

Por
PHP:
$start = $screen * $rows_for_page;

Saludos
 
Creo que el fallo es por que hay nombres que no son iguales en el código, revisa lo que te dice lucianoche
 
gracias por las respuesta bueno cambie los errores pero sige con errores pero se acerca la solucion ahor me aparecen los post ben todo bien solo que no funciona el siguiente porque pasa solo hsta el screem=1 si le pongo siguiente no avanza queda ai pero si lo recorro manualmente desde el navegador busquedas.php?screen=1,busquedas.php?screen=2,busquedas.php?screen=3 etc me aparece todo bien

Lo soluciones....

encontre otro codigo muy similar que entendi bastante mejor y me resulto a la perfeccion
muchisimas gracias por las respuestas y la dedicacion
 
Voltar
Topo