sayfalama çaylak MySql soru;

2 Cevap php

I have managed to get paging to work, almost. I want to display to the user, total nr of records found, and the currently displayed records. Ex:

4000 found, displaying 0-100.

I am testing this with the nr 2 (because I don't have that many records, have like 20). So I am using LIMIT $start, $nr_results;

Ben sonuçlar istediğim şekilde, bir sorgu tüm kayıtları getiriliyor görüntülemek ve daha sonra limitli bir zaman, tüm kayıtları almak için mysql_num_rows yapmak için iki sorgu yapmak zorunda mı?

Ben bu var:

 mysql_num_rows($qry_result);
 $total_pages = ceil($num_total / $res_per_page); //$res_per_page==2 and $num_total = 2
    if ($p - 10 < 1) {
       $pagemin=1;
    }

else { $pagemin = $p - 10; } if ($p + 10 > $total_pages) { $pagemax = $total_pages; } else { $pagemax = $p + 10; }

İşte sorgu:

SELECT
  mt.*, 
  fordon.*, 
  boende.*, 
  elektronik.*, 
  business.*, 
  hem_inredning.*, 
  hobby.* 
FROM classified mt 
 LEFT JOIN fordon ON fordon.classified_id = mt.classified_id 
 LEFT JOIN boende ON boende.classified_id = mt.classified_id 
 LEFT JOIN elektronik ON elektronik.classified_id = mt.classified_id 
 LEFT JOIN business ON business.classified_id = mt.classified_id 
 LEFT JOIN hem_inredning ON hem_inredning.classified_id = mt.classified_id 
 LEFT JOIN hobby ON hobby.classified_id = mt.classified_id 
 ORDER BY modify_date DESC 
 LIMIT 0, 2

Teşekkürler, daha fazla girdi ihtiyacınız varsa bana bildirin.

Temelde Q, iki sorguları yapmak zorunda mı?

2 Cevap

Aşağıdaki iki sorgu ile yapmak yapabilirsiniz:

SELECT  SQL_CALC_FOUND_ROWS *
FROM    t_source
LIMIT   100, 10;

SELECT  FOUND_ROWS();

first bir sonuç dönecektir, second bir would hiçbir LIMIT fıkra olarak iade edilecek kayıtların sayısını gösterir .

SQL_CALC_FOUND_ROWS sorguya alternatif bir sorgu seçme COUNT (*) olacaktır. This article hatta daha hızlı uygun bir dizin mevcut olduğunda olabileceğini düşündürmektedir:

SELECT COUNT(*) FROM your_table WHERE ...