Stránka 1 z 1

Sčítání článků podle kategorií

Napsal: sob 26. zář 2009, 11:05
od KapaCZ
Chtěl bych mít vedle výpisu kategorie počet článků které v dané kategori jsou. (např web http://www.freezy.cz to tak má) Sešít všechny články dokaážu a to pomocí

Kód: Vybrat vše

$count_blog = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM juw_clanky"));
echo $count_blog[0];
Problém ale nastává když má jít o kategorie. Jelikož ty se do stránky přidávájí pomocí proměnné:

Kód: Vybrat vše

 while($vysledek1 = mysql_fetch_array($sql1)){
  echo "<li";
   if(isset($_GET["kategorie"]) AND $_GET["kategorie"] == $vysledek1["id"]) {
    echo " class=\"current_page_item\"";
   }
  echo "><a href=\"./?kategorie=".$vysledek1["id"]."\">".$vysledek1["jmeno"]."&nbsp;[";
 
ZDE MÁ BÝT KOD NA SČÍTÁNÍ
      
  echo "]</a></li>";
  

 }
A proto nemám vůbec tušení jak je sčítat.

SQL:

Kód: Vybrat vše

--
-- Struktura tabulky `juw_clanky`
--

DROP TABLE IF EXISTS `juw_clanky`;
CREATE TABLE IF NOT EXISTS `juw_clanky` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nadpis` varchar(1000) COLLATE utf8_czech_ci NOT NULL,
  `text1` varchar(1000) COLLATE utf8_czech_ci NOT NULL,
  `text` varchar(4000) COLLATE utf8_czech_ci NOT NULL,
  `autor` varchar(1000) COLLATE utf8_czech_ci NOT NULL,
  `cas` varchar(1000) COLLATE utf8_czech_ci NOT NULL,
  `kategorie` int(9) NOT NULL,
  `publikovat` varchar(3) COLLATE utf8_czech_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=22 ;

--
-- Vypisuji data pro tabulku `juw_clanky`
--

INSERT INTO `juw_clanky` (`id`, `nadpis`, `text1`, `text`, `autor`, `cas`, `kategorie`, `publikovat`) VALUES
(13, 'aaaaaa', '<p>aaaaaa</p>', '<p>aaaaaa</p>', '1', '23/09/2009 08:11:58', 9, 'ano');
(18, 'bbbbbb', '<p>bbbbbb</p>', '<p>bbbbbb</p>', '1', '225/09/2009 12:24:26', 7, 'ano');
(22, 'cccccc', '<p>eeeeee</p>', '<p>oooooo</p>', '1', '26/09/2009 09:01:38', 8, 'ano');
Samozřejmě rád přijmu i jiné návrhy jaký kod na sčítání použít.

Re: Sčítání článků podle kategorií

Napsal: sob 26. zář 2009, 12:40
od OndraSter
SELECT COUNT(clanky.id) AS clanku, kat.nazev AS kategorie FROM juw_kategorie AS kat LEFT JOIN juw_clanky AS clanky ON kat.id=clanky.kategorie GROUP BY kat.id


Takhle, nebo nějak podobně by to mělo být.

Re: Sčítání článků podle kategorií

Napsal: sob 26. zář 2009, 13:29
od KapaCZ
z toho nejsem moudrej

Re: Sčítání článků podle kategorií

Napsal: sob 26. zář 2009, 13:31
od bubanek
To jsme dva :)

Re: Sčítání článků podle kategorií

Napsal: sob 26. zář 2009, 13:40
od arxeiss
3 :wink: Taky by se mi hodilo kdyby to Ondra vysvětlil :oops: Předem díky

Re: Sčítání článků podle kategorií

Napsal: sob 26. zář 2009, 13:47
od OndraSter
SQL dotaz který vybere:

název kategorie (kategorie) a počet článků v něm (clanku), pripadne si tam ještě přidej kat.id (id) pro vybrání aj ID té kategorie.

SQL dotaz jde tak, že vybere tabulku juw_kategorie, zároveň k tomu otevře pomocí LEFT JOIN tabulku juw_clanky a vybere z toho počet článků, pro které platí že kategorie=kat.id. Kdyby to byl výběr bez LEFT JOIN a jen podmínka v WHERE, tak to nevybere kategorie s 0 články.

Re: Sčítání článků podle kategorií

Napsal: sob 26. zář 2009, 13:53
od KapaCZ
bohužel mi to nefunguje. nic se nezobrazí.

Re: Sčítání článků podle kategorií

Napsal: sob 26. zář 2009, 14:43
od OndraSter
echo mysql_error(); nic?

Možná jsem se někde upsal, těžko říct, nemám přístup k DB.

Re: Sčítání článků podle kategorií

Napsal: sob 26. zář 2009, 14:50
od KapaCZ
Unknown column 'kat.nazev' in 'field list'