- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
<?php
$self=$_SERVER['PHP_SELF'];
if (isset($_GET['page'])) { $page=$_GET['page'];} else {$page=1;}
$pages=25;
$page_offset=5;
$unique_links=9;
if ($page != 1) { // Don't show back link if current page is first page.
$back_page = $page-1;
echo("<a href=\"$self?page=$back_page\">prev</a> \n");}
for ($i=1; $i <= $pages; $i++) {
if ($i == $page) {
echo("<b>$i</b>\n");// If current page don't give link, just text.
} else {
if (($i>$page-$page_offset) && ($i<$page+$page_offset) && ($page>$page_offset)) {
echo("<a href=\"$self?page=$i\">$i</a> \n");
}
elseif (($i<=$unique_links) && ($page<=$page_offset)) {
echo("<a href=\"$self?page=$i\">$i</a> \n");
}
elseif (($i>$pages-$unique_links) && ($page>$pages-$page_offset)) {
echo("<a href=\"$self?page=$i\">$i</a> \n");
}
}
}
if (!($page >= $pages) && $pages != 1) { // If last page don't give next link.
$next_page = $page + 1;
echo("<a href=\"$self?page=$next_page\">next</a>");}
?>
Адовый аромат (хоть и рабочий), понимаю, но помогите упростить, пожалуйста. Условия внутри цикла скорее всего избыточны.
Вкратце: "плавающий" пагинатор, 9 уникальных ссылок.
guest 30.06.2015 21:56 # 0
глядь! откуда в 2015м году такие дебилы берутся? Во истину -- ПХПист хуже обезьяны
guest 30.06.2015 21:58 # +1
nurfed362 30.06.2015 22:18 # 0
Stallman 30.06.2015 23:03 # +2
nurfed362 01.07.2015 00:34 # 0
Злые вы. Ну ладно, а вот так ?
$pages=25;
$page_offset=5;
$unique_links=9;
for ($i=1;$i<=$pages;$i++) {
$pages_a[$i]=$i;
}
if ($page+$unique_links<=$pages) {
$sliced=array_slice($pages_a,$page-1,$unique_links);
}else{
$sliced=array_slice($pages_a,$pages-$unique_links,$unique_links);
}
if ($page != 1) { // Don't show back link if current page is first page.
$back_page = $page-1;
echo("<a href=\"$self?page=$back_page\">назад</a> \n");}
foreach ($sliced as $key=>$value) {
if ($value== $page) {
echo("<b>$value</b>\n");// If current page don't give link, just text.
} else {
echo("<a href=\"$self?page=$value\">$value</a> \n");
}
}
if (!($page >= $pages) && $pages != 1) { // If last page don't give next link.
$next_page = $page + 1;
echo("<a href=\"$self?page=$next_page\">вперед</a>");}
3_14dar 01.07.2015 00:47 # 0
inkanus-gray 01.07.2015 00:53 # 0
Vasiliy 01.07.2015 01:02 # +1
inkanus-gray 01.07.2015 01:41 # 0
Тогда printf в сишечке — тоже шаблонизатор...
Vasiliy 01.07.2015 02:07 # 0
3_14dar 01.07.2015 04:17 # 0
3_14dar 01.07.2015 04:17 # 0
Здесь? Везде?
inkanus-gray 01.07.2015 10:59 # 0
Vasiliy 01.07.2015 11:11 # +1
echo " цццц $dddd sdasasdas"; шаблонизатор - автор мудак
цццц <?= $dddd ?> sdasasdas тоже шаблонизатор - автор не мудак.
nurfed362 01.07.2015 11:38 # +1
Vasiliy 01.07.2015 12:02 # 0
мало того что обрамлять нужно {} так он еще наследование шаблонов умеет и прочие ништяки
nurfed362 01.07.2015 18:46 # 0
$self=$_SERVER['PHP_SELF'];
$pages=25;
$page_offset=5;
$unique_links=9;
$pages_a=range(1,$pages);
$page = (isset($_GET['page']) && in_array($_GET['page'],$pages_a)) ? intval($_GET['page']) : 1;
switch(true) {
case ($page-$page_offset<=1):
$pages_a_s=array_slice($pages_a,0,$uniqu e_links);
$pages_a_s[]="..."; $pages_a_s[]="25"; break;
case ($page+$page_offset>=$pages):
$pages_a_s=array_slice($pages_a,$pages-$unique_links,$unique_links);
array_unshift($pages_a_s, 1, "..."); break;
default:
$pages_a_s=array_slice($pages_a,$page-$page_offset,$unique_links);
array_unshift($pages_a_s, 1, "...");
$pages_a_s[]="..."; $pages_a_s[]="25";
}
$back_page = $page-1;
echo (($page != 1) ? "<a href=\"$self?page=$back_page\">назад</a> \n" : "");
foreach ($pages_a_s as $key=>$value) {
echo ((($value== $page) || ($value=="...")) ? "<b>$value</b>\n" : "<a href=\"$self?page=$value\">$value</a> \n");
}
$next_page = $page + 1;
echo((!($page >= $pages) && $pages != 1) ? "<a href=\"$self?page=$next_page\">вперед</a>" : "");
nurfed362 03.07.2015 18:32 # 0
$pages=25;
$page_offset=5;
$unique_links=11;
$pages_a=range(1,$pages);
$page = (isset($_GET['page']) && in_array($_GET['page'],$pages_a)) ? intval($_GET['page']) : 1;
switch(true) {
case ($pages<=$unique_links):
$pages_a_s=$pages_a;break;
case ($page-$page_offset<=1):
$pages_a_s=array_slice($pages_a,0,$uniqu e_links-1);
$pages_a_s[]="..."; $pages_a_s[]=$pages;; break;
case ($page+$page_offset>=$pages):
$pages_a_s=array_slice($pages_a,$pages-$unique_links+1,$unique_links);
array_unshift($pages_a_s, 1, "..."); break;
default:
$pages_a_s=array_slice($pages_a,$page-$page_offset,$unique_links-2);
array_unshift($pages_a_s, 1, "...");
$pages_a_s[]="..."; $pages_a_s[]=$pages;
}
$back_page = $page-1;
echo (($page != 1) ? "<a href=\"$self?page=$back_page\">назад</a> \n" : "");
foreach ($pages_a_s as $key=>$value) {
echo ((($value== $page) || ($value=="...")) ? "<b>$value</b>\n" : "<a href=\"$self?page=$value\">$value</a> \n");
}
$next_page = $page + 1;
echo((!($page >= $pages) && $pages != 1) ? "<a href=\"$self?page=$next_page\">вперед</a>" : "");