Богатый духовно
455 / 262 / 145
Регистрация: 10.03.2015
Сообщений: 1,057
1

Разделить вывод цикла на несколько страниц

02.04.2016, 02:26. Показов 3378. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем здравствуйте зашел в тупик с кодом
PHP
1
2
3
4
5
        <?php foreach($article as $a): ?>
                <?=$a['title']?>//выводи заголовок
                Опубликовано: <?=$a['date']?>//дату
                <?=articles_intro($a['content'])?>//контент из базы данных
              <?php endforeach ?>
Вот в чем тупик, все выводиться прекрасно, но мне надо что бы 5 записей выводились на первой странице и в низу появлялись цифры страниц типа ( < 1 2 3 ... 10 12 13 >) и что бы так же по 5 статей на каждой страницы, я знаю что сделать реально, но у меня не выходить. Подскажите пожалуйста как это реализовать.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2016, 02:26
Ответы с готовыми решениями:

Разделить статью на несколько страниц с помощью тега nextpage
Добрый день эксперты. Не получается разделить статью на несколько страниц с помощью тега...

Таблица и вывод данных на несколько страниц
Всем доброго времени суток. Есть таблица с пользователями(100+), как сделать чтобы на страницу...

Разделить элементы цикла
Подскажите пожалуйста, какой способ перебора массива, или какой цикл позволяет вывести первые пять...

вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного цикла и что бы все printf были только в теле цикла
вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного...

11
Эксперт PHP
3846 / 3192 / 1341
Регистрация: 01.08.2012
Сообщений: 10,813
02.04.2016, 07:51 2
Это называется пагинация, примеров на форуме полно.
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
02.04.2016, 10:17 3
Вот класс для такого разделения: Обмен готовыми решениями
0
Заблокирован
02.04.2016, 14:29 4
boilzzz, у вас подход в принципе неверный. Из базы нужно сразу выбирать нужную группу записей. Вот почитайте или поищите мои посты на эту тему на форуме.
0
Богатый духовно
455 / 262 / 145
Регистрация: 10.03.2015
Сообщений: 1,057
02.04.2016, 23:23  [ТС] 5
Цитата Сообщение от miketomlin Посмотреть сообщение
у вас подход в принципе неверный
Это так скажем не мой метод, учился писать блог с 0, так вот выводиться все выводиться, проблема только с пагинацией.

Добавлено через 24 минуты
Цитата Сообщение от Para bellum Посмотреть сообщение
Вот класс для такого
Попытался испольщовать ваш клас и как не кручусь пишет такое
Fatal error: Call to a member function query() on resource in C:\xampp\htdocs\pag\index.php on line 259
PHP
1
259. $stmt     = $db->query('SELECT COUNT(*) `amount` FROM `table`')->execute();
0
Hello Kitty
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
02.04.2016, 23:51 6
попробуйте так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$pgnStart = min( max( @(int)$_REQUEST['pgn_offset'] , 1 ) , count($article) );
$pgnLength = 5;
 
$_pgnStart = $pgnStart;
$_pgnLength = $pgnLength;
foreach($article as $a) {
    if ( --$_pgnStart > 0 ) { continue; }
    if ( $_pgnLength-- <= 0 ) { break; }
    echo $a['title']; //выводи заголовок
    echo "Опубликовано: ".$a['date'];//дату
    echo articles_intro($a['content']); //контент из базы данных
    echo "\n";
}
 
for( $i=max($pgnStart-5 , 1); $i <= min($pgnStart+5 , count($article)); $i++ ) {
    echo "<a href='?pgn_offset=$i' >$i</a>\n";
}
0
Богатый духовно
455 / 262 / 145
Регистрация: 10.03.2015
Сообщений: 1,057
03.04.2016, 01:30  [ТС] 7
Так, попробовал пока что ваше решение самое близкое, из всех найденных.
только 1 проблемма, он создает количество страниц = количеством записей в БД, и на каждой странице убирает 1 запись, допустим 5 записей.
1 страница 5 записей
2 страница 4 записи, и т.д
5 страница 1 запись.

Добавлено через 14 минут
и это при том что длина вывода с стоит 10, а не 1.
0
Hello Kitty
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
03.04.2016, 01:31 8
Лучший ответ Сообщение было отмечено boilzzz как решение

Решение

и правда
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$pgnLength = 5;
$pgnStart = min( max( @(int)$_REQUEST['pgn_offset'] - 1 , 0 ) , ceil(count($article) / $pgnLength) - 1 );
 
$_pgnStart = $pgnStart*$pgnLength + 1;
$_pgnLength = $pgnLength;
foreach($article as $a) {
    if ( --$_pgnStart > 0 ) { continue; }
    if ( $_pgnLength-- <= 0 ) { break; }
    echo $a['title']; //выводи заголовок
    echo "Опубликовано: ".$a['date'];//дату
    echo articles_intro($a['content']); //контент из базы данных
    echo "\n";
}
 
for( $i=max($pgnStart-5 , 1); $i <= min($pgnStart+5 , ceil(count($article) / $pgnLength)); $i++ ) {
    echo "<a href='?pgn_offset=$i' >$i</a>\n";
}
1
Богатый духовно
455 / 262 / 145
Регистрация: 10.03.2015
Сообщений: 1,057
03.04.2016, 01:39  [ТС] 9
так понял это зависит от count($article), но мне надо, допустим, что бы из 10 записей выводились 5 на одной странице и 5 на другой, то есть всего 2 страницы а не 10. Сразу извеняюсь за такую придирчивость но вот долблюсь долблюсь, но не понимаю.

Добавлено через 2 минуты
Просто ОГРОМНОЕ вам спасибо! А то с теми пагинациями которые я читал, ни чего внятного не было! Ваш способ пока что идеален!
0
Hello Kitty
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
03.04.2016, 02:12 10
Цитата Сообщение от boilzzz Посмотреть сообщение
Ваш способ пока что идеален!
все же делать LIMIT в sql будет получше
0
Богатый духовно
455 / 262 / 145
Регистрация: 10.03.2015
Сообщений: 1,057
03.04.2016, 03:15  [ТС] 11
Цитата Сообщение от WhiteMind Посмотреть сообщение
все же делать LIMIT в sql будет получше
Хорошо, буду учиться делать через LIMIT!
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
03.04.2016, 06:55 12
Цитата Сообщение от boilzzz Посмотреть сообщение
Попытался испольщовать ваш клас и как не кручусь пишет такое
Fatal error: Call to a member function query() on resource in C:\xampp\htdocs\pag\index.php on line 259
В переменной $db должен содержаться объект подключения к базе данных.
0
03.04.2016, 06:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2016, 06:55
Помогаю со студенческими работами здесь

Нахождение отрицательного цикла в графе и вывод цикла
Вот программа по нахождению отрицательного цикла в графе и вывод цикла void Floyd(int GR, int...

Вывод результата в теле цикла и за пределами цикла???
Вывод результата в теле цикла и за его пределами: 1. как это влияет на результат? 2. где про это...

Как разделить строку TStringlist без цикла?
Допустим имеется строка: &quot;Hello world!&quot; в TStringList ,как присвоить другой TStringlist &quot;Hello&quot; без...

Цикл For. Вывод цикла внутри цикла
Всем привет, есть проблемка. Код рабочий но при вводе среднего бала допустим выше несуществующего...

Разделить поле на несколько
Всем доброго дня! Пытаюсь создать БД, типа справочника телефонов. Нашел в - Excel для нашего...

Разделить таблицу на несколько
Здравствуйте, уважаемые форумчане. Помогите, пожалуйста, разделить таблицу на несколько таблиц....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru