Zapytanie MYSQL z podziałem na PHP

Próbuję napisać skrypt, który pobiera określone zapytanie z bazy danych MySQL, a następnie paginuje wyniki.

Myślę, że wiem, jakie są rozwiązania, a które są tylko kwestią mojego braku wiedzy na temat ich implementacji / skryptu.

Oto mój skrypt, który częściowo działa:

<?php
$tstart = 0; 
$tend = 0;
//$tpage = 0; // the start page
//$tpages = 0; // number of pages
$tpagelinks = ""; // stores the output pagination
$ttotal = 0; / total number of results
$trows = 5; // number of results per page
$online = ""; // stores the results to display

$dbhost = "localhost"; 
$dbuser = "****_models"; 
$dbpass = "****";

$dbcon = @mysql_connect($dbhost,$dbuser,$dbpass) or die('Database error: ' . mysql_error());

$db = mysql_select_db('****_cammodels', $dbcon) or die('Database error: ' . mysql_error());

$query = "SELECT * FROM cbmodels WHERE gender='f' AND status='Public' AND age<='22'";

$result = mysql_query($query) or die('Query failed: ' . mysql_error() . "\nQuery: $query");

while($row = mysql_fetch_array($result))
{
  $online .= "#". $ttotal . " \n";
  $online .= $row['status'] . "/" . $row['name'] . "/" . $row['gender'] . "/" . $row['age'] . "\n";
  $online .= "<br>\n";
  $ttotal ++;
 }
 $tstart = ($tpage * $trows) - $trows;
 $tend = $tstart + $trows;
 if ($tend > $ttotal) { $tend = $ttotal; }
 $tpages = floor($ttotal / $trows);
 if ($ttotal % $trows != 0) { $tpages ++; }
 if ($tpage > $tpages) { $tpage = 1; }

 if ($tpage > 1) { $tpagelinks .= "<a class='allonlinepages_url' href='new_from_db.php?page=" . ($tpage - 1) . "'>PREVIOUS</a>\n"; }

 for ($ti = 1; $ti <= $tpages; $ti ++)
 {
 if ($tpage == $ti) { $tpagelinks .= "$ti \n"; }

    else { $tpagelinks .= "<a class='allonlinepages_url' href='new_from_db.php?page=$ti' >$ti</a>\n"; }
 }

 if ($tpage < $tpages) { $tpagelinks .= "<a class='allonlinepages_url' href='new_from_db.php?page=" . ($tpage + 1) . "' >NEXT</a>\n"; }

echo $online;
echo $tpagelinks;

mysql_close($dbcon);
?>

To, co robi, pokazuje wszystkie wyniki znalezione w bazie danych, licznik stron wydaje się pokazywać poprawną liczbę stron, ale linki są nieprawidłowe / nie pokazuj następnej strony wyników.

Myślę, że muszę najpierw zapytać bazę danych, aby uzyskać liczbę wierszy dla paginacji, a następnie obliczyć liczbę stron, a następnie wykonać kolejne zapytanie, aby uzyskać wyniki. Może zapisać to w innej tablicy jako wyniki na stronie? lub coś takiego. Próbowałem wiele razy, a powyższy skrypt jest najbliższy temu, co udało mi się zrobić prawie wszystkie inne próby po prostu przerwać skrypt i albo dać dziwne wyniki, albo wcale.

Skrypt, który zrobiłem, aby pobrać dane z rzeczywistego kanału do przechowywania w samej bazie danych, oznaczający online i offline, działa poprawnie, więc nie uwzględniłem tego, ponieważ i tak jest to oddzielny skrypt.

Z góry dziękuję za wszelką pomoc udzieloną Guysom.

EDYTOWAĆ Usunięto cały nie działający kod RE: Komentarze.

questionAnswers(2)

yourAnswerToTheQuestion