Autor | Zpráva | ||
---|---|---|---|
Jcas Profil |
#1 · Zasláno: 3. 3. 2016, 15:06:17
Už píšu asi třetí metodu a stále se mi něco nelíbí. Prosím o radu, jak to udělat dobře.
|--id--|--skupina--|--zvire--|--plemeno--| (např. 1, Drůbež, vodní drůbež, kacha Ruánská) A nyní je úkolem zpracovat do selectů, aby si uživatel mohl vybrat. (co jsem už zkoušel) 1/ vybrat vše a pak nějak procházet a zpracovat pole. (zdá se mi to jako velký výběr dat a velké pole)(500-1000záznamů) 2/ Nějakým způsobem to rozložit na 2-3 mysql dotazy (to mi moc nejde) 3/ Napřed vybrat pouze `skupinu` a `zvire`, nechat vybrat z tohoto seznamu a pak znova volat server(odeslán form) a vybrat k tomu plemena(tj. dva selecty). Toto mi jde hezky, ale zase se mi to nelíbí. 4/ A nyní si pohrávám s myšlenkou pro každou skupinu vlastní select (to by se mi líbilo asi nejvíc), ale na jedno načítání stránky. A vůbec nevím jak na to. Je to asi zase otázka, jestli více nějakých sql dotazů. Poradíte prosím? |
||
Keeehi Profil |
#2 · Zasláno: 3. 3. 2016, 15:11:22
Jcas:
Tohle není vůbec o databázi. Tohle je o návrhu aplikace. Resp o UX. Na tuhle část vůbec nepotřebuješ počítač. Jde o to vymyslet takový způsob ovládání, který bude jednoduchý, intuitivní a hezký. Až tedy budeš vědět co chceš udělat můžeš se ptát jak to udělat, ale podle popisu v té fázi ještě nejsi. |
||
Jcas Profil |
#3 · Zasláno: 3. 3. 2016, 15:20:07
Dobře, takže jak to udělat, aby výsledný kód byl:
<span>'skupina'</span><select><optgroup label="zvire"><option>"plemeno"</option>.....</optgroup>...</select> - každá skupina bude mít svůj vlastní select - zvire se vloží do optgroup - plemeno bude položka seznamu Jeden sql dotaz, nebo víc(poddotazy)? Už v cyklu while(když se prochází řádky tabulky) nějak zajišťovat zobrazování s echo? Nebo vybrat data, narvat do pole a pak procházením pole zajistit zobrazení? |
||
Jcas Profil |
#4 · Zasláno: 3. 3. 2016, 19:36:52
Nějaký výsledek mám, ale připadá mi to prostě špatné. Jedny a ty samé záznamy procházím dvakrát.
1. Když je beru z DB. (Beru každý jeden řádek) while ($row = $result->fetch_assoc()) { $zvire[ $row['skupina'] ][ $row['zvire'] ][ $row['id_zvirete'] ] = $row['plemeno']; } foreach ($zvire as $skupina => $pole) { if ($i % COLS == 0) echo "<tr>"; echo '<td><strong>'.$skupina.': </strong><br>'. zobrazSelect($opt = array('name' => $skupina, 'id' => $skupina), $pole).'</td>'; if ($i % COLS == COLS - 1) echo "</tr>\n"; $i++; } Je to dvojité prochází řádků. Možná nějak třeba zneužít oop a už při výběru dat vytvořit objecty, které se potom jenom zobrazí. Momentálně mi to připadá jako když zásobovač napřed navozí plné kastle piva a spátky k autu jezdí s prázdným rudlem a až to má hotové, tak jezdí s prázdným rudlem pro prázdné kastle s prázdnýma láhvema. |
||
Keeehi Profil |
#5 · Zasláno: 3. 3. 2016, 21:41:15
Ano, jde to udělat na jeden průchod a jen s pamětí dvou řádků a ne celé tabulky, ale dokud to nebude omezovat rychlost nebo nebude stačit paměť tak bych to tak nechal.
Jinak jde o tento problém. Jen ve třech úrovních místo dvou. |
||
Jcas Profil |
#6 · Zasláno: 4. 3. 2016, 14:15:24
Děkuju
|
||
Časová prodleva: 9 let
|
0