Сейчас у меня постр. навигация просто тупо режет какую-то часть (LIMIT) , но проблема в том, что если ставить на запрос сортировку по случайности, то перелистывая страницы - мы часто будет натыкаться на один и тот же контент на разных страницах.
Не могу сообразить как так сделать, чтобы майскуэл на каждой странице выбирал только контент, которого не было при предыдущей выборке(на других страницах).
у меня есть какая-то идея, но из-за нехватки опыта, я не знаю насколько она осуществима.
Перед выборкой создать "временную таблицу" на основе текущей, "размешать" там контент, и выборку делать уже из этой "таблицы". Что-то в этом духе можно сделать?
Спустя 3 минуты, 43 секунды (16.11.2010 - 16:34) linker написал(а):
А нафига рандомная сортировка нужна?
Спустя 50 секунд (16.11.2010 - 16:35) glock18 написал(а):
Цитата |
Не могу сообразить как так сделать, чтобы майскуэл на каждой странице выбирал только контент, которого не было при предыдущей выборке(на других страницах). |
задача вообще рекурсивна получается. сейчас надо сделать, чтобы не показывало те, которые были в предыдущей выборки, а после нужно будет, чтобы не показывало результаты из предыдущих n выборок. в любом случае, нужно сначала понять, чего хочется, более подробно.
ПС: факт совмещения сортировки рандомом и постраничной навигации вижу впервые. где это вообще надо?
Спустя 2 минуты, 58 секунд (16.11.2010 - 16:38) Guest написал(а):
linker
странноватый вопрос)
как мне кажется, ты это спрашиваешь, из-за проблем с производительностью?
ну как в первый раз?))
Никогда не видел на сайтах сортировку в случайном порядке?)) добавь сюда постраничную навигацию, вот и получается проблема.
странноватый вопрос)
как мне кажется, ты это спрашиваешь, из-за проблем с производительностью?
glock18
ну как в первый раз?))
Никогда не видел на сайтах сортировку в случайном порядке?)) добавь сюда постраничную навигацию, вот и получается проблема.
Спустя 5 минут, 57 секунд (16.11.2010 - 16:44) linker написал(а):
Рандомная сортировка с постраничным выводом действительно случай уникальный. Код запроса в студию.
Спустя 2 минуты, 25 секунд (16.11.2010 - 16:46) Guest написал(а):
linker
но может подумаете над этим?
я не очень хороший знаток mysql, но что-то мне подсказывает, там должно быть что-то типа "образов таблиц" что ли.
На сайте нужна возможность упорядочить контент в случайном порядке.
но может подумаете над этим?
я не очень хороший знаток mysql, но что-то мне подсказывает, там должно быть что-то типа "образов таблиц" что ли.
На сайте нужна возможность упорядочить контент в случайном порядке.
Спустя 2 минуты, 15 секунд (16.11.2010 - 16:49) linker написал(а):
Ну у тебя уже есть запрос, так дай сюда, а мы посмотрим как это у тебя случайная сортировка изображена. Если уж так хочется напрячь мускул бесполезной работой то ORDER BY RAND(), а результаты кэшируй.
Спустя 4 минуты, 5 секунд (16.11.2010 - 16:53) Guest написал(а):
$navigate = new postNavigation();
$length=$navigate -> get_length ($count, 10);
$contentQuery=mysql_query("SELECT * FROM content ORDER BY RAND() LIMIT $length");
сейчас я тупо написал RAND() , но я читал, что при большом объеме таблицы она убивает производительность, и смотрел как люди с этим борятся, но сейчас вопрос не в этом.
Спустя 3 минуты, 57 секунд (16.11.2010 - 16:57) linker написал(а):
Повторюсь, кэшируй результаты и бери из кэша при переходе по страницам. Но это не просто убивает, просто уничтожает ядерным взрывом, нафига такие грабли непонятно.
Спустя 20 минут, 53 секунды (16.11.2010 - 17:18) Guest написал(а):
linker
ладно, будем смотреть, спасибо.
ладно, будем смотреть, спасибо.
Спустя 7 минут, 2 секунды (16.11.2010 - 17:25) Guest написал(а):
а что раньше обрабатывается ORDER или LIMIT ?
Спустя 5 часов, 6 минут, 2 секунды (16.11.2010 - 22:31) linker написал(а):
LIMIT всегда отрабатывает в конце. Даю подсказку.
1. Есть поле id и значение страницы передается ее номером
1. Есть поле id и значение страницы передается ее номером
$Page = isset($_GET['page']) ? abs($_GET['page']) : 1;Это только намек.
$PerPage = 20;
if (isset($_SESSION['CacheIds']))
{
$Offset = ($Page - 1) * $PerPage;
$RangeIds = array_slice($_SESSION['CacheIds'], $Offset, $PerPage);
$Result = mysql_query("SELECT * FROM `table` WHERE `id` IN (" . join(',', $RangeIds) . ")");
}
else
{
$Result = mysql_query("SELECT * FROM `table` ORDER BY RAND()");
$CacheIds = array();
while($Row = mysql_fetch_assoc($Result))
$CacheIds[] = $Row['id'];
$_SESSION['CacheIds'] = $CacheIds;
}
Спустя 21 минута, 21 секунда (16.11.2010 - 22:52) twin написал(а):
Я вот тоже пытаюсь осмыслить - не выходит.
Случайность такого плана предполагает возможность получения на следующей странице того же практически контента?
Тогда для чего постраничка как таковая... Можно сделать фейк и просто выдавать по 10 случайных записей к примеру.
Если случайно нужно расположить результат постраничного вывода (перемешать 10 полученных записей), то это стоит сделать на стороне PHP и не мучаться с запросами.
Случайность такого плана предполагает возможность получения на следующей странице того же практически контента?
Тогда для чего постраничка как таковая... Можно сделать фейк и просто выдавать по 10 случайных записей к примеру.
Если случайно нужно расположить результат постраничного вывода (перемешать 10 полученных записей), то это стоит сделать на стороне PHP и не мучаться с запросами.
Спустя 53 минуты, 32 секунды (16.11.2010 - 23:46) Guest написал(а):
linker
twin
да ребят, спасибо большое.
все варианты рассмотрел, которые вы сказали. И решил, действительно вывести 10 случайных, без постраничной навигации, просто внизу кнопочка ПОКАЗАТЬ ЕЩЕ.(тупо обновляем страничку с рандомом и все)
twin
да ребят, спасибо большое.
все варианты рассмотрел, которые вы сказали. И решил, действительно вывести 10 случайных, без постраничной навигации, просто внизу кнопочка ПОКАЗАТЬ ЕЩЕ.(тупо обновляем страничку с рандомом и все)
Спустя 16 минут, 57 секунд (17.11.2010 - 00:03) linker написал(а):
В том-то и проблема, что с рандомом в "ПОКАЗАТЬ ЕЩЕ" могут появится результаты из предыдущего запроса.
Спустя 35 минут, 2 секунды (17.11.2010 - 00:38) Guest написал(а):
linker
знаю, но в данном случаи это уже не катастрофично, так как подобное поведение с пост-навигацией было бы глупостью, а так вроде как ничего страшного и нет.
Но если вдруг понадобится полная неповторимость - то я усек и твою мысль и мысль Твина.
знаю, но в данном случаи это уже не катастрофично, так как подобное поведение с пост-навигацией было бы глупостью, а так вроде как ничего страшного и нет.
Но если вдруг понадобится полная неповторимость - то я усек и твою мысль и мысль Твина.