[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как упростить этот код?
panacea
Ребят, как этот код можно упростить? Алгоритм вроде понятен. Есть многомерный массив $Factor[a][b] из которого надо "сконструлить" запросик. Вот.
PHP
foreach ($Factor as $gp_coef => $indx) {
    foreach (
$indx as $id_coef => $v) {

    
$values .= <<<HTML
('', {$_POST['id_comp']}{$id_coef}{$gp_coef}{$_POST['year']}{$v})
HTML;
if (
$id_coef is last) {
    
$values .= ";";
}
else {
    
$values .= ",";
}
    
$db->query("INSERT INTO `tab_factors` (`id`, `id_comp`, `id_coef`, `gp_coef`, `year`, `value`) VALUES {$values}");
    }




Спустя 6 часов, 13 минут, 56 секунд (16.01.2009 - 20:36) Sylex написал(а):
panacea
формируй один запрос, а не куча в цикле

Спустя 11 минут, 10 секунд (16.01.2009 - 20:47) kirik написал(а):
Цитата (Sylex @ 16.01.2009 - 12:36)
формируй один запрос, а не куча в цикле

он/а наверное спрашивал/а про эту строчку - if ($id_coef is last), типа как определить что последний.

panacea, это имелось ввиду?
PHP
foreach ($Factor as $gp_coef => $indx)
{
    foreach (
$indx as $id_coef => $v)
    {
        
$values[] = "('', {$_POST['id_comp']}, {$id_coef}, {$gp_coef}, {$_POST['year']}, {$v})";
    }
}
$db->query('INSERT INTO `tab_factors` (`id`, `id_comp`, `id_coef`, `gp_coef`, `year`, `value`) VALUES '.implode(', '$values).';');

Спустя 46 минут, 15 секунд (16.01.2009 - 21:33) panacea написал(а):
Цитата
panacea
формируй один запрос, а не куча в цикле

Извините, не там скобочки поставил. cool.gif Такое бывает.
Цитата
он/а наверное спрашивал/а про эту строчку - if ($id_coef is last), типа как определить что последний.

panacea, это имелось ввиду?

Не совсем. Но за implode спасибо. Я хотел бы еще упростить, если возможно. Можно другой алгоритм посмотреть. Просто ничего другого не придумал как отсортировать данные, создав многомерные массивы. А потом засунуть данные в БД. Вот пример.
PHP
if ($fk['BalansPassPro'] == 0) {$FactorPro[$gp][]=$fk['Error'];}
        else {
$FactorPro[$gp][]=round($fk['NettoPro']/$fk['BalansPassPro'], 2);}
        if (
$fk['BalansPassEnd'] == 0) {$FactorEnd[$gp][]=$fk['Error'];}
        else {
$FactorEnd[$gp][]=round($fk['NettoEnd']/$fk['BalansPassEnd'], 2);}
Быстрый ответ:

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