php - Prestashop 1.7 将订单导出到 XML
问题描述
你能帮我写下下面的脚本吗?它导入特定订单并以 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>
解决方案
感谢您指出安全问题。我会修好它。我的问题是由数据库中的重复产品引起的。我应该如何升级 sql 查询以确保只有一个产品会出现在输出中,即使它在数据库中有更多记录?请看下面的例子。
<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>
推荐阅读
- ios - 从 App 内获取 App 证书的有效期
- typescript - 在 Typescript 中,如何确保变量匹配联合类型的情况而不重写其定义?
- python - 导入 google-cloud-bigquery python 模块时出错
- csv - 从 CSV 文件写入 OrientDB 数据
- javascript - ReactJS 生命周期 (v. 16.4) 中传递数据的正确模式是什么
- python - django - 使用 get_user_model 创建用户时
- angular - combineLatest 与 FormControl valueChanges 事件绑定未发出
- python - python相关矩阵不同组合
- azure - 有什么方法可以在 Google Cloud Platform 和 Microsoft Azure 中注册免费试用(无需信用卡)?
- javascript - Highcharts中堆积柱形图中的重叠和圆角堆栈