Пагинация, определить номер страницы!

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Пагинация, определить номер страницы!

Сообщение mat.twg »

Всем привет, ищу лаконичное решение по поиску номера страницы по номеру элемента в общем списке.
Например есть список из 10 элементов, разбивка по 3 элемента на страницу, надо получить номер страницы 4, если элемент 10 и например, страницу 1 если элемент номер 2.
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Пагинация, определить номер страницы!

Сообщение Loveorigami »

Задача 3 класса - в корзину вмещается 3 яблока. В какую корзину по счету будет положено 10 яблоко
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Пагинация, определить номер страницы!

Сообщение zelenin »

Loveorigami писал(а): 2017.02.26, 12:35 Задача 3 класса - в корзину вмещается 3 яблока. В какую корзину по счету будет положено 10 яблоко
чувак с > 5-летним опытом программирования. Не может быть, чтобы он спрашивал 10/3+1.
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Пагинация, определить номер страницы!

Сообщение mat.twg »

А что такого.. захотел спросил, не хотите не отвечайте... я сейчас в состоянии близком к зомби, но это конечно не оправдание. =)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Пагинация, определить номер страницы!

Сообщение zelenin »

mat.twg писал(а): 2017.02.26, 13:08 А что такого.. захотел спросил, не хотите не отвечайте... я сейчас в состоянии близком к зомби, но это конечно не оправдание. =)
а что такого? не хочешь - не читай. захотели - ответили.
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Пагинация, определить номер страницы!

Сообщение mat.twg »

Loveorigami писал(а): 2017.02.26, 12:35 Задача 3 класса - в корзину вмещается 3 яблока. В какую корзину по счету будет положено 10 яблоко
Тут не всё так просто как мне показалось....

значит так:

Код: Выделить всё

[ 0=>1,
1=>1,
3=>1,
5=>1,
8=>1,
9=>0,
10=>1,
11=>2,
15=>1,
16=>1 ]
Как видим 10 элементов, Я беру элемент под номером 10, в какой он корзине?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Пагинация, определить номер страницы!

Сообщение zelenin »

mat.twg писал(а): 2017.02.26, 13:14
Loveorigami писал(а): 2017.02.26, 12:35 Задача 3 класса - в корзину вмещается 3 яблока. В какую корзину по счету будет положено 10 яблоко
Тут не всё так просто как мне показалось....

значит так:

Код: Выделить всё

[ 0=>1,
1=>1,
3=>1,
5=>1,
8=>1,
9=>0,
10=>1,
11=>2,
15=>1,
16=>1 ]
Как видим 10 элементов, Я беру элемент под номером 10, в какой он корзине?
выше написал же: в (10/3+1)
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Пагинация, определить номер страницы!

Сообщение Loveorigami »

10/3, если есть остаток : +1 = 4
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Пагинация, определить номер страницы!

Сообщение zelenin »

Loveorigami писал(а): 2017.02.26, 13:22 10/3, если есть остаток : +1 = 4
ceil(10/3)
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Пагинация, определить номер страницы!

Сообщение mat.twg »

zelenin писал(а): 2017.02.26, 13:23
Loveorigami писал(а): 2017.02.26, 13:22 10/3, если есть остаток : +1 = 4
ceil(10/3)
Как вы так читаете между строк? Элемент под номером 10 в 3 корзине! или на третьей странице.
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Пагинация, определить номер страницы!

Сообщение Loveorigami »

Прочитай свое условие
надо получить номер страницы 4, если элемент 10
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Пагинация, определить номер страницы!

Сообщение mat.twg »

Loveorigami писал(а): 2017.02.26, 13:29 Прочитай свое условие
надо получить номер страницы 4, если элемент 10
Да, всех запутал, прошу прощения! Имелся ввиду вариативный ряд, со значениями постоянно увеличивающимися на случайную величину. И тут разночтение вышло, элемент номер 10 это элемент с ключом 16 в приведённом мною примере.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Пагинация, определить номер страницы!

Сообщение zelenin »

mat.twg писал(а): 2017.02.26, 13:33
Loveorigami писал(а): 2017.02.26, 13:29 Прочитай свое условие
надо получить номер страницы 4, если элемент 10
Да, всех запутал, прошу прощения! Имелся ввиду вариативный ряд, со значениями постоянно увеличивающимися на случайную величину. И тут разночтение вышло, элемент номер 10 это элемент с ключом 16 в приведённом мною примере.
ну и как ты узнаешь страницу случайного элемента? никак. узнать страницу можно зная кол-во элементов на странице и индекс элемента. индексируй и считай по индексу.
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Пагинация, определить номер страницы!

Сообщение mat.twg »

zelenin писал(а): 2017.02.26, 13:36
mat.twg писал(а): 2017.02.26, 13:33
Loveorigami писал(а): 2017.02.26, 13:29 Прочитай свое условие
Да, всех запутал, прошу прощения! Имелся ввиду вариативный ряд, со значениями постоянно увеличивающимися на случайную величину. И тут разночтение вышло, элемент номер 10 это элемент с ключом 16 в приведённом мною примере.
ну и как ты узнаешь страницу случайного элемента? никак. узнать страницу можно зная кол-во элементов на странице и индекс элемента. индексируй и считай по индексу.
Вот и я думаю как... вернее как быстрее.
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Пагинация, определить номер страницы!

Сообщение mat.twg »

Ну короче пока так... жаль конечно, что в пагинаторе не заложено, а может и к лучшему... есть пара узких мест...

Код: Выделить всё

    $array_msg = (new \yii\db\Query())
        ->select(['`comment_anchor_id` AS `id`'])
        ->from('messages_test')
        ->where('`ticket`=:ticket', [':ticket' => $ticket])
        ->all();

    $query_count = count($array_msg);

    $key = array_search($comment_anchor_id, array_column($array_msg, 'id'))+1;

    $pages = ceil($query_count/10);

    $page = ceil($key/10);
Всем спасибо! Почти проснулся...
Ответить