Autor | Zpráva | ||
---|---|---|---|
L0K0 Profil |
#1 · Zasláno: 26. 8. 2013, 20:45:46
Dobrý večer, potřeboval bych menší radu ohledně výpisu dat z databáze.
Na obrázku: Vidíte jednoduchou tabulku se 3 sloupci. Je nějak možné vypisovat sloupec 'cesky' zadáním hodnoty ze sloupce 'id'? Například aby mi '$row['1']' při zavolání dal 'Jméno' či '$row['2']' opět 'Příjmení'? $result = $mysqli->query("DOTAZ který nevím"); $row = $result->fetch_array(); Děkuji předem za odpovědi. |
||
Tori Profil |
#2 · Zasláno: 26. 8. 2013, 20:54:17
L0K0:
Musíte si to přeskládat v PHP. Některé jiné DB vrstvy (PDO, dibi) mají na vracení párů klíč-hodnota už hotovou funkci. |
||
Sir Tom Profil |
#3 · Zasláno: 26. 8. 2013, 21:24:44
L0K0:
To je špatný návrh databáze. Pokud můžete, změňte ji. V opačném případě velmi riskujete, že jakmile se objeví požadavek na přepsání aplikace do ruštiny, španělštiny, francouzštiny, apod., tak budete muset vždy přidat nový sloupeček do tabulky. |
||
Jan Tvrdík Profil |
#4 · Zasláno: 26. 8. 2013, 21:32:44
Sir Tom:
„tak budete muset vždy přidat nový sloupeček do tabulky.“ Můžu se zeptat proč zrovna tohle považuješ za problém? Přidáváš jazyky každý druhý týden? Nehledě na to, že L0K0 má problémy pravděpodobně úplně s něčím jiným, než s návrhem databáze. |
||
L0K0 Profil |
#5 · Zasláno: 26. 8. 2013, 21:39:58
Sir Tom:
Dobrá tedy, napadla mě tato možnost: $result = $mysqli->query("SELECT * FROM mutace WHERE jazyk = '$lang'"); $row = $result->fetch_array(); Proměnná $lang se bude měnit dle potřeby u uživatelů, třeba. Co si o tom myslíte vy? Akorát jak jste zmínil, že by mohl být problém s přidáváním dalších jazyků. Tak dle mého názoru u tohoto zase přidávat sloupec na hodnotu je horší než řádek, nemyslíte? Avšak, vyřešilo by to můj problém, že bych výpis měl, ale kvůli přehlednosti jsem založil toto vlákno. |
||
Sir Tom Profil |
#6 · Zasláno: 26. 8. 2013, 21:40:40 · Upravil/a: Sir Tom
Jan Tvrdík:
V tomto konkrétním případě to není tak závažný problém. Avšak už se to velmi blíží k návrhu typu: id | product_name | color_red | color_blue | color_magenta | color_white | color_green | color_black | ... 1 | iPhone | 1 | 0 | 1 | 0 | 0 | 0 | ... 2 | iPad | 0 | 0 | 1 | 1 | 1 | 0 | ... A bylo záhodno na to upozornit. L0K0: No jasně, ale čeho se snažíte docílit? K čemu slouží tabulka mutace? |
||
L0K0 Profil |
#7 · Zasláno: 26. 8. 2013, 21:46:30
Sir Tom:
K vícejazyčnému webu. |
||
Alphard Profil |
#8 · Zasláno: 26. 8. 2013, 21:52:24
L0K0:
Zůstal bych u prvního návrhu, ten lze akceptovat. Ten druhý určitě ne. |
||
Sir Tom Profil |
#9 · Zasláno: 26. 8. 2013, 21:54:39
L0K0:
Na toto už napsal článek Jakub Vrána: http://php.vrana.cz/ulozeni-jazykovych-verzi.php http://php.vrana.cz/ulozeni-prekladu-do-samostatne-tabulky.php Popisuje tam možnost, jakou jste měl původně, nicméně nabízí i další alternativy. Záleží ale opravdu, co od webu očekáváte a jaké jsou požadavky. |
||
L0K0 Profil |
#10 · Zasláno: 26. 8. 2013, 22:07:03
Alphard:
Ale jak to vypsat, dle těch parametrů, které jsem uvedl? |
||
Alphard Profil |
#11 · Zasláno: 26. 8. 2013, 22:10:24
Já bych použil dibi a jednoduše
fetchAssoc('id') .
MySQLi to myslím neumí, takže přeskládat, jak psala už Tori. while ($row = ...) { $langs[$row->id] = $row; } |
||
L0K0 Profil |
#12 · Zasláno: 26. 8. 2013, 22:22:26
Dobrá podívám se nato, děkuji vám všem.
Myslím, že se může LOCK. |
||
Časová prodleva: 11 let
|
0