Xwab
Форумыnavigate_nextПрограммирование на PHP

Как облегчить код?
Сообщения
FustCon

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

пишут что одинакого) IN как то по аккуртней будет) пусть будет IN)

Итак. Вариант 1 :

$arQueryUsers = array();

$qq = mysql_query("SELECT `id` FROM `".prefix."users` WHERE `cfrom`>`cto`;");

if(($all = mysql_num_rows($qq)) > 0)
{
    while($field = mysql_fetch_array($qq))
    {
        $arQueryUsers[] = $field['id'];
    }
}

if(sizeof($arQueryUsers) > 0)
   mysql_unbuffered_query("update `".prefix."url` set `activ`='0' where `activ` = '1' && `moder` = '0' and `id_user` IN (" . implode(', ', $arQueryUsers) .");");


$arQueryUsers = array();

$qq = mysql_query("SELECT * FROM `".prefix."users` WHERE `cfrom`<=`cto`");

if(($all = mysql_num_rows($qq)) > 0)
{
    while($field = mysql_fetch_array($qq))
    {
       $arQueryUsers[] = $field['id'];
    }
}
if(sizeof($arQueryUsers) > 0)
   mysql_unbuffered_query("update `".prefix."url` set `activ`='1' where `activ` = '0' && `moder` = '0' and `id_user` IN (" . implode(', ', $arQueryUsers) .");");

mysql_query("OPTIMIZE TABLE `".prefix."url`, `".prefix."users`;");

Вариант 2:

$arQueryUsers1 = $arQueryUsers2 = array();

$qq = mysql_query("SELECT `id`, `cfrom`, `cto`  FROM `".prefix."users`");

if(($all = mysql_num_rows($qq)) > 0) {
   while($field = mysql_fetch_array($qq))
    {
       if($field['cfrom'] > $field['cto']) $arQueryUsers1[] = $field['id'];
       else $arQueryUsers2[] = $field['id'];
    }
}

if(sizeof($arQueryUsers1) > 0)
   mysql_unbuffered_query("update `".prefix."url` set `activ`='0' where `activ` = '1' && `moder` = '0' and `id_user` IN (" . implode(', ', $arQueryUsers1) .");");

if(sizeof($arQueryUsers2) > 0)
   mysql_unbuffered_query("update `".prefix."url` set `activ`='1' where `activ` = '0' && `moder` = '0' and `id_user` IN (" . implode(', ', $arQueryUsers2) .");");

mysql_query("OPTIMIZE TABLE `".prefix."url`, `".prefix."users`;");

08 Янв 2012, 22:44
Ответить на тему