[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: разбивка по страницам
antoneskoV
Есть код разбивки новостей по странично. На страницы 7 новостей. Проблема в том что если на страницы нету новостей равного числу 7, то добавляется дополнительная пустая страничка. В итоге все нормально выводит но добавляет пустую страницу в конце.
Вот кусок кода. Причина заключается в том что не правильно подсчитываться значения $disp_to.

//Визначаю кількість сторінок зі знайденими результатами $total_pages
$arts_per_page=10;
$i= $total_pages1%$arts_per_page;
if ($i==0) {$total_pages=$total_pages1/$arts_per_page;} else {$total_pages=(($total_pages1-$i)/$arts_per_page)+1;}
$disp_from=(ceil($page1/$arts_per_page)-1)*$arts_per_page+1;//Мне кажется причина кроется в неправильном округлений

$disp_to=$disp_from+$arts_per_page-1;

if ($disp_to>$total_pages1) {$disp_to=$total_pages1;} //По яку статтю

И цикл вывода
for ($i=$disp_from; $i<=$disp_to; $i++) 
{
if ($page1==$i)
{echo "<span class=\"str_link\">";
echo "".$i."";
echo "</span>";}
else
{echo "<span class=\"str_links\">";
echo '<a href="'.$filereferer.$param.'page='.$i.'">'.$i.'</a>';
echo "</span>";
}

Пробовал менять функцию округления! Но в итоге ничего не получилось! :(




Спустя 1 час, 49 минут, 7 секунд (12.12.2010 - 21:12) inpost написал(а):
Немного не нравится вид этот, можно было бы красивее. А вот теперь по теме:
в for добавляешь условие,
if(empty($i)) break; // брейк прервёт цикл for полностью!

Спустя 30 минут, 38 секунд (12.12.2010 - 21:42) antoneskoV написал(а):
Спасибо за быстрый ответ! Попробовал не получилось! Я так понимаю у нас $i формируется до тех пор пока $i<=$disp_to и по этой причине использовать if(empty($i)) break; по отношению к $i не принесет результата.

Спустя 3 минуты, 37 секунд (12.12.2010 - 21:46) inpost написал(а):
Покажи код, куда вставил ты его?

Спустя 17 минут, 21 секунда (12.12.2010 - 22:03) antoneskoV написал(а):
for ($i=$disp_from; $i<=$disp_to; $i++) 
{
if(empty($i)) break;
if ($page1==$i)
{echo "<span class=\"str_link\">";
echo "".$i."";
echo "</span>";}
else
{echo "<span class=\"str_links\">";
echo '<a href="'.$filereferer.$param.'page='.$i.'">'.$i.'</a>';
echo "</span>";
}

Так я правильно понял!? :huh:

Спустя 4 минуты, 10 секунд (12.12.2010 - 22:07) inpost написал(а):
да, но одна из переменных должна быть пустой, либо $filereferer, либо param. Посмотри по коду, что будет пустой - к той и примени проверку на empty.

Спустя 40 минут, 57 секунд (12.12.2010 - 22:48) antoneskoV написал(а):
Эти параметры постоянные и отвечают за путь в ссылке, меняется только page='.$i.'
Понимаешь почему то при не полном заполнений страницы $disp_to например равняется 2.71428571429 , при количестве новостей 6.
Выкладываю весь код
function CalcPages($arts,$page,$arts_per_page)
{
//Визначаю кількість сторінок зі знайденими результатами $total_pages
if (isset($arts))
{
$i=count($arts)%$arts_per_page;
if ($i==0) {$total_pages=count($arts)/$arts_per_page;} else {$total_pages=((count($arts)-$i)/$arts_per_page)+1;}
}

$disp_from=$arts_per_page*($page-1)+1; //З якої статті виводити на сторінку
$disp_to=$disp_from+$arts_per_page-1;
if (isset($arts))
{
if ($disp_to>count($arts)) {$disp_to=count($arts);} //По яку статтю
}
return array($disp_from, $disp_to, $total_pages);
}


function ShowNavigation($total_pages1, $page1, $filereferer)
{
if ($total_pages1==1){return;}

//Визначаю кількість сторінок зі знайденими результатами $total_pages
$arts_per_page=10;
$i= $total_pages1%$arts_per_page;
if ($i==0) {$total_pages=$total_pages1/$arts_per_page;} else {$total_pages=(($total_pages1-$i)/$arts_per_page)+1;}
$disp_from=(ceil($page1/$arts_per_page)-1)*$arts_per_page+1;

$disp_to=$disp_from+$arts_per_page-1;

if ($disp_to>$total_pages1) {$disp_to=$total_pages1;} //По яку статтю




if (strpos($filereferer,"?")>1)
{$param="&";}
else
{$param="?";}



if ($disp_from>1) {
echo "<span class=\"str_links\">";
echo '<a href="'.$filereferer.$param.'page='.($disp_from-1).'"><<< </a>';}else{
echo "</span>";
}
for ($i=$disp_from; $i<=$disp_to; $i++)
{
if ($page1==$i)
{echo "<span class=\"str_link\">";
echo "".$i."";
echo "</span>";}
else
{echo "<span class=\"str_links\">";
echo '<a href="'.$filereferer.$param.'page='.$i.'">'.$i.'</a>';
echo "</span>";
}
if ($i<$total_pages1)
{echo "  ";}
}

if ($disp_to<$total_pages1){
echo "<span class=\"str_links\">";
echo '<a href="'.$filereferer.$param.'page='.($disp_to+1).'"> >>></a>';}else{
echo "</span>";
}// послед стр


}

Спустя 3 минуты, 21 секунда (12.12.2010 - 22:52) antoneskoV написал(а):
Мне кажется проблема в этом месте.

$disp_from=(ceil($page1/$arts_per_page)-1)*$arts_per_page+1;
$disp_to=$disp_from+$arts_per_page-1;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.