Autor | Zpráva | ||
---|---|---|---|
disler Profil |
#1 · Zasláno: 3. 4. 2010, 03:24:44
Žádám o pomoc s následujícím problémem.
Podmínka mi vrátí hodnoty, které musím mít v cyklu jelikož neznám jejich počet: SELECT id FROM eshop_kategorie Vrátí to např.: 1,2,3 Všechny tyto hodnoty potřebuji načíst buď do proměnné a dosadit níže do in() nebo je tam nějakým jiným způsobem vepsat.: SELECT * FROM eshop_produkty WHERE kategorie in('1','2','3') Jde o to, že nemohu použít cyklus while, jeho výsledek nedokážu vměsnad do jedné $ ani jej nemůžu umístit do parametru in() rovnou. Měl by někdo nějaký nápad, jak pole hodnot načíst do jedné $ ? Nebo jakým způsobem se správně řeší výpis všech produktů z eshopu podkategorií, aby když jsem v hlavní kategorii jsem viděl všechny produkty z podkategorií? Hlavní kategorie - podkategorie 1 - podkategorie 2 - podkategorie 3 Tabulka produktů má strukturu id, kategorie (tzn. kam patří), nazev Díky za pomoc. |
||
joe Profil |
#2 · Zasláno: 3. 4. 2010, 03:29:26
SELECT * FROM eshop_produkty WHERE kategorie IN (SELECT id FROM eshop_kategorie) |
||
disler Profil |
#3 · Zasláno: 3. 4. 2010, 20:08:57
díky, toto řešení sice funguje ale neřeší cyklus, stále vypisuje pouze 1 údaj z mysql, nefunguje to jako cyklus...
Pomohl by někdo? Díky. |
||
saphire Profil |
#4 · Zasláno: 4. 4. 2010, 00:13:13 · Upravil/a: saphire
disler:
$podminka = array(); while($idcko = mysql_fetch_array($vysledek_dotazu)) { $podminka[] = $idcko; } $dotaz_podminka = vytvor_seznam($podminka); $dotaz = "SELECT * FROM eshop_produkty WHERE kategorie IN (".$dotaz_podminka.");"); /** *vytvori seznam cisel oddeleny carkami z pole *@author Stanley Saphire */ function vytvor_seznam($cislicka){ $seznam = ''; $t=count($array)-1; foreach($cislocka as $cislicko){ $seznam.= "'".$cislocko."'".(($t)?",":" "); $t--; } return $seznam; } |
||
nightfish Profil |
#5 · Zasláno: 4. 4. 2010, 09:18:17
pokud předpokládáme, že id kategorie jsou celá čísla, pak lze kód z [#4] zkrátit a opravit na
$podminka = array(); while(list($idcko) = mysql_fetch_array($vysledek_dotazu)) { $podminka[] = $idcko; } if (count($podminka) == 0) $podminka[] = 'NULL'; $dotaz = "SELECT * FROM eshop_produkty WHERE kategorie IN (".implode(', ', $dotaz_podminka).");"); |
||
Časová prodleva: 14 let
|
0