Creando varias páginas desde la consulta sql

Estoy intentando crear varias páginas de mi consulta. Si tengo 100 resultados y deseo 10 resultados por página, me gustaría que se crearan diez páginas, y cada página muestra una consulta diferente. Así es como mi consulta está configurada:

$sql ="SELECT * FROM Post WHERE (active ='1') ORDER BY PostID DESC "; $result = mysql_query($sql,$db); $numrows = mysql_num_rows($result); while(($post = mysql_fetch_assoc($result))) { $posts[] = $post; }  echo stripslashes($post['text']);  

Esto extrae cada “publicación” de la base de datos y puts las muestra todas.

Me gustaría hacer algo como esto:

 $results = mysql_num_rows($result); $numpages = 10/$results; //gives the number of pages while($numpages<$results) { //run code from above\\ } 

¿Cuál es la mejor manera de hacer esto con el método que uso? Aprecio tus opiniones porque estoy en una de esas etapas en las que estoy perdido en mi propia lógica. ¡Gracias!

La mayoría de los ejemplos de paginación no cumplen con los requisitos de la vida real. Una cadena de consulta personalizada, por ejemplo.
Entonces, aquí hay un ejemplo completo pero conciso:

  Found rows: 

$row): ?> .

Pages: $link): ?>

Sería horrible extraer todos los datos de la base de datos y gestionarlos desde PHP. Mataría a la RAM y a la red.

Use la cláusula LIMIT para paginación.

Primero, necesita ver la cantidad total de registros. Utilizar

 $query = 'SELECT count(1) as cnt FROM Post WHERE active =1'; 

entonces,

 $result = mysql_query($query, $db); $row = mysql_fetch_assoc($result); $count = $row['cnt']; $pages = ceil($count/10.0); //used to display page links. It's the total number of pages. $page = 3; //get it from somewhere else, it's the page number. 

Luego extrae los datos

 $query = 'SELECT count(1) as cnt FROM Post WHERE active =1 LIMIT '.$page*10.', 10'; $result = mysql_query($query, $db); while($row = mysql_fetch_assoc($result)) { //display your row } 

Luego da salida a los datos.

Estoy usando ese código similar para hacer eso:

 $data = mysql_query("SELECT * FROM `table`"); $total_data = mysql_num_rows($data); $step = 30; $from = $_GET['p']; $data = mysql_query("SELECT * FROM `table` LIMIT '.$from.','.$step.'" 

Ese código obtiene filas totales

y eso para crear enlaces:

 $p=1; for ($j = 0 ; $j <= $total_data+$step; $j+=$step) { echo ' '.$p.' '; $p++; } ?> 

También puede leer sobre: paginación