[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: проблема с циклом
Игорь
добрый день.
Возникла следующая проблема. Есть функция которая делает выборку из множества таблиц с помощью UNION ALL, проблема в том что когда будет сформирован последний sql запрос вместо UNION ALL должно выводится ")".
пример кода.

for($x=0; $x >= -2; $x--){
$date = date('Ym',strtotime(''.$x.' months'));
$datecomp = date('Y-m-d H:i:s',strtotime(''.$x.' months'));
if(($from <= $datecomp)&&($to >= $datecomp)){
$sql .= "
(SELECT *
FROM logs_{$date}
WHERE
created >= '{$from}' AND
created <= '{$to}'
";
$iter[] = $x;
$sum_iter = count($iter);
if($sum_iter <= 2 ) $sql .= " ) UNION ALL ";
else $sql .= " ) ";
}
}

я делаю так, но это работает только когда я выбираю поиск за 3 месяца.
Подскажите, как сделать чтобы можно было выбирать за разное количество месяцев и при этом запрос строился правильно?



Спустя 8 минут, 57 секунд (16.02.2009 - 14:10) sergeiss написал(а):
Концовка цикла вообще какая-то "хитрая" и непонятная. Зачем подсчитывать количество итераций, когда достаточно просто сравнить текущее значение $x с пороговой величиной???
И если ты поменяешь начало цикла, напишешь
PHP
for( $x=-2; $x<=0; $x++)

то тогда вообще достаточно просто будет написать условие в конце цикла, 2 строки вместо твоих 4-х:
PHP
if( $x == 0 ) $sql .= ' ) ';
else $sql .= ' ) UNION ALL ';


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

Спустя 14 минут, 56 секунд (16.02.2009 - 14:25) Guest написал(а):
большое спасибо. просто что то зациклило, именно на том решении и не как не мог отойти от него)
Быстрый ответ:

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