Перейти к содержимому



Посчитать количество статей в категории

#11 bo4kov

bo4kov
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 0
0

Отправлено 27 Май 2015 - 19:11

Вот функция которая выбирает категории из БД:

function categories(){
    $query = "SELECT * FROM shop_categories ORDER BY parent_id, id";
    $res = mysql_query($query);
    
    //Массив категорий
    $cat = array();
    while($row = mysql_fetch_assoc($res)){
        if(!$row['parent_id']){ // если самостоятельная категория
            $cat[$row['id']][] = $row['title'];
        }else{ // если есть родитель
            $cat[$row['parent_id']]['sub'][$row['id']] = $row['title'];
        }
    }

    return $cat;
}


  • 0

#12 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 27 Май 2015 - 19:12

Если я правильно вас понял, то думаю вариант примерно такой должен быть

SELECT `id`, (SELECT COUNT(`id`) FROM `articles` WHERE `id` IN (SELECT `art_id` FROM `table_art_cat` WHERE `cat_id` = `id`) AS `count_rows` FROM `category` WHERE `id` = '" . $category . "'

Сообщение отредактировал Ixman: 27 Май 2015 - 19:15

  • 0

#13 miketomlin

miketomlin
  • Пользователь
  • 261 сообщений
  • Репутация: 35

Отправлено 27 Май 2015 - 19:12

Или имеется в виду таблица, связывающая категории и статьи?


  • 0

#14 bo4kov

bo4kov
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 0

Отправлено 27 Май 2015 - 19:13

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

 

 

Да, я использую таблицу, которая связывавает категории и статьи


Сообщение отредактировал bo4kov: 27 Май 2015 - 19:13

  • 0

#15 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 27 Май 2015 - 19:28

@bo4kov, ну пробуйте примерно такое

function categories(){
    $query = "SELECT * ,(SELECT COUNT(id) FROM `articles` WHERE id IN (SELECT `art_id` FROM `table_art_cat` WHERE `cat_id` = id) as count_rows FROM shop_categories ORDER BY parent_id, id";
    $res = mysql_query($query);
    
    //Массив категорий
    $cat = array();
    while($row = mysql_fetch_assoc($res)){
        if(!$row['parent_id']){ // если самостоятельная категория
            $cat[$row['id']][] = $row['title'];
        }else{ // если есть родитель
            $cat[$row['parent_id']]['sub'][$row['id']] = $row['title'];
        }
    }

    return $cat;
} 

Сообщение отредактировал Ixman: 27 Май 2015 - 19:30

  • 0

#16 bo4kov

bo4kov
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 0

Отправлено 27 Май 2015 - 19:28

@Ixman, я что-то запутался в вашем запросе:

SELECT `id`, (SELECT COUNT(`id`) FROM `articles` WHERE `id` IN (SELECT `art_id` FROM `table_art_cat` WHERE `cat_id` = `id`) AS `count_rows` FROM `category` WHERE `id` = '" . $category . "'

От куда берется это значение id, которое выделено красным?


Сообщение отредактировал bo4kov: 27 Май 2015 - 19:32

  • 0

#17 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 27 Май 2015 - 19:30

@bo4kov, не вижу красного 


  • 0

#18 bo4kov

bo4kov
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 0

Отправлено 27 Май 2015 - 19:33

вот WHERE `cat_id` = `id`

 

 

Все уже понял. А как мне теперь вывести на экран результат данного запроса, а точнее количество?

 

 

 

 

а хотя на понял, если я выведу запрос на экран, то у меня вместо того красного id ничего не подставляется, а остается слово id.


Сообщение отредактировал bo4kov: 27 Май 2015 - 19:46

  • 0

#19 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 27 Май 2015 - 19:49

@bo4kov, пробуйте в pma запрос и всё, по идеи там ничего подставляться и не должно 


  • 0

#20 bo4kov

bo4kov
    Topic Starter
  • Пользователь
  • 26 сообщений
  • Репутация: 0

Отправлено 27 Май 2015 - 19:54

в pma выдает ошибку  -

 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS count_rows FROM shop_categories ORDER BY parent_id, id' at line 2

 


  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru