Autor Zpráva
L0K0
Profil
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
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
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
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
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
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
Sir Tom:
K vícejazyčnému webu.
Alphard
Profil
L0K0:
Zůstal bych u prvního návrhu, ten lze akceptovat. Ten druhý určitě ne.
Sir Tom
Profil
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
Alphard:
Ale jak to vypsat, dle těch parametrů, které jsem uvedl?
Alphard
Profil
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
Dobrá podívám se nato, děkuji vám všem.

Myslím, že se může LOCK.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: