Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как правильно написать SQL запрос?

Как правильно написать SQL запрос?


     11.02.2025    MySQL, выгрузка, запрос    Общие вопросы по PHP, MySQL    11

вопрос
Всем привет. Занимался любительски программированием лет 10 назад, уже все под забыл. Прошу небольшой помощи.
Кусок кода вырезан из плагина для выгрузки из 1с в Joomla. Плагин работает на обновления цен. Директор попросил переделать его, чтоб и новые позиции добавлялись пустые (то бишь Наименование, артикул, цена1, цена2).
С переменными проблем нет:

$art- артикул
$prodtitle- наименование
$price_1- цена1
$price_2- цена2


Как из этих переменных составить sql запрос на добавления товара? понимаю что далеко не тот CMS, нужно запрос для JOOMLA, но думаю ребята сможете мне помочь.

Может кому будет интересно вот кусок кода плагина:


$glob_files = glob($_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin/upload/offers*.xml');
usort($glob_files, function ($a, $b) {
    return filemtime($a) - filemtime($b);
});
foreach ($glob_files as $xml_name) {
    $xml_data = file_get_contents($xml_name, "SimpleXMLElement");
    $xml = new SimpleXMLElement(mb_substr($xml_data, 0, mb_stripos($xml_data, '</КоммерческаяИнформация>')) . '</КоммерческаяИнформация>');
    if (!empty($xml)) {
        $price_cnt = count($xml->ПакетПредложений->Предложения->Предложение);
        for ($i = 0; $i < $price_cnt; $i++) {
            $price = $xml->ПакетПредложений->Предложения->Предложение[$i];

            if (empty($price->Артикул)) continue;
            $art = (string)$price->Артикул;
			
			$prodtitle = (string)$price->Наименование;
		

            $price_1 = (float)$price->Цены->Цена[0]->ЦенаЗаЕдиницу;
            $price_2 = (float)$price->Цены->Цена[1]->ЦенаЗаЕдиницу;

            if (empty($price_1)) continue;

            $query = $db->prepare("SELECT `virtuemart_product_id` FROM `jos_virtuemart_products` WHERE `product_sku` = :product_sku LIMIT 1");
            $query->execute(array('product_sku' => $art));
            $prod_id = $query->fetchColumn(0);
            if (empty($prod_id)) continue;

            $query = $db->prepare("SELECT * FROM `jos_virtuemart_product_prices` WHERE `virtuemart_product_id` = :virtuemart_product_id LIMIT 1");
            $query->execute(array('virtuemart_product_id' => $prod_id));
            $price_old = $query->fetch(PDO::FETCH_ASSOC);

            // if($price_old['product_price'] <> $price_1) echo $art."\n";

            $query = $db->prepare("UPDATE `jos_virtuemart_product_prices` SET `product_price` = :price_1, `product_override_price` = :price_2  WHERE `virtuemart_product_id` = :virtuemart_product_id LIMIT 1");
            $query->execute(array('price_1' => $price_1, 'price_2' => $price_2, 'virtuemart_product_id' => $prod_id));

            file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin/logs/' . date('y-m-d') . '.txt', date('H:i:s ' . $art . ' ' . $price_old['product_price'] . ' ' . $price_1 . "\n"), FILE_APPEND);
        }
    }

    rename($xml_name, $_SERVER['DOCUMENT_ROOT'] . '/bitrix/admin/archive/' . str_replace('.xml', date('-y-m-d-h-i-s') . '.xml', basename($xml_name)));
}

Данный плагин был переделан с битрикс на джумал

Ответа пока нет


Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх