экспорт продуктов prestashop 1.7.2.4 в xml с использованием php-скрипта - PullRequest
0 голосов
/ 21 мая 2018

Я работаю над сценарием php для экспорта всех продуктов из prestashop 1.7.4.2 в xml.Сценарий выполняется в течение нескольких минут и возвращает ошибку 404.Никаких ошибок не появляется ...

SQL-запрос работает нормально благодаря Нику в моем предыдущем посте

Как бы я решил эту ошибку 404?Я работаю на Apache, работаю с PHP 7.0, скрипт должен подготовить экспорт + - 4500 продуктов.

Это скрипт:

//error_reporting
error_reporting(E_ALL);
ini_set('display_errors', 1);

//ini_set
ini_set('max_execution_time' ,0);
ini_set('set_memory_limit', -1);

// Create connection
$dbconnect = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($dbconnect->connect_error)
{
    die('Connection failed: ' . $dbconnect->connect_error);
}
$query = 'SELECT
    psc5_product.id_product AS \'product_id\',
    psc5_product.ean13 AS \'ean13\',
    psc5_product.price AS \'price\',
    psc5_product.reference AS \'product_reference\',
    psc5_stock_available.quantity AS \'available_stock\',
    psc5_manufacturer.name AS \'brand\',
    psc5_product_lang.description AS \'description\',
    psc5_product_lang.name AS \'title\',
    concat("https://www.natureldeluxe.be/", psc5_category_lang.link_rewrite, "/", psc5_product_lang.link_rewrite) AS \'deeplink\',
    concat("https://www.natureldeluxe.be/", psc5_image.id_image, "-large_default/", psc5_product_lang.link_rewrite, ".jpg") AS \'imagelink\' 
FROM
    psc5_product 
    INNER JOIN
        psc5_stock_available 
        ON psc5_stock_available.id_product = psc5_product.id_product 
    INNER JOIN
        psc5_manufacturer 
        ON psc5_manufacturer.id_manufacturer = psc5_product.id_manufacturer 
    INNER JOIN
        psc5_product_lang 
        ON psc5_product_lang.id_product = psc5_product.id_product 
    INNER JOIN
        psc5_category_lang 
        ON psc5_category_lang.id_category = psc5_product.id_category_default 
    INNER JOIN
        psc5_image 
        ON psc5_image.id_product = psc5_product.id_product';
$dbresult = mysqli_query($dbconnect, $query);
// create a new XML document
$doc = new DomDocument('1.0');
// create root node
$root = $doc->createElement('root');
$root = $doc->appendChild($root);
// process one row at a time
while ($row = mysqli_fetch_assoc($dbresult))
{
    // add a child node for each field
    foreach ($row as $product_id => $product_id)
    {
        foreach ($row as $ean13 => $ean13)
        {
            foreach ($row as $price => $price)
            {
                foreach ($row as $ean13 => $ean13)
                {
                    foreach ($row as $product_reference => $product_reference)
                    {
                        foreach ($row as $available_stock => $available_stock)
                        {
                            foreach ($row as $brand => $brand)
                            {
                                foreach ($row as $description => $description)
                                {
                                    foreach ($row as $title => $title)
                                    {
                                        foreach ($row as $deeplink => $deeplink)
                                        {
                                            foreach ($row as $imagelink => $imagelink)
                                            {
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
// while
// get completed xml document
$xml_string = $doc->saveXML();
echo $xml_string;

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Экспорт отлично работает в prestashop 1.7.4.2

Простой экспорт товаров в xml с использованием php & sql.

Я добавлю полный модифицированный код, так что на всякий случай:

//error_reporting
error_reporting(E_ALL);
ini_set('display_errors', 1);

//ini_set
ini_set('max_execution_time', 0);
ini_set('set_memory_limit', -1);

// Create connection
$dbconnect = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($dbconnect->connect_error) {
    die('Connection failed: ' . $dbconnect->connect_error);
}
$query    = 'SELECT
    psc5_product.id_product AS \'product_id\',
    psc5_product.ean13 AS \'ean13\',
    psc5_product.price AS \'price\',
    psc5_product.reference AS \'product_reference\',
    psc5_stock_available.quantity AS \'available_stock\',
    psc5_manufacturer.name AS \'brand\',
    psc5_product_lang.description AS \'description\',
    psc5_product_lang.name AS \'title\',
    concat("https://www.natureldeluxe.be/", psc5_category_lang.link_rewrite, "/", psc5_product_lang.link_rewrite) AS \'deeplink\',
    concat("https://www.natureldeluxe.be/", psc5_image.id_image, "-large_default/", psc5_product_lang.link_rewrite, ".jpg") AS \'imagelink\' 
FROM
    psc5_product 
    INNER JOIN
        psc5_stock_available 
        ON psc5_stock_available.id_product = psc5_product.id_product 
    INNER JOIN
        psc5_manufacturer 
        ON psc5_manufacturer.id_manufacturer = psc5_product.id_manufacturer 
    INNER JOIN
        psc5_product_lang 
        ON psc5_product_lang.id_product = psc5_product.id_product 
    INNER JOIN
        psc5_category_lang 
        ON psc5_category_lang.id_category = psc5_product.id_category_default 
    INNER JOIN
        psc5_image 
        ON psc5_image.id_product = psc5_product.id_product';
$dbresult = mysqli_query($dbconnect, $query);
// create a new XML document
$doc = new DomDocument('1.0');
// create root node
$root = $doc->createElement('root');
$root = $doc->appendChild($root);
while ($row = mysqli_fetch_assoc($dbresult)) {
    $newRow = $doc->createElement('product');
    foreach ( $row as $name=>$value )    {
        $element = $doc->createElement($name, htmlspecialchars($value));
        $newRow->appendChild($element);
    }
    $root->appendChild($newRow);
}
$xml_string = $doc->saveXML();
header('Content-type: application/xml');
echo $xml_string;
0 голосов
/ 21 мая 2018

Не уверен, что это ваша проблема, особенно это не должно вызывать ошибку 404.Но то, как вы создаете XML, выглядит неправильно.

Это должно экспортировать файл XML с именами столбцов из вашего SQL, каждая строка в элементе <product> ...

$doc = new DomDocument('1.0');
// create root node
$root = $doc->createElement('root');
$root = $doc->appendChild($root);
while ($row = mysqli_fetch_assoc($dbresult)) {
    $newRow = $doc->createElement('product');
    foreach ( $row as $name=>$value )    {
        $element = $doc->createElement($name, $value);
        $newRow->appendChild($element);
    }
    $root->appendChild($newRow);
}
$xml_string = $doc->saveXML();
header('Content-type: application/xml');
echo $xml_string;

Я рад удалить этот ответ, если он не имеет отношения к проблеме, но, надеюсь, он может помочь.

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