Diskuze: PDO InsertAll přes více sloupců

PHP PHP PDO InsertAll přes více sloupců American English version English version

Avatar
Roman Kocián:

Ahoj, řeším malý problém s vložením vícero řádků naráz do tabulky přes PDO. Script na vložení mám totožný jako z "Kompletní e-shop v PHP" zde na itnetworku.

Databázový wrapper obsahuje metodu insertAll:

public static function insertAll($table, $parameters = array())
        {
                $params = array();
                $query = rtrim("INSERT INTO `$table` (`".
                        implode('`, `', array_keys($parameters[0]))
                        ."`) VALUES ".str_repeat('('.str_repeat('?,', sizeof($parameters[0])-1)."?), ", sizeof($parameters)), ', ');
                foreach ($parameters as $rows)
                {
                        $params = array_merge($params, array_values($rows));
                }
                return self::query($query, $params);
        }

Dále mám Správce kategorie:

public function updateNavigationSort($id, $items)
{
        Db::query('DELETE FROM navigation_sort WHERE navigation_id = ?', array($id));
        $rows = array();
        foreach ($items as $itemt)
        {
                $rows[] = array(
                        'navigation_id' => $id,
                        'sort' => $item,
                );
        }
        Db::insertAll('navigation_sort', $rows);
}

Pak mám metodu v kontroleru pro sběr dat z pohledu a předání modelu:

if (isset($_POST['navigation_sort']))
{
        $keys = array('category_id', 'sort');
        $sort = array_intersect_key($_POST, array_flip($keys));
        $categoryManager->updateNavigationSort($sort);
}

A pohledu klasicky:

<input type="hidden" name="category_id" value="<?= $category['category_id'] ?>">
<input type="hidden" name="sort" value="<?= $category['sort'] ?>">

Jedná se o správu hlavního menu, kde si správce zvolí pořadí setřídění položek v menu a potřebuji vše najednou vložit do tabulky.

Pokud by někdo věděl, kde pohnout s ledy, byl bych velice vděčný.

I tak děkuji za čas a možnost vložit zde tento post :)

 
Odpovědět 27. září 20:20
Avatar
Roman Kocián:

PS: Problém mezi kódem zde na itnetworku a tím co potřebuji já je v tom, že kód na itnetworku má v tabulce 3 sloupce:
1: auto_increment
2: article_id
3: category
Respektive model přiřazuje jednomu article_id více hodnot "category" - jeden článek vložen do více kategorií.

Já mám také 3 sloupce:
1: auto_increment
2: navigation_id
3: sort

Potřebuji ale menit jak navigation_id, což je číslo kategorie, tak sort což je číslo pořadí. Nikdy ale nebude mít jedna "navigation_id" více "sort", tedy jedna položka v menu nebude mít více možností pořadí.

Snad jsem to vysvětlil pochopitelně..

 
Nahoru Odpovědět 27. září 20:28
Avatar
Roman Kocián:

Kdo by věděl jak daný problém vyřešit, jsem ochoten jej peněžitě odměnit :)

 
Nahoru Odpovědět 5. října 23:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.