В базе данных все категории имеют свои номера, поэтому для получения товаров нужно указать номер категории товаров.
// 2 Жидкость // 4 Аксессуары // 3 Железо // 73 Расходники // категория товара $category=3; // получаем товары из магазина $array_goods = get_shop_goods($category); // вывести в панель отладки print_r($array_goods);
Функция получения товаров:
// 2 Жидкость // 4 Аксессуары // 3 Железо // 73 Расходники // категория товара // $category = '3'; // получить все товары из магазина function get_shop_goods($category) { // настройки базы данных // берутся из настроек магазина $db_ip='IP базы данных'; $bd_user='пользователь'; $bd_pwd='пароль'; $tb_name ='wxa43_virtuemart_products_ru_ru'; $tb_name2 = 'wxa43_virtuemart_products'; // коллекция товаров с цветами $goods = array(); // соединяемся с базой $mysql_bd = @mysqli_connect($db_ip, $bd_user, $bd_pwd,$bd_user); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); // закончить скрипт $app->quit(); } // кодировка mysqli_set_charset($mysql_bd,'utf8'); $sql='SELECT * FROM wxa43_virtuemart_product_categories WHERE virtuemart_category_id = '.$category; $q = mysqli_query($mysql_bd, $sql); while ($row = mysqli_fetch_row($q)) { // создаём объект товаров с их цветами $good = new ShopGoods(); $good->id=trim($row[1]); // получаем товар и его название $sql1 = 'SELECT * FROM wxa43_virtuemart_products_ru_ru WHERE virtuemart_product_id = '.$row[1]; $q1 = mysqli_query($mysql_bd, $sql1); $f = mysqli_fetch_array($q1, MYSQLI_ASSOC); $good->name = trim($f['product_name']); mysqli_free_result($q1); // получаем артикул товара $sql1 = 'SELECT * FROM wxa43_virtuemart_products WHERE virtuemart_product_id = '.$row[1]; $q1 = mysqli_query($mysql_bd, $sql1); $f = mysqli_fetch_array($q1, MYSQLI_ASSOC); $good->article = trim($f['product_sku']); mysqli_free_result($q1); // получить цену $sql1 = 'SELECT * FROM wxa43_virtuemart_product_prices WHERE virtuemart_product_id= '.$row[1]; $q1 = mysqli_query($mysql_bd, $sql1); $f = mysqli_fetch_array($q1, MYSQLI_ASSOC); $good->price = trim($f['product_price']); $good->price =ceil($good->price); mysqli_free_result($q1); $sql1 = 'SELECT * FROM wxa43_virtuemart_product_customfields where virtuemart_product_id='.$row[1].' and virtuemart_custom_id = 4' ; $q1 = mysqli_query($mysql_bd, $sql1); while ($row_ = mysqli_fetch_row($q1)) { $good->add(trim($row_[3])); } mysqli_free_result($q1); // получаем атрибут клон $sql1 = 'SELECT * FROM wxa43_virtuemart_product_customfields where virtuemart_product_id='.$row[1].' and virtuemart_custom_id = 73' ; $q1 = mysqli_query($mysql_bd, $sql1); $f = mysqli_fetch_array($q1, MYSQLI_ASSOC); if(trim($f['customfield_value'])=='Клон (Clone)') $good->strclone = 'Клон (Clone)'; else $good->strclone = 'Original'; mysqli_free_result($q1); $goods[]=$good; } mysqli_free_result($q); mysqli_close($mysql_bd); echo 'получили все товары из магазина в количестве - '.count($goods)."<br>"; return $goods; }
Полученные данные разбираем в объекты класса ShopGoods.
// товар из магазина class ShopGoods implements IteratorAggregate { // доступные цвета public $collection = array(); var $name; var $id; var $price; var $strclone; var $article; public function getIterator() { return new ArrayIterator($this->collection); } public function add($pond) { $this->collection[] = $pond; } }
В итоге имеем данные в следующем виде:
[518] => ShopGoods Object ( [collection] => Array ( [0] => Черный [1] => Зеленый [2] => Стальной [3] => Желтый ) [name] => Дрипка ADVKEN & VapersMD Breath RDA [id] => 12146 [price] => 1500 [strclone] => Original [article] => AD-009B ) [519] => ShopGoods Object ( [collection] => Array ( [0] => Черный [1] => Сталь [2] => Красная медь ) [name] => Дрипка-бак Augvape Merlin RDTA [id] => 12280 [price] => 1860 [strclone] => Original [article] => CM-001B )
C этими данными мы далее можем работать так:
// пройдёмся по всему массиву foreach ($array_goods as $good) { // название товара echo $good->name."<br>"; // артикул echo $good->article."<br>"; }