- Статьи и примеры
- | Разное полезное
- | Три примера постраничного вывода на 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