| 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: 7 let
|
|||
0