Прошу, подскажите, как после наименования категории показать количество статей в ней, применительно к моему случаю:
Таблица категорий 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
Я так уже делал, это один из первых вариантов. Не работает:
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
Или я ошибаюсь?
Не ругается, но и ничего не делает. Кроме того, я не пойму сам запрос: в нем считаются категории по полю id, а мне надо считать статьи из таблицы data по полю data.id_cat
Или я ошибаюсь?
Спустя 1 час, 27 минут, 17 секунд (28.06.2012 - 14:51) Shkiper написал(а):
MrBrown
20 линию покажите
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-я линия - это начало цикла:
20-я линия - это начало цикла:
while($myrow3 = mysql_fetch_assoc($result3))
Спустя 3 минуты, 33 секунды (28.06.2012 - 15:09) MrBrown написал(а):
Arh
Не догоняю, куда сунуть print_r
Помоги, вот мой код исходный:
Ребята, извините за кривизну рук, если что.
Не догоняю, куда сунуть 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 Ребята, извините за кривизну рук, если что. |
чувак к ником 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
Красная зона гласит: [/color] "Получить имена категорий из таблицы `cats`"
Зелёная зона гласит: "Получить количество id статей из таблицы `date`, где поле id_cat равно id категории и присвоить ключ count"
PHP
Может поможет)
Не охото твой запрос разбирать, лучше свой придумаю =)
Например:
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` ( CREATE TABLE `cats` ( CREATE TABLE `data` ( А твой запрос я применил к моим таблицам, но - ругается! |
Потому что это был пример =)
Так попробуй
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