- Статьи и примеры
- | Разное полезное
- | Три примера постраничного вывода на java, php и coldfusion script
- | Три примера постраничного вывода на java, php и coldfusion script страница 2
Три примера постраничного вывода на Java, PHP и ColdFusion Script Страница 2
PHP
function preparePagingString($currentPageNumber, $totalItems, $itemsPerPage, $pageLocation, $addToRequest){
$ret = "";
if ($totalItems <= $itemsPerPage) return $ret;
$totalPages = intval ($totalItems / $itemsPerPage);
if ($totalItems % $itemsPerPage) $totalPages++;
if($currentPageNumber >= $totalPages)
$currentPageNumber = $totalPages-1;
if ($totalItems <= $currentPageNumber * $itemsPerPage)
$currentPageNumber = 1;
$start = $currentPageNumber - 4;
$end = $currentPageNumber + 5;
if ($start < 0) $start = 0;
if ($end >= $totalPages) $end = $totalPages;
if ($start > 0){
$ret .= "<a href='".$pageLocation."?page=1".$addToRequest."\'>1</a> ";
}
if ($start > 1)
$ret .= "..., ";
for ($i = $start; $i < $end; $i++) {
if ($i == $currentPageNumber){
$ret .= "<strong>".($i + 1)."</strong>";
}else{
$ret .= "<a href='".$pageLocation."?page=".($i + 1).$addToRequest."'>".($i + 1)."</a>";
}
if ($i + 1 < $totalPages)
$ret .= ", ";
}
if ($end + 1 < $totalPages)
$ret .= "..., ";
if ($end < $totalPages) {
if ($totalPages == $currentPageNumber){
$ret .= "<strong>".$totalPages."</strong>";
}else{
$ret .= "<a href='".$pageLocation."?page=".$totalPages.$addToRequest."'>".$totalPages."</a>";
}
}
return $ret;
}
Вызов функции производится следующим образом:
<? $paging_string = preparePagingString(0,20,4,"/my_test/","&f=34&ff=90"); echo $paging_string;
?>
ColdFusion
Формирование строки происходит в cf скрипте.
<cfscript>
ret = "";
pageLocation = "/my_site/my_page/";
addToRequest = "&key1=val1&key2=val2";
if(totalPages gt itemsPerPage){
totalPages = totalPages \ itemsPerPage;
if (totalPages MOD itemsPerPage neq 0){
totalPages = totalPages+1;
}
if (currentPageNumber gte totalPages){
currentPageNumber = totalPages-1;
}
if (totalPages lte (currentPageNumber-1) * itemsPerPage){
currentPageNumber = 1;
}
if (totalPages gt itemsPerPage) {
start = currentPageNumber - 4;
if (start lt 0){
start = 0;
}
end = currentPageNumber + 5;
if (end gte totalPages){
end = totalPages;
}
if (start gt 0){
ret = ret & "<a href='" & pageLocation & "?currentPageNumber=1" & addToRequest & "'>1</a> ";
}
if (start gt 1){
ret = ret & "..., ";
}
for (i = start; i lt end; i=i+1) {
if (i+1 eq currentPageNumber){
ret = ret & "<strong>" & (i + 1) & "</strong>";
}else{
ret = ret & "<a href='" & pageLocation & "?currentPageNumber=" & (i + 1) & addToRequest & "'>" & (i + 1) & "</a>";
}
if (i + 1 lt totalPages){
ret = ret & ", ";
}
}
if (end + 1 lt totalPages){
ret = ret & "..., ";
}
if (end lt totalPages) {
if (totalPages eq currentPageNumber){
ret = ret & "<strong>" & totalPages & "</strong>";
}else{
ret = ret & "<a href='" & pageLocation & "?currentPageNumber=" & totalPages & addToRequest & "'>" & totalPages & "</a>";
}
}
ret = "Page: " & ret;
}
}
</cfscript>
Теперь пару слов о том как получить нужную страницу при помощи SQL запроса из базы данных. Про MySQL здесь речь не пойдет — смотрите документацию. Покажем только запрос к Oracle.
PreparedStatement ps = null;
ps = connection.prepareStatement("SELECT b.*,rownum, " +
"FROM( SELECT a.*, rownum as rnum FROM ( " +
"SELECT * FROM table WHERE " +
"MyDATE > TO_DATE(?, 'YYYY/MM/DD') " +
"AND MyDATE < TO_DATE(?, 'YYYY/MM/DD')+1) a where rownum <= ? )" +
"b where b.rnum >= ?");
ps.setString(1,fromDateString);
ps.setString(2,toDateString);
ps.setInt(3,startPaging);
ps.setInt(4,endPaging);
В этом запросе мы получаем записи из таблицы table начиная со startPaging и заканчивая endPaging. По условию выбираются записи с датой MyDATE в промежуток времени от fromDateString до toDateString включая эти даты.
Файлы, используемые в статье
- Пример постраничного вывода на JAVA
- Пример постраничного вывода на PHP
- Пример постраничного вывода на ColdFusion Script
Страница:
2
Санкт-Петербург Зима 2009
