Prestashop 1.7将订单导出到XML

问题描述 投票:0回答:1

您能否通过以下脚本帮助我?它导入特定的订单并以XML格式显示。问题在于,随机记录(产品ID)可以显示2次。结果,我需要每次都验证输出是否包含错误。总之,如何改进此脚本以确保每个输出都是100%正确的?

<?php 
    header('Content-type: text/xml');
    $xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
    // import Prestashop settings
?>
<ZAM>
<?php
$zamowienie = $_GET['zamowienie'];
$context = Context::getContext();
$id_lang = (int)Configuration::get('PS_LANG_DEFAULT', (int)$context->shop->id);
$order_details = Db::getInstance()->ExecuteS('
SELECT o.reference, o.date_add, o.id_order, message
FROM '._DB_PREFIX_.'orders o
LEFT JOIN '._DB_PREFIX_.'customer_message pl ON (pl.date_add = o.date_add)
WHERE o.reference = "'.$zamowienie.'"');

$order_details2 = Db::getInstance()->ExecuteS('
SELECT o.id_order, od.product_reference, od.product_quantity
FROM '._DB_PREFIX_.'orders o
LEFT JOIN '._DB_PREFIX_.'order_detail od ON (od.id_order = o.id_order)
LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = od.product_reference)
WHERE o.reference = "'.$zamowienie.'"');

foreach ($order_details as &$od){
    echo "<NAG>";
        echo "<numer>".$od['id_order']."</numer>";
        echo "<data>".$od['date_add']."</data>";
        echo "<numer_zam>".$od['reference']."</numer_zam>";
        echo "<uwagi>".$od['message']."</uwagi>";
    echo "</NAG>";
}
foreach ($order_details2 as &$od){
    echo "<POZ>";
        echo "<numer>".$od['id_order']."</numer>";
        echo "<tw_id>".$od['product_reference']."</tw_id>";
        echo "<zam_ilo>".$od['product_quantity']."</zam_ilo>";
    echo "</POZ>";
};

?>
</ZAM>
php sql xml prestashop
1个回答
0
投票

感谢您指出安全问题。我会修好它。我的问题是由数据库中重复的产品引起的。我应该如何升级sql query以确保即使在数据库中有更多记录,输出中也只会出现一种产品?请看下面的例子。

<ZAM>
<NAG>
<numer>2045</numer>
<data>2020-04-22 17:51:04</data>
<numer_zam>HJJDHNTBV</numer_zam>
<uwagi/>
</NAG>
<POZ>
<numer>2045</numer>
<tw_id>7069</tw_id>
<zam_ilo>4</zam_ilo>
</POZ>
<POZ>
<numer>2045</numer>
<tw_id>7069</tw_id>
<zam_ilo>4</zam_ilo>
</POZ>
<POZ>
<numer>2045</numer>
<tw_id>98404</tw_id>
<zam_ilo>1</zam_ilo>
</POZ>
</ZAM>

这部分代码由于重复的产品ID 7069而出现2次。

<POZ>
    <numer>2045</numer>
    <tw_id>7069</tw_id>
    <zam_ilo>4</zam_ilo>
</POZ>
© www.soinside.com 2019 - 2024. All rights reserved.