Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Разбиение списка
 
 автор: Владимир55   (25.11.2012 в 13:39)   письмо автору
9.7 Кб
 
 

При выводе большого списка принято его разбивать на страницы с определенным количеством строк на каждой (например, по 10 строк). При этом возникает необходимость оперативного выбора конкретной страницы списке. Если список большой, то часть страниц пропускается (скриншот).

Как это осуществить?

  Ответить  
 
 автор: Valick   (25.11.2012 в 13:46)   письмо автору
 
   для: Владимир55   (25.11.2012 в 13:39)
 

тут чистая математика
например всего страниц 20, надо показать первые 5 и последние 5
формируем ссылки 1, 2, 3, 4, 5 и 20-4, 20-3, 20-2, 20-1, 20
___
при формировании ссылок с количеством сообщений принцип тот же
например со [115-125] ... [290-300], только математики чуть побольше

  Ответить  
 
 автор: Владимир55   (25.11.2012 в 14:05)   письмо автору
 
   для: Valick   (25.11.2012 в 13:46)
 

Спасибо!

А то я предположил, что мудрый РНР мог что-нибудь предусмотреть и на этот случай.

  Ответить  
 
 автор: cheops   (26.11.2012 в 21:10)   письмо автору
 
   для: Владимир55   (25.11.2012 в 14:05)
 

Как правило, предусматривается, но уже на уровне FrameWork-ов и CMS.

  Ответить  
 
 автор: Владимир55   (29.11.2012 в 11:02)   письмо автору
9.7 Кб
 
   для: Valick   (25.11.2012 в 13:46)
 

Всеж таки, непонятно, как реально составить условия вывода.

Предположим, что имеется 12 строк с названиями групп товаров и 990 названий товаров. Всего 1002 строки, которые надо вывести по 10 на странице.

Изначально выводим:
1 2 3 4 5 6 7 8 9 10 ... 101

Посетитель кликает на 9 и должно получиться, как в скриншоте.

Как описать эти условия вывода, чтобы перейти к реализации алгоритма?

  Ответить  
 
 автор: elenaki   (29.11.2012 в 12:21)   письмо автору
 
   для: Владимир55   (29.11.2012 в 11:02)
 

код вырезан из рабочего проекта. заменить - запросы, ссылки на страницу, картинки-стрелки
комментарии есть, если иметь ввиду, что meta - это ПОСЛЕ, а prin - ДО, то код вполне читаем.
разбиение делается блоками ДО и ПОСЛЕ текущей страницы, в данном случае - блок=5, можно
поменять. есть ссылки на первую и последнюю страницу. если что не так, спрашивайте, помогу.

я сделала вывод по 2 результата на страницу ($on_page) только для наглядности, можно менять.

<?
if (!isset($_GET["start_from"]) || $_GET["start_from"]==""$start_from=0;
else 
$start_from $_GET["start_from"];

$find_page_test mysql_query("select id from ".$db_prefix."partners  ") or die(mysql_error());
$abc mysql_num_rows($find_page_test);  /// all records
$on_page 2

// primer zaprosa pri yslovii nalichia $start_from i $on_page!!!!!! 
//$users_query = mysql_query("select *, title_comp as title_comp  from ".$db_prefix."partners LIMIT $start_from, $on_page") or die(mysql_error());
/// tyt idet vivod rezul'tatov zaprosa
?>

<? if ($abc $on_page) {?> 
            
<table>
    <tr>
        
<? $count_pages ceil($abc $on_page); /// skol'ko stranic

$block 5;   /// skol'ko ssilok
$prin $start_from 5;  /// chislo ssilok DO


if  (($prin 0) && ($start_from 1))
{
$pred $start_from 1

echo 
"<td><a href='?start_from=".$pred."'><img src='images/prev.gif' border=0 width=12 height=12 hspace=4  alt=''></td>"/// kartinka - strelka
for ($i $start_from 1$i 0$i--)
    {
$nomer $start_from-$i
    echo 
"<td><a href='?start_from=".$nomer."'>".$nomer."</a></td>";
    }
}

if ((
$prin 0) && ($start_from 1))  
{
$pred $start_from 1;

echo 
"<td><a href='?start_from=".$pred."'><img src='images/prev.gif' border=0 width=12 height=12 hspace=4  alt=''></a></td>";
     for (
$i $block 1$i >= 1$i--)
    {
$nomer $start_from-$i;
    echo 
"<td><a href='?start_from=".$nomer."'>".$nomer."</a></td>";
    }
}

if (
$start_from 0) echo "<td><b>".$start_from."</b></td>"// tek.stranica

$meta $start_from 5/// chsislo ssilok POSLE
if (($meta $count_pages) && ($start_from $count_pages))  
{
$sled $start_from 1;
     for (
$i $start_from+1$i <= $count_pages$i++)
    {
$nomer $i
    echo 
"<td><a href='?start_from=".$nomer."'>".$nomer."</a></td>";
    }
echo 
"<td><a href='?start_from=".$sled."'><img src='images/next.gif' border=0 width=12 height=12 hspace=4 alt=''></a></td>";

}

 if ((
$meta $count_pages) && ($start_from $count_pages))
 {
  
$sled $start_from 1;
 for (
$i $start_from 1$i $start_from 5$i++)
    {
$nomer $i
    echo 
"<td><a href='?start_from=".$nomer."'>".$nomer."</a></td>";
    }
echo 
"<td><a href='?start_from=".$sled."'><img src='images/next.gif' border=0 width=12 height=12 hspace=4 alt=''></a></td>";

 }

?>                  
            </td>
        </tr> </table>
        
        <!-- end paging -->                 
<?}?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования