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
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
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
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
mcwraith:
Já to měl víc zdůraznit, v původním dotazu bylo
ID_Rubrika=$ID_Rubrika
v tom novém je
clanky.ID_Rubrika = $ID_Rubrika
což jsem v Alphard [#4] uvedl jako řešení (psal to dříve, než jste poslal svůj dodatek). Chtěl jen upřesnit, že jste problém nevyřešil použitím USING, ale právě upřesněním tabulky u sloupce.

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
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 :)

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: