NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Roman Kocián:27.9.2016 20:20

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.9.2016 20:20
Avatar
Roman Kocián:27.9.2016 20:28

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.9.2016 20:28
Avatar
Roman Kocián:5.10.2016 23:40

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

 
Nahoru Odpovědět
5.10.2016 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.