Autor | Zpráva | ||
---|---|---|---|
Matess Profil * |
#1 · Zasláno: 8. 7. 2008, 11:30:08
Zdravím.
Potřeboval bych vypsat data ze dvou tabulek, ale to tak, že se vypíše kategorie z první tabulky a veškeré fota v té kategorii z druhé tabulky. Mám tyto tabulky: katagorie ... auta ... byty ... osoby ... mesta ... zvirata foto ... nazev_fotky ... kategorie Jak to mám nejlépe udělat aby mi to vypsalo vždy všechny fotky v tab. auta, poté všechny fotky v tab. byty, atd. a to nejlépe na jeden while. Prozatím to dělám takto, ale příjde mi to strašně prasácké. $dotaz = mysql_query("SELECT * FROM foto WHERE kategorie='auta'"); while ($vypis = mysql_fetch_array($dotaz)) { echo $vypis["nazev_fotky"]; } //... poté další kategorie $dotaz = mysql_query("SELECT * FROM foto WHERE kategorie='byty'"); while ($vypis = mysql_fetch_array($dotaz)) { echo $vypis["nazev_fotky"]; } Pokud mám 20 kategorií, tak musím pokládat 20 dotazů na DB a to mi vadí. Jak to lze jinak udělat? Děkuji za odpověďi. |
||
Anonymní Profil * |
#2 · Zasláno: 8. 7. 2008, 11:35:27
tak pokládej jen jeden dotaz, který bude mít WHERE kategorie=$kategorie a funkci pak budeš volat např.
vypis_kategorie('auta') vypis_kategorie('byty') |
||
joe Profil |
#3 · Zasláno: 8. 7. 2008, 11:37:01
SELECT * FROM foto ORDER BY kategorie
Pak už si v cyklu při vypisování pohlídáš kategorii. Proč používáš mysql_fetch_array? |
||
Anonymní Profil * |
#4 · Zasláno: 8. 7. 2008, 11:37:30
pro upřesnění
function vypis_kategorie($kategorie) { ... $dotaz="SELECT * FROM foto WHERE kategorie='$kategorie'"; ... } //teď zavoláme fci. chceme vypsat auta vypis_kategorie('auta'); |
||
joe Profil |
#5 · Zasláno: 8. 7. 2008, 11:40:22
Anonymní
Tím si ai nepomůže, protože pokud bude chtít vybrat fotky z 20ti kategorií, musí tuto funkci volat 20x. To znamená 20 dotaz na db. Navíc myslím, že pro tohle je funkce celkem zbytečná :) |
||
vojtah Profil * |
#6 · Zasláno: 8. 7. 2008, 12:58:53
použít spojení, na což se v SQL používá funkce JOIN. tvůj případ by se dal řešit možná takto:
SELECT foto.* FROM foto JOIN kategorie ON (kategorie.nazev=foto.kategorie) ORDER BY kategorie.nazev; Sloupce si samozřejmě uprav podle své db. |
||
Matess Profil * |
#7 · Zasláno: 8. 7. 2008, 16:04:53
Anonymní
No to by šlo, ale mě jde o to aby nebylo potřeba položit 20dotazu, ale aby stačil pouze jeden nebo dva. vojtah Díky, zkusím to. joe Proč používáš mysql_fetch_array? A proč ne? Co doporučuješ používat? A proč? |
||
joe Profil |
#8 · Zasláno: 8. 7. 2008, 16:35:14
mysql_fetch_assoc, není důvod používat mysql_fetch_array. Asocitativní pole ti určitě stačit bude.
|
||
Matess Profil * |
#9 · Zasláno: 8. 7. 2008, 16:46:53
mysql_fetch_assoc, není důvod používat mysql_fetch_array. Asocitativní pole ti určitě stačit bude.
Já se vtom moc nevyznám. Používám na všechno mysql_fetch_array, protože se mi snim nejlépe pracuje. O jeho ne/vyhodách jsem nikde nečetl a tak ho používám pořád. |
||
Časová prodleva: 16 let
|
0