[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перемешать новости и сохранить результат
Skesh
День добрый, стала интересная задача, сделать выборку новостей с БД, перемешать ее, и чтобы этот результат сохранился на 10 мин, скажем с выборкой и перемешкой проблем нет, а вот как зафиксировать результат на 10 мин.?

Я пока додумался до чего-то такого:

1. В БД сохраняю текущее время
2. Если прошло 10 мин проверяю параметр ASC DESC для Id и date
3. Обновляю текущее время


/*---------- РАНЖИРОВАНИЕ --------*/
$tmp=mysql_fetch_assoc(mysql_query("SELECT * FROM `".$GLOBALS["db_prefix"]."main` WHERE `Id`='1'"));
if (round((strtotime(date("Y-m-d H:i:s"))-strtotime($tmp[ranging_date]))/144)>=10) {
if ($tmp[ranging]>=3) {$tmp[ranging]=1;} else {$tmp[ranging]++;}
sql_update (
$GLOBALS["db_prefix"]."main", # название таблици
array ( # данные
"ranging" =>$tmp[ranging],
"ranging_date" =>date("Y-m-d H:i:s")
),

array ( # условие для WHERE
"field"=>"Id",
"value"=>1
)
);

}

$ASCDESC_1="DESC";
$ASCDESC_2="DESC";

switch ($tmp[ranging]) {
case 1:
$ASCDESC_1="ASC";
$ASCDESC_2="ASC";
break;
case 2:
$ASCDESC_1="DESC";
$ASCDESC_2="ASC";
break;
case 3:
$ASCDESC_1="ASC";
$ASCDESC_2="DESC";
break;
}

if ($data[no_ranging]==1) {
$ASCDESC_1="DESC";
$ASCDESC_2="DESC";
}
unset($tmp);
/*---------- РАНЖИРОВАНИЕ --------*/

$q_2="
SELECT * FROM `"
.$GLOBALS["db_prefix"]."form`
WHERE `moderation`='Активная'
AND `pay_day`='"
.date("Y-m-d")."'
AND `activated`='1'

$AND
ORDER BY `date_add` $ASCDESC_1, `Id` $ASCDESC_2
LIMIT $data[limit_start], $data[limit_num]";


Но это не совсем то поскольку есть всего три результата, а нужно как то так:

 SELECT * from `table1` WHERE `Category` LIKE "%green%" ORDER BY RAND()


Чтобы совсем перемешивало )) и сохранило на 10 мин., есть идеи?



_____________
*пускает слюну, глядя на код* :)
Быстрый ответ:

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