[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа с большими списками
RK152
Добрый день. Есть необходимость работать со списком подписчиков, списки могут достигать нескольких тысяч и десятков тысяч строк (реже, но могут). Естественно, такой объем вывести сразу в браузер, мягко говоря неразумно. Поэтому логично использовать постраничный вывод.
Загвоздка заключается в следующем, необходимо чтобы у пользователя была возможность выбрать всех в списке или убрать всех из списка, но не просто отметить всех, а еще потом погулять по списку и выкинуть или добавить кого-то по своему желанию. Хотелось бы найти наиболее простое решение этой задачи. Пока вижу только путь в лоб, писать id подписчиков в js-массив и отправлять на сервер, но массив может получиться совсем не маленький. Заранее спасибо за любую помощь.
Valick
RK152, устанавливай флаг all так можешь выбрать всех, используй диапазоны от и до, плюс к этому отдельные id
например устанавливаешь all + исключающий диапазон (156-979) + конкретные id из этого диапазона над которымы тоже надо провести операцию.

диапазоны как и конкретные id могут быть исключающие и включающие


_____________
Стимулятор ~yoomoney - 41001303250491
RK152
Valick, собственно идея была такой, но думал может есть еще какое-нибудь решение.
Bolik
посмотри https://github.com/paulopmx/Flexigrid . сам постоянно пользуюсь
sergeiss
RK152, гугли localStorage. Это то, что тебе требуется. Данные хранятся в браузере, их не надо никуда пересылать. Надо только организовать грамотную работу с этими данными.
Если совсем кратко, то ты работаешь с данными в браузере, добавляешь-удаляешь их из списков. Вне зависимости от того, сколько страниц у тебя было обработано. Даже более того, ты можешь организовать взаимосвязь между разными страницами в браузере, если юзер захочет одновременно работать с данными в разных страницах/вкладках. По окончании единоразово отправляешь весь список на сервер и там проводишь обработку, связанную с БД.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
AllesKlar
sergeiss
Цитата
localStorage

По мне так нековайно в браузер за один раз отправлять "несколько десятков тысяч строк"
Во-первых, время ожидания загрузки
Во-вторых, а браузер не подвиснит, если так жестко с localStorage?

Вот еще че нагуглил:
Цитата
«5 мегабайт» — сколько места для хранения выдается по умолчанию. Это значение на удивление одинаково во всех браузерах, хотя и сформулировано не более как предложение в спецификации HTML5. Надо понимать, что вы храните строки, а не данные в исходном формате. Если вы храните много целых чисел или чисел с плавающей запятой, разница в представлении может оказаться большой. Каждая цифра в числе с плавающей запятой хранится в виде символа, а не в обычном представлении для таких чисел.


Особенно вот это вообще фуй-фуй-фуй
Цитата
Надо понимать, что вы храните строки, а не данные в исходном формате.


_____________
[продано копирайтерам]
Valick
sergeiss, это дань моде?


_____________
Стимулятор ~yoomoney - 41001303250491
sergeiss
Цитата (AllesKlar @ 29.10.2015 - 16:47)
По мне так нековайно в браузер за один раз отправлять "несколько десятков тысяч строк"

Я че-то не понял.... ТС что пишет?
Цитата (RK152 @ 29.10.2015 - 08:58)
необходимо чтобы у пользователя была возможность выбрать всех в списке или убрать всех из списка, но не просто отметить всех, а еще потом погулять по списку и выкинуть или добавить кого-то по своему желанию

Я предлагаю хранить ВСЕ данные о выбранных записях в браузере. Страницы так и так подгружаются в браузер. И надо брать только те данные для записи в localStorage, что были помечены. То есть, как я понял, далеко не все из списка.
Либо именно все без исключения smile.gif Тогда это вообще займет мало места.

Вобщем, если разумно подойти, то как раз количество пересылаемой информации будет небольшим. Если, например, отсылать эти же данные аяксом, при каждом чихе, то общий сетевой трафик будет куда как больше.

Цитата (AllesKlar @ 29.10.2015 - 16:47)
Надо понимать, что вы храните строки, а не данные в исходном формате.

JSON.stringify/parse в руки и "вперед и с песней".
Цитата (Valick @ 29.10.2015 - 17:27)
sergeiss, это дань моде?

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


PS.
Цитата (AllesKlar @ 29.10.2015 - 16:47)
Во-вторых, а браузер не подвиснит, если так жестко с localStorage?

FireFox OS в мобиле легко обрабатывает 4 метра данных smile.gif Ну да, не мгновенно. Ну пару секунд, может быть.
Тут эти 4 метра - это очень крайний случай, просто тестировали работу "на пределе". Идея такая, что если размер записанных данных превышает допустимый, то тогда разбираем записанные данные (JSON.parse), удаляем ненужное, сохраняем всё заново (JSON.stringify). И я отвечаю - быстро это происходит. В максимуме там несколько тысяч записей, каждая запись немаленькая. А в норме их всего несколько штук, максимум несколько десятков. С этими количествами вообще мгновенно работает.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
AllesKlar
sergeiss
Не, ну когда мало, то да удобно.
Особенно, если одно окно открывает другое, это другое чет делает, потом закрывается, а с результатами его работы должно работать первое окно.

_____________
[продано копирайтерам]
Быстрый ответ:

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