[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Количество статей в категориях
MrBrown
Здравствуйте!
Прошу, подскажите, как после наименования категории показать количество статей в ней, применительно к моему случаю:
Таблица категорий cats: id | cat
Таблица статей data: id | id_cat | text
Мой запрос категорий в меню (он работает правильно):
$result3 = mysql_query("SELECT DISTINCT `cats`.id, `cats`.id_part, `cats`.cat FROM `cats` JOIN `data` ON `cats`.id = `data`.id_cat WHERE `cats`.id_part = '{$n}' GROUP BY `cats`.id ");

Мой вывод категорий:
while($myrow3 = mysql_fetch_assoc($result3))
{
echo '<a href=\'view_cats.php?id='.$myrow3['id'].'\'>'.$myrow3['cat'].'-'.$count.'</a><br>';
}

Помогите кодом, как изменить запрос и получить переменную $count
Спасибо.



Спустя 27 минут, 59 секунд (28.06.2012 - 11:29) Arh написал(а):
Попробуй, может так заработает =)

$result3 = mysql_query("SELECT DISTINCT COUNT(id) `cats`.id, `cats`.id_part, `cats`.cat FROM `cats` JOIN `data` ON `cats`.id = `data`.id_cat WHERE `cats`.id_part = '{$n}' GROUP BY `cats`.id ");


while($myrow3 = mysql_fetch_assoc($result3))
{
echo '<a href=\'view_cats.php?id='.$myrow3['id'].'\'>'.$myrow3['cat'].'-'.$count.'</a><br>';
echo $myrow3['COUNT(id)'];
}

Спустя 25 минут, 50 секунд (28.06.2012 - 11:55) MrBrown написал(а):
Arh
Увы, не работает, ругается.

Спустя 30 минут, 55 секунд (28.06.2012 - 12:26) Shkiper написал(а):
MrBrown пробуй так:


while($myrow3 = mysql_fetch_assoc($result3))
{
echo '<a href=\'view_cats.php?id='.$myrow3['id'].'\'>'.$myrow3['cat'].'-'.$count.'</a><br>';

$count = mysql_num_rows($myrow3);
echo $count;
}


Спустя 28 минут, 37 секунд (28.06.2012 - 12:54) MrBrown написал(а):
Shkiper
Я так уже делал, это один из первых вариантов. Не работает:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:line 20

Спустя 17 минут, 35 секунд (28.06.2012 - 13:12) GET написал(а):
$result3 = mysql_query("SELECT COUNT (DISTINCT `cats`.id) FROM `cats` JOIN `data` ON `cats`.id = `data`.id_cat AND `cats`.id_part = '{$n}' GROUP BY `cats`.id ");
?

Спустя 12 минут, 8 секунд (28.06.2012 - 13:24) MrBrown написал(а):
A.B.C.
Не ругается, но и ничего не делает. Кроме того, я не пойму сам запрос: в нем считаются категории по полю id, а мне надо считать статьи из таблицы data по полю data.id_cat
Или я ошибаюсь?

Спустя 1 час, 27 минут, 17 секунд (28.06.2012 - 14:51) Shkiper написал(а):
MrBrown
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in Z:line 20 

20 линию покажите

Спустя 5 минут, 44 секунды (28.06.2012 - 14:57) Arh написал(а):
Цитата (MrBrown @ 28.06.2012 - 10:24)
A.B.C.
Не ругается, но и ничего не делает. Кроме того, я не пойму сам запрос: в нем считаются категории по полю id, а мне надо считать статьи из таблицы data по полю data.id_cat
Или я ошибаюсь?

Не выдаёт потому что нужно выводить по другому?
echo $myrow3['COUNT(DISTINCT `cats`.id)'];

сделай print_r ($myrow3)

Спустя 8 минут, 43 секунды (28.06.2012 - 15:06) MrBrown написал(а):
Shkiper
20-я линия - это начало цикла:
while($myrow3 = mysql_fetch_assoc($result3))

Спустя 3 минуты, 33 секунды (28.06.2012 - 15:09) MrBrown написал(а):
Arh
Не догоняю, куда сунуть print_r
Помоги, вот мой код исходный:
<?php
echo '<p class=\'nav_title\'>';
echo '<strong>'.$myrow2['part'].'<br></strong>';
echo'</p>';

$n = $myrow2['id'];
$result3 = mysql_query("SELECT DISTINCT `cats`.id, `cats`.id_part, `cats`.cat FROM `cats` JOIN `data` ON `cats`.id = `data`.id_cat WHERE `cats`.id_part = '{$n}' GROUP BY `cats`.id ");//запрос категорий в соответствующем разделе


while($myrow3 = mysql_fetch_assoc($result3))
{
echo '<p>';
echo '<a href=\'view_cats.php?id='.$myrow3['id'].'\'>'.$myrow3['cat'].'</a><br></strong>';
echo '</p>';
}
?>

Ребята, извините за кривизну рук, если что.

Спустя 6 минут, 32 секунды (28.06.2012 - 15:16) Arh написал(а):
Цитата (MrBrown @ 28.06.2012 - 12:09)
Arh
Не догоняю, куда сунуть print_r
Помоги, вот мой код исходный:
<?php
echo '<p class=\'nav_title\'>';
echo '<strong>'.$myrow2['part'].'<br></strong>';
echo'</p>';

$n = $myrow2['id'];
$result3 = mysql_query("SELECT DISTINCT `cats`.id, `cats`.id_part, `cats`.cat FROM `cats` JOIN `data` ON `cats`.id = `data`.id_cat WHERE `cats`.id_part = '{$n}' GROUP BY `cats`.id ");//запрос категорий в соответствующем разделе
 
 
while($myrow3 = mysql_fetch_assoc($result3))
{
    echo '<p>';
    echo '<a href=\'view_cats.php?id='.$myrow3['id'].'\'>'.$myrow3['cat'].'</a><br></strong>';
    echo '</p>';
}
?>

Ребята, извините за кривизну рук, если что.

чувак к ником A.B.C. тебе написал код, ты говоришь ничего не выводит.
Попробуй его код, только в цикле своём вставь
 print_r($myrow3)

Если всё верно работает, там в массиве должен быть ключ типа
COUNT(DISTINCT `cats`.id)
а его значение это колличество.
Так и выводи
echo $myrow3['COUNT(DISTINCT `cats`.id)'];


или mysql_fetch_assoc исправь на mysql_fetch_num и выводи так
echo $myrow3['0'];

Спустя 8 минут, 37 секунд (28.06.2012 - 15:24) MrBrown написал(а):
Arh
Я пытаюсь, но браузер сразу ругается на строчку начала цикла -
while($myrow3 = mysql_fetch_assoc($result3))
, так что до вывода значений даже не доходит :(

Спустя 1 час, 44 минуты, 17 секунд (28.06.2012 - 17:09) Arh написал(а):
Если бы был дам твоей базы)
Не охото твой запрос разбирать, лучше свой придумаю =)

Например:

SQL
$query = mysql_query("SELECT  (SELECT COUNT(id) FROM `data` WHERE  `id_cat` =  c.`id`)  count, c.`name` FROM `cats` c");


Красная зона гласит: [/color] "Получить имена категорий из таблицы `cats`"
Зелёная зона гласит: "Получить количество id статей из таблицы `date`, где поле id_cat равно id категории и присвоить ключ count"

PHP
while ($row = mysql_fetch_assoc($query)) {
echo 'Категория '.$row['name'].' - Полей '.$row['count'];
}



Может поможет)

Спустя 38 минут, 43 секунды (28.06.2012 - 17:47) Guest написал(а):
Вот дамп:
CREATE TABLE `parts` (
`id` int(2) NOT NULL auto_increment,
`part` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=34 ;

CREATE TABLE `cats` (
`id` int(11) NOT NULL auto_increment,
`id_part` int(2) NOT NULL default '0',
`cat` varchar(255) NOT NULL default '',
`introduction` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=102 ;

CREATE TABLE `data` (
`id` int(5) NOT NULL auto_increment,
`id_cat` int(2) NOT NULL default '0',
`cat_name` varchar(255) NOT NULL default '',
`meta_d` varchar(255) NOT NULL default '',
`meta_k` varchar(255) NOT NULL default '',
`description` text NOT NULL,
`text` text NOT NULL,
`view` int(7) NOT NULL default '0',
`author` varchar(100) NOT NULL default '',
`date` date NOT NULL default '0000-00-00',
`mini_img` varchar(255) NOT NULL default '',
`title` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`),
FULLTEXT KEY `text` (`text`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=160 ;

А твой запрос я применил к моим таблицам, но - ругается!

Спустя 21 час, 43 минуты, 53 секунды (29.06.2012 - 15:31) Arh написал(а):
Цитата (Guest @ 28.06.2012 - 14:47)
Вот дамп:
CREATE TABLE `parts` (
  `id` int(2) NOT NULL auto_increment,
  `part` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=34 ;

CREATE TABLE `cats` (
  `id` int(11) NOT NULL auto_increment,
  `id_part` int(2) NOT NULL default '0',
  `cat` varchar(255) NOT NULL default '',
  `introduction` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=102 ;

CREATE TABLE `data` (
  `id` int(5) NOT NULL auto_increment,
  `id_cat` int(2) NOT NULL default '0',
  `cat_name` varchar(255) NOT NULL default '',
  `meta_d` varchar(255) NOT NULL default '',
  `meta_k` varchar(255) NOT NULL default '',
  `description` text NOT NULL,
  `text` text NOT NULL,
  `view` int(7) NOT NULL default '0',
  `author` varchar(100) NOT NULL default '',
  `date` date NOT NULL default '0000-00-00',
  `mini_img` varchar(255) NOT NULL default '',
  `title` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `text` (`text`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=160 ;

А твой запрос я применил к моим таблицам, но - ругается!

Потому что это был пример =)

Так попробуй
SELECT  (SELECT COUNT(id) FROM `data` WHERE  `id_cat` =  c.`id`)  count, c.`cat`, c.`id` FROM `cats` c



while ($row = mysql_fetch_assoc($query)) {
echo 'Категория '.$row['cat'].' - Полей '.$row['count'];
}

Спустя 7 минут, 59 секунд (29.06.2012 - 15:39) Arh написал(а):
Да и то что я вначале писал работает, только коунт по другой таблице
SELECT COUNT(`cats`.id) count ,`cats`.id, `cats`.id_part, `cats`.cat FROM `cats` JOIN `data` ON `cats`.id = `data`.id_cat WHERE `cats`.id_part = '{$n}' GROUP BY `cats`.id
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.