2010-11-15 5 views
2

Je construis une page de recherche, chaque page comportant 10 résultats. Pour ce faire, je voudrais afficher les numéros de pages en bas (comme dans Google par exemple) afin qu'un utilisateur puisse accéder à un résultat de page spécifique. Pour ce faire, j'ai besoin de connaître le nombre global de la requête (par exemple, si je montre 10 résultats par page et que la requête spécifique renvoie 73 lignes dans ma Table, je devrais afficher des liens vers 8 pages).Comptage de tous les résultats de la requête MySQL pour la pagination

La seule façon que je peux penser utilise les éléments suivants (évidemment inefficace) requête:

// Query for the current page 
$res = mysql_query("select * from TABLE WHERE COL='Sample' LIMIT $offset,10"); 

// Geeting the total count do I can build links to other pages 
$res2 = mysql_query("select COUNT(*) fromTABLE WHERE COL='Sample'");  

Est-ce que la seule façon de le faire?

Merci,

Danny

Répondre

8

vous pouvez use

SQL_CALC_FOUND_ROWS 


mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name 
    -> WHERE id > 100 LIMIT 10; 
mysql> SELECT FOUND_ROWS(); 

SQL_CALC_FOUND_ROWS dit MySQL pour calculer combien de lignes il y aurait dans le jeu de résultats, abstraction faite de toute clause LIMITE . Le nombre de lignes peut alors être récupéré avec SELECT FOUND_ROWS()

+1

Merci, je suppose qu'il est plus efficace! – Joel

+3

@Danny: [Vers SQL_CALC_FOUND_ROWS ou pas vers SQL_CALC_FOUND_ROWS?] (Http://www.mysqlperformanceblog.com/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/) –

Questions connexes