2012-04-10 2 views
-2

Donc j'essaie de trouver un moyen de retourner un très grand ensemble de résultats à partir d'une requête, et de l'afficher comme une table paginée sur un web page. Par exemple, si j'essaie de renvoyer 1 000 éléments de ma base de données, je souhaite les afficher dans une table paginée, 100 à la fois, et interroger uniquement ces 100 éléments. Lorsqu'un utilisateur saisit un nom à interroger dans un champ de recherche, je souhaite qu'il soit capable de cliquer sur les paginations de table, où chaque pagination ne demande que 100 éléments, de sorte que 'page' 1 affiche les éléments 1 à 2. 100, 'page' 2 affiche les éléments 101-200, etc ...Interroger une table paginée d'éléments #fixnum à la fois, en utilisant PHP et MySQL

Je voudrais faire cela parce qu'interroger un ensemble de résultats très volumineux, puis paginer l'affichage est très lent.

Quelqu'un a-t-il des conseils sur la façon de le faire en utilisant PHP et MySQL?

J'ai la pagination fonctionne bien, je n'arrive juste pas à comprendre comment exécuter mes requêtes.

Voici la requête que j'ai maintenant:

mysql_query("SELECT name, age, address FROM users WHERE name='$name' AND domain_name='$age' LIMIT 100", $localDB); 

Comment puis-je utiliser cette requête pour retourner uniquement RESULTSET 101-200, 201-300, etc ...?

+1

Voir [LIMIT MySQL] (http://dev.mysql.com/doc/refman/5.0/en/select.html). – hakre

+0

Hey, donc dans ma requête, je GROUPY par DESC et LIMIT 100, mais je ne peux pas comprendre comment retourner, par exemple, resultset 101-200. – gfppaste

Répondre

1

Si vous connaissez déjà les quantités (nombres) pour la pagination, mettez simplement un limit sur votre SQL.

Exemple avec PDO:

//url passed has a token of &page=[digit] 
//Do prior error checking to verify $_GET/POST has a page variable, and it is a digit. 

if ($page < 1) { $page = 1;} 

$offset=$limit*($page-1); // Will give an offset of 100 on page 1, or 200 on page 2, etc 


$sql = "SELECT `items` FROM items_db WHERE itemno=:itemno LIMIT :offset, 100"; 

$sql_query = $conn->prepare($sql); // Existing connection 
$sql_query->bindParam(':itemno',$itemno, PDO::PARAM_INT); 
$sql_query->bindParam(':offset', $offset, PDO::PARAM_INT); 

$sql_query->execute(); 
1

Essayez d'utiliser "LIMIT" dans votre requête

par exemple:

$query. "LIMIT 0,100" 

Cela vous aidera à limiter le résultat de votre requête. Au lieu d'obtenir tous les rangs, vous pouvez limiter selon vos besoins.

Questions connexes