Autor | Zpráva | ||
---|---|---|---|
jakubk0c Profil |
#1 · Zasláno: 20. 5. 2019, 19:20:31
Dobrý den, potřeboval bych pomoct s jedním dotazem.
Mám tabulku id \ name \ section_id \ image \ level 1 \ auto \ 0 \ ... \ 1 2 \ barva \ 0 \ ... \ 1 3 \ piti \ 0 \ ... \ 1 4 \ BMW \ 1 \ ... \ 2 5 \ FORD \ 1 \ ... \ 2 6 \ AUDI \ 1 \ ... \ 2 7 \ bílá \ 2 \ ... \ 2 8 \ černá \ 2 \ ... \ 2 9 \ pivo \ 3 \ ... \ 2 A potřeboval bych výstup auto [ BMW (id, image), FORD (id, image), AUDI (id, image), ], barva [ bílá (id, image), černá (id, image), ] piti [ pivo (id, image) ]; |
||
Keeehi Profil |
#2 · Zasláno: 20. 5. 2019, 22:33:14
jakubk0c:
Bude to hluboké jen takto? Tedy dvě úrovně, nebo to potřebuješ obecně na jakoukoli hloubku? |
||
jakubk0c Profil |
#3 · Zasláno: 20. 5. 2019, 23:07:49
Keeehi:
Jsou tam jen 2 úrovně. |
||
Keeehi Profil |
jakubk0c:
Viděl bych to nějak takto. <?php $data = [ ["id" => 1, "name" => "auto", "section_id" => 0, "image" => "...", "level" => 1], ["id" => 2, "name" => "barva", "section_id" => 0, "image" => "...", "level" => 1], ["id" => 3, "name" => "piti", "section_id" => 0, "image" => "...", "level" => 1], ["id" => 4, "name" => "BMW", "section_id" => 1, "image" => "...", "level" => 2], ["id" => 5, "name" => "FORD", "section_id" => 1, "image" => "...", "level" => 2], ["id" => 6, "name" => "AUDI", "section_id" => 1, "image" => "...", "level" => 2], ["id" => 7, "name" => "bílá", "section_id" => 2, "image" => "...", "level" => 2], ["id" => 8, "name" => "černá", "section_id" => 2, "image" => "...", "level" => 2], ["id" => 9, "name" => "pivo", "section_id" => 3, "image" => "...", "level" => 2] ]; // data mockup $items = []; foreach($data as $row) { if ($row["section_id"] === 0) { $items[$row["id"]] = ["name" => $row["name"], "values" => []]; } else { $items[$row["section_id"]]["values"][] = [$row["name"], $row["id"], $row["image"]]; } } $result = []; foreach($items as $item) { $result[$item["name"]] = $item["values"]; } print_r($result); Co je nutné, tak to je aby položky první úrovně šly před položkami úrovně druhé (v dotaze nezapomenout na ORDER BY section_id nebo ORDER BY level ). Místo toho data mockupu budeš mít data z databáze, takže místo prvního foreach($data as $row) { budeš mít while ($row = $result->fetch_assoc()) { ale na funkcionalitě to nic nemění.
|
||
jakubk0c Profil |
#5 · Zasláno: 21. 5. 2019, 11:46:39
Keeehi:
Super děkuji moc, musel jsem to trochu předělat, ale funguje to. Já čekal, že to pude nějakým jednoduchým příkazem ze SQL rovnou vytáhnout a že nebude potřeba řešit přes PHP. Dobrá zkušenost Díky moc |
||
Časová prodleva: 4 roky
|
0