Đăng ký học joomla

Tin tức mới nhất

Thống kê truy cập

Truy cập trong ngày:269
Truy cập hôm qua:404
Tổng số truy cập:538068
Đang online: 10 Khách 

Khi truy vấn dữ liệu mà nhận được một danh sách kết quả quá dài, người ta thường phải phân trang ứng dụng cho phù hợp...

 

 

Nguyên tắc của việc phân trang ứng dụng như sau:

- Bước 1: Tính tóan số lượng bản ghi thỏa mãn điều kiện trả về ( thường sử dụng hàm count trong câu lệnh SQL).
- Bước 2: Xác định số lượng bản ghi sẽ hiển thị trên một trang.
- Bước 3: Dựa trên các thông tin có được từ bước 1 và 2, xác định được số trang cần hiển thị.
- Bước 4: Tính tóan số lượng bản ghi sẽ hiển thị tính từ trang nào đó do NSD lựa chọn (Sử dụng câu lệnh LIMIT).

Dưới đây tôi sẽ cung cấp cho các bạn 2 function,
- Function GetPageLinks ($Sql, $PageSize): Trả về một chuỗi văn bản chứa số trang hiển thị, với dữ liệu vào bao gồm câu lệnh SQL ($Sql) xác định số lượng bản ghi thỏa mãn điều kiện tìm kiếm, và "kích thước" của một trang ($PageSize)

 

  • function GetPageLinks($Sql,$PageSize)
  • {
  • $result=mysql_query ($Sql);
  • if (!$result or mysql_num_rows ($result)==0)
  • {
  • }
  • else
  • {
  • $line=mysql_fetch_array($result);
  • $Pages=ceil($line[0]/$PageSize);
  • if ($Pages>1)
  • {
  • $PageLink="Trang ";
  • for ($i=0;$i<=$Pages-1;$i++)
  • {
  • $j=$i+1;
  • if ($j==$_GET["page"])
  • {
  • $PageLink.=" {$j} | ";
  • }
  • else
  • {
  • $NewGet="";
  • reset ($_GET);
  • while (list($key, $val) = each($_GET))
  • {
  • if ($key!='page')
  • {
  • $NewGet.="&{$key}={$val}";
  • }
  • }
  • $NewGet.="&page={$j}";
  • $NewGet=substr($NewGet,1);
  • $PageLink.=" <a href='?{$NewGet}'>{$j}</a> | ";
  • }
  • }
  • $PageLink=substr($PageLink,0,-2);
  • }
  • }
  • return $PageLink;
  • }
Hàm tiếp theo sẽ hiển thị danh sách các record của một trang nào đó, đồng thời demo cách sử dụng hàm GetPageLinks ở trên:
(VD dưới đây sử dụng một câu truy vấn lấy dữ liệu từ một bảng dulieu với một Category có id xác định:
  • function LoadList()
  • {
  • if (isset($_GET["CatId"]) and is_numeric ($_GET["CatId"]))
  • $Dieukien="where CatId={$_GET["CatId"]}";
  • // Cau lenh truy van chinh khi chua phan trang:
  • $Sql="Select * from dulieu {$Dieukien} ";
  • // Tinh toan so luong ban ghi tra ve:
  • $PageSize=20;
  • $CountSQL="Select count(*) from dulieu {$Dieukien}";
  • $PageLinks= GetPageLinks ($CountSQL,$PageSize);
  • if (isset ($_GET["page"]) and is_numeric ($_GET["page"]))
  • {
  • $StartNum=$PageSize * ($_GET["page"]-1); // Xac dinh vi tri ban ghi bat dau
  • }
  • else
  • {
  • $StartNum=0;
  • }
  • //Tiep tuc xay dung cau lenh truy van de lay du lieu theo trang
  • $Sql.= " Limit {$StartNum}, {$PageSize}";
  • $result=mysql_query ($Sql);
  • if (!$result or mysql_num_rows ($result)==0)
  • {
  • $tmp="Híc, tui chẳng mò được chi cả!";
  • }
  • else
  • {
  • $tmp="{$PageLinks}";
  • //========== Hiển thị dữ liệu, các bạn tự viết cho phù hợp với yêu cầu
  • $tmp.="{$PageLinks}";
  • }
  • return $tmp;
  • }
 

Add comment


Security code
Refresh

thiet ke web chuan w3c

Dịch vụ seo website

seo website