Autor | Zpráva | ||
---|---|---|---|
mcwraith Profil |
zdravím všechny potřeboval bych pomoct s filtrováním podle rubriky
Mám 2 tabulky - článek a rubrika článek má vše jako id_clanku,nazevclanku,ID_Rubrika a clanek .. rubrika má ID_Rubrika a nazevrubriky funkce kterou to chci vyvolat,jde o to že někde zadám číslo třeba 2 jako parametr a vypíší se mi jen články s rubrikou 2 ... to mi funguje pokud smažu propojení tabulek clanek.ID_Rubrika=rubrika.ID_Rubrika jenže pak nemůžu vypisovat nikde nazevrubriky , když to není spojeno. function filtrujSeznamClanku($ID_Rubrika) { if(isset($ID_Rubrika)){ $Dotaz="SELECT * FROM clanky, uzivatel WHERE clanky.ID_Uzivatel=uzivatel.ID_Uzivatel AND clanek.ID_Rubrika=rubrika.ID_Rubrika AND ID_Rubrika=$ID_Rubrika ORDER BY clanky.ID_Clanek DESC"; $res = mysql_query($Dotaz); $rows = array(); while ($rows[] = mysql_fetch_assoc($res)) {} return $rows; } } dostávám error : Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in .\Clanky.class.php on line 41 Array ( [0] => ) Děkuji za případnou pomoc. |
||
Tori Profil |
#2 · Zasláno: 5. 3. 2013, 22:16:47
Tabulku rubrika nemáte vyjmenovanou v seznamu tabulek, ale jen ve WHERE, takže dotaz selže. Kdybyste si zjistil popis chyby, dozvíte se totéž rychleji.
|
||
mcwraith Profil |
To bylo jen po několika marných pokusech zapomenuto .. opravil jsem to a vypsal si chybu,každopádně díky za odpověď.
SELECT * FROM clanky, rubrika, uzivatel WHERE clanky.ID_Uzivatel=uzivatel.ID_Uzivatel AND clanky.ID_Rubrika=rubrika.ID_Rubrika AND ID_Rubrika=1 ORDER BY clanky.ID_Clanek DESC Sloupec 'ID_Rubrika' v where clause nen-BĂ zcela jasnĂ˝ tak už jsem to vyřešil dotaz upraven na $Dotaz="SELECT * FROM clanky INNER JOIN rubrika USING (ID_Rubrika) INNER JOIN uzivatel USING (ID_Uzivatel) WHERE clanky.ID_Rubrika = $ID_Rubrika"; Děkuji za pomoc Tori :) |
||
Alphard Profil |
#4 · Zasláno: 5. 3. 2013, 22:46:58
Ty překladače chybových hlášek jsou dokonalé :-)
Za tím posledním AND není určena tabulka, ze které berete ID_Rubrika, asi tam má být clanek.ID_Rubrika . Použití join je samozřejmě možné, ale to neřeší váš problém přece. Vy jste vynechal podminku z původního dotazu. Když tam dopíšete ID_Rubrika=1 , chyba bude stejná.
|
||
mcwraith Profil |
#5 · Zasláno: 5. 3. 2013, 22:50:59
No nevím s tímhle dotazem mi to funguje, odzkoušel sem to přímo na webu a filtruje to podle toho jaké se za ID_Rubrika dosadí číslo,takže to musí být správně.
|
||
Alphard Profil |
#6 · Zasláno: 5. 3. 2013, 22:59:04
mcwraith:
Já to měl víc zdůraznit, v původním dotazu bylo ID_Rubrika=$ID_Rubrika clanky.ID_Rubrika = $ID_Rubrika Ať nepíši jen tak bezdůvodně nepíši, ošetřujete sql injection? Měl byste $ID_Rubrika explicitně přetypovat na číslo, viz phpfashion.com/escapovani-definitivni-prirucka.
|
||
mcwraith Profil |
#7 · Zasláno: 5. 3. 2013, 23:02:23
Aha mám ale takový pocit že už předtím jsem to zkoušel,možná tam byla chyba jinde předtím :) každopádně tohle bylo moje první použití USING tak jsem se aspoň něco naučil .... za předpokladu že vše stihnu tak se na ten SQL injection se podívám.
Děkuji za pomoc :) |
||
Časová prodleva: 11 let
|
0