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


Подсчёт количества товара в категориях и вывод их числа


Сообщений в теме: 49

#1 Вячеслав

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 867 сообщений
  • ГородВашингтон
Репутация: 2

Отправлено 03 Апрель 2016 - 14:00

Приветствую!
Код, который выводит число не скрытых товаров в категории и подкатегории.
2500 рублей.

Сообщение отредактировал Вячеслав: 04 Апрель 2016 - 11:32


#2 Я.Сергей

    Продвинутый пользователь

  • Клиенты WebForMySelf
  • PipPipPip
  • 1 550 сообщений
Репутация: 278

Отправлено 03 Апрель 2016 - 14:08

Здесь не за что платить, я вам завтра запрос напишу, это дело 5 минут

#3 Вячеслав

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 867 сообщений
  • ГородВашингтон
Репутация: 2

Отправлено 03 Апрель 2016 - 14:10

Сергей! Я всё-равно вас отблагодарю, вы итак много для меня сделали.
Спасибо!

#4 Я.Сергей

    Продвинутый пользователь

  • Клиенты WebForMySelf
  • PipPipPip
  • 1 550 сообщений
Репутация: 278

Отправлено 03 Апрель 2016 - 14:12

Покажите ваш запрос, который получает категории из БД

#5 Вячеслав

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 867 сообщений
  • ГородВашингтон
Репутация: 2

Отправлено 03 Апрель 2016 - 14:16

    /* ====Каталог - получение массива=== */
function catalog(){
    $query = "SELECT * FROM brands WHERE visible2 = '1' ORDER BY parent_id, brand_name";
    $res = mysql_query($query) or die(mysql_query());
   
    //массив категорий
    $cat = array();
    while($row = mysql_fetch_assoc($res)){
	    if(!$row['parent_id']){

		    $cat[$row['brand_id']][] = $row['brand_name'];
	    }else{
		    $cat[$row['parent_id']]['sub'][$row['brand_id']] = $row['brand_name'];
	    }
    }
    return $cat;
}
			  /* ====Каталог - получение массива=== */
		  /*_______________________________________________________________________________*/
    


#6 Я.Сергей

    Продвинутый пользователь

  • Клиенты WebForMySelf
  • PipPipPip
  • 1 550 сообщений
Репутация: 278

Отправлено 03 Апрель 2016 - 15:21

Вячеслав, попробуйте такой вариант
function catalog(){
    $query = "SELECT *, (SELECT COUNT(*) FROM goods WHERE goods_brandid = brand_id) as cnt FROM brands WHERE visible2 = '1' ORDER BY parent_id, brand_name";
    $res = mysql_query($query) or die(mysql_query());
  
    //массив категорий
    $cat = array();
    while($row = mysql_fetch_assoc($res)){
		    if(!$row['parent_id']){
				    $cat[$row['brand_id']][] = $row['brand_name'];
				    $cat[$row['brand_id']]['cnt'] = $row['cnt'];
		    }else{
				    $cat[$row['parent_id']]['sub'][$row['brand_id']] = $row['brand_name'];
				    $cat[$row['parent_id']]['sub'][$row['brand_id']]['cnt'] = $row['cnt'];
		    }
    }
    return $cat;
}
я его правда не тестировал, но по идее в ячейке массива - cnt должно появиться кол-во товаров
попробуйте для начала распечатать массив категорий и посмотреть все ли в нем впорядке,
если что-то не так, выложите сюда распечатку полученного массива будем дорабатывать

#7 Вячеслав

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 867 сообщений
  • ГородВашингтон
Репутация: 2

Отправлено 03 Апрель 2016 - 15:35

Что-то проясняется!


Array
(
    [9] => Array
        (
            [0] => Farm
            [cnt] => 0
            [sub] => Array
                (
                    [27] => 8uto
                    [28] => 1ask
                    [29] => 2em
                )

        )




#8 Вячеслав

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 867 сообщений
  • ГородВашингтон
Репутация: 2

Отправлено 03 Апрель 2016 - 15:35

Первую букву подкатегории заменило количество товаров в ней.

#9 Я.Сергей

    Продвинутый пользователь

  • Клиенты WebForMySelf
  • PipPipPip
  • 1 550 сообщений
Репутация: 278

Отправлено 03 Апрель 2016 - 15:43

попробуйте так
if(!$row['parent_id']){
								    $cat[$row['brand_id']][] = $row['brand_name'];
								    $cat[$row['brand_id']]['cnt'] = $row['cnt'];
				    }else{
								    $cat[$row['parent_id']]['sub'][$row['brand_id']][] = $row['brand_name'];
								    $cat[$row['parent_id']]['sub'][$row['brand_id']]['cnt'] = $row['cnt'];
				    }
    }


#10 Я.Сергей

    Продвинутый пользователь

  • Клиенты WebForMySelf
  • PipPipPip
  • 1 550 сообщений
Репутация: 278

Отправлено 03 Апрель 2016 - 15:44

или так
if(!$row['parent_id']){
				    $cat[$row['brand_id']]['name'] = $row['brand_name'];
				    $cat[$row['brand_id']]['cnt'] = $row['cnt'];
		    }else{
				    $cat[$row['parent_id']]['sub'][$row['brand_id']]['name'] = $row['brand_name'];
				    $cat[$row['parent_id']]['sub'][$row['brand_id']]['cnt'] = $row['cnt'];
		    }


#11 Вячеслав

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 867 сообщений
  • ГородВашингтон
Репутация: 2

Отправлено 03 Апрель 2016 - 15:51

В первом варианте так :

Array
(
    [9] => Array
	    (
		    [0] => Farm
		    [cnt] => 0
		    [sub] => Array
			    (
				    [27] => Array
					    (
						    [0] => Auto
						    [cnt] => 8
					    )
				    [28] => Array
					    (
						    [0] => Mask
						    [cnt] => 1
					    )
				    [29] => Array
					    (
						    [0] => Sem
						    [cnt] => 26
					    )
			    )
	    )

Вместо названий подкатегорий высвитилось Array

#12 Вячеслав

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 867 сообщений
  • ГородВашингтон
Репутация: 2

Отправлено 03 Апрель 2016 - 15:53

Второй вариант :

Array
(
    [9] => Array
	    (
		    [name] => Farm
		    [cnt] => 0
		    [sub] => Array
			    (
				    [27] => Array
					    (
						    [name] => Auto
						    [cnt] => 8
					    )
				    [28] => Array
					    (
						    [name] => Mask
						    [cnt] => 1
					    )
				    [29] => Array
					    (
						    [name] => Sem
						    [cnt] => 26
					    )
			    )
	    )

Всё так же, только исчезло название категории.

#13 Я.Сергей

    Продвинутый пользователь

  • Клиенты WebForMySelf
  • PipPipPip
  • 1 550 сообщений
Репутация: 278

Отправлено 03 Апрель 2016 - 15:55

как же исчезло,
названия теперь в ячейке name

#14 Я.Сергей

    Продвинутый пользователь

  • Клиенты WebForMySelf
  • PipPipPip
  • 1 550 сообщений
Репутация: 278

Отправлено 03 Апрель 2016 - 15:56

просто теперь немного придется подправить вывод категорий

#15 Вячеслав

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 867 сообщений
  • ГородВашингтон
Репутация: 2

Отправлено 03 Апрель 2016 - 16:01

Да вот исчезло. Пытаюсь понять каким образом подправить вывод категорий.

#16 Я.Сергей

    Продвинутый пользователь

  • Клиенты WebForMySelf
  • PipPipPip
  • 1 550 сообщений
Репутация: 278

Отправлено 03 Апрель 2016 - 16:05

покажите как сейчас выводится

#17 Вячеслав

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 867 сообщений
  • ГородВашингтон
Репутация: 2

Отправлено 03 Апрель 2016 - 16:08

Array
(
    [9] => Array
	    (
		    [0] => Farm
		    [cnt] => 0
		    [sub] => Array
			    (
				    [27] => Array
					    (
						    [0] => Auto
						    [cnt] => 8
					    )
				    [28] => Array
					    (
						    [0] => Mask
						    [cnt] => 1
					    )
				    [29] => Array
					    (
						    [0] => Sem
						    [cnt] => 26
					    )
			    )
	    )

А количество всех товаров общей суммой в категории тоже не показывает. Только отдельно в каждой подкатегории.

#18 Я.Сергей

    Продвинутый пользователь

  • Клиенты WebForMySelf
  • PipPipPip
  • 1 550 сообщений
Репутация: 278

Отправлено 03 Апрель 2016 - 16:11

Цитата

А количество всех товаров общей суммой в категории тоже не показывает.
так в ней нет товаров, в ней другие категории

покажите как в коде у вас выводятся категории

#19 Вячеслав

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 867 сообщений
  • ГородВашингтон
Репутация: 2

Отправлено 03 Апрель 2016 - 16:13

 <?php foreach($cat as $key => $item): ?>
						<?php if(count($item) > 1): // если это родительская категория ?>
						<h3><li><a href="#"><?=$item[0]?></a></li></h3>
							<ul>
								<li>- <a href="<?=PATH?>category/<?=$key?>">Все товары</a></li>
								<?php foreach($item['sub'] as $key => $sub): ?>
								<li>- <a href="<?=PATH?>category/<?=$key?>"></a></li>
								<?php endforeach; ?>
							</ul>
						<?php elseif($item[0]): // если самостоятельная категория ?>
							<li><a href="<?=PATH?>category/<?=$key?>"></a></li>
						<?php endif; ?>
					<?php endforeach; ?>

А можно как-то логично сделать подсчёт всех не скрытых товаров подкатегорий и вывести их к названию самой категории?

Сообщение отредактировал Вячеслав: 04 Апрель 2016 - 11:21


#20 Я.Сергей

    Продвинутый пользователь

  • Клиенты WebForMySelf
  • PipPipPip
  • 1 550 сообщений
Репутация: 278

Отправлено 03 Апрель 2016 - 16:19

<li>- <a href="<?=PATH?>category/<?=$key?>"> <?=$sub[0] ?> (<?=$sub['cnt']?>)</a></li>
так попробуйте





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных