X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> Посчитать количество статей в категории
bo4kov
bo4kov
Topic Starter сообщение 26.5.2015, 18:07; Ответить: bo4kov
Сообщение #1


Здравствуйте! Все ломаю голову, как же посчитать количество статей в категории.

В общем есть функция которая считает количество статей в определенной категории:

function count_rows($category){ // $category - это id категории
$query = "(SELECT COUNT(id) as count_rows FROM `articles` WHERE category=`$category`";
$res = mysql_query($query);

while($row = mysql_fetch_assoc($res)){
if($row['count_rows']) $count_rows = $row['count_rows'];
}
return $count_rows;
}

Эта функция у меня на самом деле другая (немного посложнее запрос будет), не в этом суть. Данная функция работает, и считает мне количество статей в категории.

И есть код вывода категорий (и собственно с моим вариантом вывода количества статей):

<?php foreach($cat as $item): ?>
$count = count_rows($item['id']);
<li>
<a href="#" >
<?=$item['title']; ?>
<div class="count"><?=$count;?></div>
</a>
</li>
<?php endif;?>

Такой код все прекрасно считает, и выводит то что нужно, на страшно тормозит сайт из-за того что функция вызывается в цикле.

Вопрос как мне правильно передать параметр ($item['id']) в функцию count_rows(), чтобы функция вызывалась только один раз, а не в цикле?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 26.5.2015, 19:10; Ответить: miketomlin
Сообщение #2


SELECT `category`, COUNT(*) FROM `articles` GROUP BY `category`
 
Если вы в функции выбираете одно "количество", зачем его в цикле считывать? Для вашего кода достаточно было сделать так:
list($count_rows)=mysqli_fetch_row($res);

Сообщение отредактировал miketomlin - 26.5.2015, 19:21


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShniderHost
ShniderHost
сообщение 27.5.2015, 13:44; Ответить: ShniderHost
Сообщение #3


bo4kov, может быть "иф... брейк" поможет? 
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
bo4kov
bo4kov
Topic Starter сообщение 27.5.2015, 17:43; Ответить: bo4kov
Сообщение #4


Что-то я не совсем понимаю этот запрос - "SELECT `category`, COUNT(*) FROM `articles` GROUP BY `category`". можно по подробней? возможно вместо "GROUP BY `category`" нужно написать "GROUP BY `$category`"? и все же не пойму где мне выводить функцию count_rows()? в цикле? как я раньше писал?

И этот код не подходит (не правильно работает) list($count_rows)=mysqli_fetch_row($res);, в моем случае нужно использовать цикл, потому что у меня есть и под категории, которые тоже нужно считать.

Есть ли какие-то стандартные решения подсчета статей в категории? чтобы не было большой нагрузки?


Сообщение отредактировал bo4kov - 27.5.2015, 19:41
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
bo4kov
bo4kov
Topic Starter сообщение 27.5.2015, 19:44; Ответить: bo4kov
Сообщение #5


ShniderHost, думаю брейк, в моем случае, не решит проблему нагрузки 
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 27.5.2015, 19:45; Ответить: miketomlin
Сообщение #6


Нет, этот единственный запрос заменяет все ваши запросы по отдельным категориям в цикле. В результате будет сформирована таблица, в которой в первом столбце будут идентификаторы всех существующих категорий, а напротив них во втором – соответственно "количества" статей в каждой из этих категорий.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
bo4kov
bo4kov
Topic Starter сообщение 27.5.2015, 19:50; Ответить: bo4kov
Сообщение #7


miketomlin, ну тогда зачем параметр передаваемый функции count_rows( $category)? и как мне правильно вывести функцию??? 

Но у меня запрос будет посложнее:

$query = "(SELECT COUNT(id) as count_rows
FROM `articles`
WHERE id IN
(
SELECT `art_id` FROM `table_art_cat` WHERE `cat_id` = $category
))";

и как мне все это переделать?

просто у меня создана отдельная таблицы где хранятся id  категорий и статей.


Сообщение отредактировал bo4kov - 27.5.2015, 20:01
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 27.5.2015, 20:02; Ответить: miketomlin
Сообщение #8


Насчет подкатегорий вообще не понял. При использовании показанного мной запроса, возможно, функция вообще не нужна. Просто построчно обрабатываете результирующую таблицу и выводите "количества" статей в категориях (значения второго столбца).


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
сообщение 27.5.2015, 20:07; Ответить: ixman
Сообщение #9


bo4kov, выложите сюда запрос, который делает обращение к категории
А вообще пост номер 2 даёт ответ, но думаю не совсем оптимальный
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 27.5.2015, 20:10; Ответить: miketomlin
Сообщение #10


(bo4kov @ 27.5.2015, 21:50) *
просто у меня создана отдельная таблицы где хранятся id категорий и статей.
В смысле? У вас категории описаны в той же таблице, что и статьи?


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Пакетное размещение статей по разным тематикам. Скидки!
35 kasey7 10650 26.3.2024, 15:47
автор: kasey7
Открытая тема (нет новых ответов) Google adwords показывает дробное количество конверсий
0 Megaspryt 710 16.3.2024, 23:19
автор: Megaspryt
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыРучное размещение вечных ссылок и статей на хороших площадках
Опыт 10 лет!
419 leonidukg 273830 12.3.2024, 15:17
автор: leonidukg
Открытая тема (нет новых ответов) Нужно сделать репост статей в соц сети
1 HavingingWorld 2393 27.2.2024, 2:15
автор: AndrePro
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлы[ClipAI] - Рерайт больше не нужен, забудьте про биржи статей!
Улучшенный бот для написания статей при помощи ИИ, и не только
25 alexmrml 9869 9.1.2024, 18:25
автор: alexmrml


 



RSS Текстовая версия Сейчас: 29.3.2024, 2:42
Дизайн