Autor Zpráva
Slark
Profil *
Hezký den,

potřeboval bych prosím o pomoc s vyřešením následující situace. Mám select tabulky s produkty kde se mi vyberou všechny produkty které potřebuji ale zároveň potřebuji tabulku spojit s jinou tabulkou kde jsou jazykové mutace.

Celé by to mělo fungovat takto:

$select = Db::fetchAll("select * from products left join products_langs on products_langs.product_id = products.id);

Píšu dotaz zjednodušeně protože bude na to co potřebuji dostačující. Logicky mi tento dotaz hezky vrátí všechny produkty a i všechny jazykové mutace. Jenže když si teď dám pole do foreach:

<?php foreach($select as $item): ?>
Jak má vypadat kód když potřebuji vypsat všechny mutace?
<?=$item["name"]["cz"]?> - nefunguje, což je mi jasné. Ale přece by to mělo nějak jít udělat aniž bych musel používat další foreach který se dotáže na mutace. Chci dosáhnout toho abych měl pouze jeden foreach.

<?php endforeach; ?>



Samozřejmě děkuji všem za případnou pomoc (místo ukázat náhled jsem to předčasně poslal :-))
tiso
Profil
v $item budeš mať stĺpce z oboch tabuliek, čiže $item['nazov_stlpca_z_prvej'] i $item['nazov_stlpca_z_druhej'], druhý foreach nebude potrebný. Druhá jazyková verzia bude v ďalšom výsledku.
Slark
Profil *
Dobře, ale produkt je jeden záznam v DB kdežto jazyky jsou třeba i tři záznamy. Potřeboval bych získat takový výstup:

Obrázek produkt (tabulka products)
Název CZ (tabulka products_langs)
Název EN (tabulka products_langs)
Název DE (tabulka products_langs)
Sazba DPH (tabulka products)

na to mi tento foreach nestačí.
Kajman
Profil
Buď si budete kontrolovat, zda se id produktu změnilo (jiný produkt) nebo nezměnilo (další jazyk) - nebo obdobně přeskládáte získané pole. Také je možnost, že uděláte dva dotazy - zapamatujete si id všech produktů na stránkce a ke všem získáte jedním dotazem jejich jazyky.

Ukázka obojeho je na
http://php.vrana.cz/srovnani-dotazu-do-zavislych-tabulek.php
Slark
Profil *
Kajman:
Mockrát děkuji za odkaz, přesně toto jsem potřeboval.

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:

0