Разделение на страници

duke333

Новичок
вопрос не в том как поделить уже имеющиеся данные а как с минимальными затратами получить данные и разбить на страницы !!!
 

fixxxer

К.О.
Партнер клуба
Avron2

ну и накуя ты влез со своим детским говнокодом в тред, в котором 6 лет назад дали нормальный код?
 

fixxxer

К.О.
Партнер клуба
duke333

ты как-то не по русски пишешь, но если я среди этого потока букв верно понял, что тебя беспокоят тормоза при больших offset - используй запросы вида where id > $id limit 10
 

Avron2

Новичок
Avron2

ну и накуя ты влез со своим детским говнокодом в тред, в котором 6 лет назад дали нормальный код?
Как я понимаю, есть люди на форуме, которые не так хотят помочь, как оскорбить и унизить другого. Ну если бы все были такие профессионалы как ты, то небыло бы ни одного поста на этом форуме. Автор темы сам в праве решить, что ему больше подходит. Это не конкурс на лучший код. Никто ничего не навязывает.
Один не по-русски пишет, другой говнокодит........
 

craz

Нестандартное звание
Как я понимаю, есть люди на форуме, которые не так хотят помочь, как оскорбить и унизить другого. Ну если бы все были такие профессионалы как ты, то небыло бы ни одного поста на этом форуме. Автор темы сам в праве решить, что ему больше подходит. Это не конкурс на лучший код. Никто ничего не навязывает.
Один не по-русски пишет, другой говнокодит........
он так написал потому что вы некропостингом занимаетесь
 

duke333

Новичок
да код Avron2 - тут не в тему. А я действительно русский подзабыл, 10 лет уже за бугром. но суть не в этом.
конкретного ответа как делать я так и не нашол нигде на этом форуме.
Повтору вопрос: Есть таблиза 1.000 записей (или больше), нужно выводить постранично по 20 записей на страницу.
Способ 1:
a) SELECT count(id) FROM table
б) определяем в зависимости от номера страницы смещение (на пример страницы 5, смещение 5*20 = 100)
в) делаем выборку данный для нужной страницы SELECT * FROM table LIMIT 100,20

Способ 2:
a) SELECT * FROM table
б) определяем в зависимости от номера страницы смещение (на пример страницы 5, смещение 5*20 = 100)
в) делаем выборку данный для нужной страницы
foreach($row as $index => $content_data){
if($index > 100 && $index <= 100+20){
$output_data .= $content_data;
}
elseif($index > 100+20){
break;
}
}
1. ТАК ВОТ КАКОЙ ИЗ ЭТИХ СПОСОБОВ ЛУЧШЕ ?
2. ЕСЛИ ЗЕПИСЕЙ БУДЕТ 1.000.000 ТО КАКОЙ СПОСОБ ЛУЧШЕ ?
 

Духовность™

Продвинутый новичок
Могу дать немного сырую наработку:
PHP:
<?php
include_once('./Krugozor/Base/Navigation.php');
include_once('./Krugozor/Helper/Navigation.php');

$db = mysql_connect('localhost', 'root', '');
mysql_select_db('adverts', $db);

// Инстанцируем класс навигации
// 10 - количество записей на страницу
// 50 - количество ссылок на страницы на странице, расчитвается как 50/10
$navigation = new Base_Navigation(10, 50);

$sql = 'SELECT SQL_CALC_FOUND_ROWS advert_header FROM advert ORDER BY id DESC LIMIT ' .
       $navigation->getStartLimit() . ',' . $navigation->getStopLimit();

$result_list = mysql_query($sql, $db);
$result_query = mysql_query('SELECT FOUND_ROWS() as count', $db);

$count = mysql_fetch_assoc($result_query);
$navigation->setCount($count['count']);

while (($row = mysql_fetch_assoc($result_list)) !== false) {
    echo $row['advert_header'] . '<br>';
}

// рисуем пагинатор
$paginator = new Helper_Navigation($navigation);
$paginator->setCssNormalLinkClass('navigation_normal_link') // стиль гиперссылки
          ->setCssActiveLinkClass('navigation_open_link') // стиль открытого элемента меню пагинации
          ->setRequestUriParameter('param1', 'val1') // параметр для query string гиперссылки 
          ->setRequestUriParameter('param2', 'val2') // параметр для query string гиперссылки
          ->setAnchor('bla-bla') // #якорь
          ->setViewLastPageLabel(false); // не показывать метку "на последню страницу"
?>

<!-- Шаблон -->
<style>
    .navigation_open_link{
        font-weight:bold;
        font-size:160%;
    }
</style>

<?php if ($paginator): ?>
<div>
    Всего элементов: <strong><?=$paginator->getNavigation()->getCount()?></strong>
    <?php if ($paginator->getNavigation()->getCount()): ?>
        <br /><br /><span>Страницы:</span>
        <?=$paginator->getHtml()?>
    <?php endif; ?>
</div>
<?php endif; ?>

<hr>
результат:
...
...
....

Всего элементов: 3200

Страницы: ««« «« « 11 12 13 14 15 » »»
 

duke333

Новичок
Духовность™ - а по скорости это действительно оптимальный вариант ???
 
Сверху