使用CSV文件更新product_carrier表

时间:2018-07-02 20:02:54

标签: php csv prestashop

我实现了使用CSV更新表prestashop-> product_carrier的脚本。我的CSV有两列。

“参考”列和“真/假”列。当我浏览CSV且引用等于0时,我在表3行中插入了有关运营商引用的内容。我的问题是,当我浏览CSV时,var_dump向我显示NULL,而我却不明白为什么。这是我的代码:

    <?php

require(dirname(__FILE__) . '/config/config.inc.php');

$dir_fichier = $_SERVER['DOCUMENT_ROOT'].'/IMPORTS/STOCK_EXPRESS_FR'.'.csv';

tntProduct($dir_fichier);

function tntProduct($dir_fichier)
{
    $csv = new SplFileObject($dir_fichier);
    $csv->setFlags(SplFileObject::READ_CSV);
    $csv->setCsvControl(';');

    $carriersFR = [
        0 => 1,
        1 => 72,
        2 => 87
    ];

    foreach($csv as $ligne){
        echo '<pre>';
        if ($ligne[1] == 0) {
            getProductsIds($ligne[0], $carriersFR);
        }
        echo '</pre>';
    }
}

function getProductsIds($reference, $carriers)
{
    $sql = Db::getInstance()->executeS('
            SELECT p.id_product 
            FROM '._DB_PREFIX_.'product p
            WHERE p.reference = '.'"'.$reference.'"');

        foreach ($sql as $key => $item) {
                $productsIds[$key]['id_product'] = (int)$item['id_product'];
                $productsIds[$key]['id_carrier_reference'] = $carriers;
                $productsIds[$key]['id_shop'] = 1;  
        }

    foreach ($productsIds as $productsId) {
        $product[] = $productsId;
    }

        var_dump($product);

    return $productsIds;
}

它显示

enter image description here

示例CSV:

831S587 0
822 0
10601   13
61703111    0

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

谢谢您的回答,这是什么度假胜地

enter image description here

我需要此格式用于函数setCarriers();

enter image description here