avenger_msoft
Новичок
Вопрос по while
А на php возможно ли следующее:
-~{}~ 25.08.05 18:35:
Зачем это нужно:
есть отчет:
$addsql="";
foreach ($array_actions as $name1=>$value1) {
$sql_array_actions[$name1] = "L.\"ACTION\"='$name1'";
$stats[$name]['stats'][$i]['actionname']=$value1;
$stats[$name]['stats'][$i]['substats']=$base->GetArray("
SELECT
CASE L.SUBACTION
WHEN 'add' THEN 'Добавлено'
WHEN 'edit' THEN 'Изменено'
WHEN 'del' THEN 'Удалено'
END AS SUBACTIONNAME,
COUNT(*)
FROM LOGS L, USERS U
WHERE
L.USERFK=U.USERID AND U.GROUPCODE=".$dirdep[$name]['groupcode']." AND
(L.\"ACTION\"='$name1') AND
(L.SUBACTION='add' OR L.SUBACTION='edit' OR L.SUBACTION='del') AND $addsql
(L.DOIT=1 OR L.FLAGS LIKE '\$doit=1%') AND
($filter_datestart<=CREATED AND CREATED<=$filter_dateend)
GROUP BY
L.SUBACTION
ORDER BY 1
") or Halt($base->ErrorMsg());
$i++;
} // end foreach ($array_actions as $name1=>$value1)
хочу построить более детальный, т.е если $detail==1, то
foreach ($users as $name=>$value) {
$addsql="AND U.ID=$users[$name]['id']";
foreach ($array_actions as $name1=>$value1) {
$sql_array_actions[$name1] = "L.\"ACTION\"='$name1'";
$stats[$name]['stats'][$i]['actionname']=$value1;
$stats[$name]['stats'][$i]['substats']=$base->GetArray("
SELECT
CASE L.SUBACTION
WHEN 'add' THEN 'Добавлено'
WHEN 'edit' THEN 'Изменено'
WHEN 'del' THEN 'Удалено'
END AS SUBACTIONNAME,
COUNT(*)
FROM LOGS L, USERS U
WHERE
L.USERFK=U.USERID AND U.GROUPCODE=".$dirdep[$name]['groupcode']." AND
(L.\"ACTION\"='$name1') AND
(L.SUBACTION='add' OR L.SUBACTION='edit' OR L.SUBACTION='del') AND $addsql (L.DOIT=1 OR L.FLAGS LIKE '\$doit=1%') AND
($filter_datestart<=CREATED AND CREATED<=$filter_dateend)
GROUP BY
L.SUBACTION
ORDER BY 1
") or Halt($base->ErrorMsg());
$i++;
} // end foreach ($array_actions as $name1=>$value1)
}
Так вот если $details то все будет работать нопмально, а
если $details=0, то код внутри
foreach ($users as $name=>$value) {
}
повторится N раз.
Для этого и нужен такой цикл. Вопрос №1.
А на php возможно ли следующее:
PHP:
if ($details==1):
while ($???==$???):
endif;
if ($details==1):
endwhile;
endif;
Зачем это нужно:
есть отчет:
$addsql="";
foreach ($array_actions as $name1=>$value1) {
$sql_array_actions[$name1] = "L.\"ACTION\"='$name1'";
$stats[$name]['stats'][$i]['actionname']=$value1;
$stats[$name]['stats'][$i]['substats']=$base->GetArray("
SELECT
CASE L.SUBACTION
WHEN 'add' THEN 'Добавлено'
WHEN 'edit' THEN 'Изменено'
WHEN 'del' THEN 'Удалено'
END AS SUBACTIONNAME,
COUNT(*)
FROM LOGS L, USERS U
WHERE
L.USERFK=U.USERID AND U.GROUPCODE=".$dirdep[$name]['groupcode']." AND
(L.\"ACTION\"='$name1') AND
(L.SUBACTION='add' OR L.SUBACTION='edit' OR L.SUBACTION='del') AND $addsql
(L.DOIT=1 OR L.FLAGS LIKE '\$doit=1%') AND
($filter_datestart<=CREATED AND CREATED<=$filter_dateend)
GROUP BY
L.SUBACTION
ORDER BY 1
") or Halt($base->ErrorMsg());
$i++;
} // end foreach ($array_actions as $name1=>$value1)
хочу построить более детальный, т.е если $detail==1, то
foreach ($users as $name=>$value) {
$addsql="AND U.ID=$users[$name]['id']";
foreach ($array_actions as $name1=>$value1) {
$sql_array_actions[$name1] = "L.\"ACTION\"='$name1'";
$stats[$name]['stats'][$i]['actionname']=$value1;
$stats[$name]['stats'][$i]['substats']=$base->GetArray("
SELECT
CASE L.SUBACTION
WHEN 'add' THEN 'Добавлено'
WHEN 'edit' THEN 'Изменено'
WHEN 'del' THEN 'Удалено'
END AS SUBACTIONNAME,
COUNT(*)
FROM LOGS L, USERS U
WHERE
L.USERFK=U.USERID AND U.GROUPCODE=".$dirdep[$name]['groupcode']." AND
(L.\"ACTION\"='$name1') AND
(L.SUBACTION='add' OR L.SUBACTION='edit' OR L.SUBACTION='del') AND $addsql (L.DOIT=1 OR L.FLAGS LIKE '\$doit=1%') AND
($filter_datestart<=CREATED AND CREATED<=$filter_dateend)
GROUP BY
L.SUBACTION
ORDER BY 1
") or Halt($base->ErrorMsg());
$i++;
} // end foreach ($array_actions as $name1=>$value1)
}
Так вот если $details то все будет работать нопмально, а
если $details=0, то код внутри
foreach ($users as $name=>$value) {
}
повторится N раз.
Для этого и нужен такой цикл. Вопрос №1.