экспорт продуктов prestashop 1.7.2.4 в xml с использованием php-скрипта

Я работаю над сценарием 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;

0

Решение

Не уверен, что это ваша проблема, особенно это не должно вызывать ошибку 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;

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

0

Другие решения

Экспорт отлично работает на 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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector