J'essaie d'écrire un script qui extrait une requête spécifique d'une base de données MYSQL, puis pagine les résultats. Je pense savoir ce que sont les solutions, c'est juste une question de mon manque de connaissances sur la façon de les implémenter/script.Requête MYSQL avec pagination PHP
Voici mon script qui fonctionne partiellement:
<?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);
?>
Ce qu'il fait est montrant tous les résultats trouvés dans la base de données, le nombre de pagination semble montrer le bon nombre de pages, mais les liens sont faux/ne montre pas la page suivante des résultats.
Je pense que j'ai besoin d'interroger la base de données pour obtenir un nombre de lignes pour la pagination, puis calculer la quantité de pages, puis faire une autre requête pour obtenir les résultats par page? Ou quelque chose à cet effet. J'ai essayé plusieurs fois et le script ci-dessus est le plus proche que j'ai eu pour le faire fonctionner presque toutes mes autres tentatives juste casser le script et produire des résultats étranges ou pas du tout. Le script que j'ai créé pour extraire les données du flux réel à stocker dans la base de données elle-même, en marquant correctement le fonctionnement en ligne et hors ligne, donc je ne l'ai pas inclus puisqu'il s'agit d'un script séparé.
Merci d'avance pour toute aide donnée aux gars.
EDIT supprimé toutes le code de travail ne RE: Commentaires.
Ok, j'ai mis en œuvre ces changements et maintenant ce que je reçois est le bon nombre de résultats dans la liste mais seulement 2 pages dans la mise en page mais lorsque vous cliquez sur la 2ème page, il montre le prochain ensemble de résultats ... J'ai fait écho le var en compte et il montre seulement 1 résultat si? – user2495392
J'ai ajouté le script modifié au message original juste au cas où vous ne le remarqueriez pas, merci ... (Je pourrais inclure l'url à la page de test je suppose mais il est hébergé sur un domaine adulte donc je ne pense pas que serait acceptable ici) – user2495392
Méfiez-vous des erreurs off-by-one. J'ai écrit plusieurs fois un code de pagination et il y a plusieurs endroits où vous devez arrondir ou ajouter un code qui n'a pas de sens immédiat. – staticsan