Здравствуйте нанимал фрилансера для того, что бы он создал файл для экспорта в формате YML для приложения flipcat.ru А позже пропал и не отвечает. А в коде вероятно есть ошибки... Вот что получилось. Код: <?php include 'config/settings.inc.php'; $link = mysqli_connect(_DB_SERVER_,_DB_USER_,_DB_PASSWD_,_DB_NAME_); $categories = mysqli_query($link, "SELECT c.*,cl.* FROM `ps_category` c LEFT JOIN `ps_category_lang` cl ON cl.id_category = c.id_category WHERE c.id_parent != 0 AND c.id_parent != 1"); echo '<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE yml_catalog SYSTEM "shops.dtd"> <yml_catalog date="'.date('Y-m-d G:i').'"> <shop> <name>Все для наращивания и дизайна ногтей</name> <company>TnlShop.by</company> <url>http://tnlshop.by</url> <platform>Prestashop</platform> <version>3.0</version> <agency>Tnlshop</agency> <email>[email protected]</email> <currencies> <currency id="BYN" rate="1"/> </currencies> <categories>'; while($r = mysqli_fetch_assoc($categories)) { echo '<category id="'.$r['id_category'].'" '.(($r['id_parent'] != 2) ? 'parentId="'.$r['id_parent'].'"' : '').'>'.$r['name'].'</category>'; } echo '</categories><offers>'; $products = mysqli_query($link,"SELECT p.id_product,p.id_category_default,p.price,pl.* FROM `ps_product` p LEFT JOIN ps_product_lang pl on pl.id_product = p.id_product WHERE p.active = 1 order by p.id_product desc"); while($r = mysqli_fetch_assoc($products)){ $sql = ' SELECT * FROM `'._DB_PREFIX_.'image_shop` image_shop WHERE image_shop.`id_product` = '.(int)$r['id_product'].' AND image_shop.`cover`= 1'; $img = mysqli_fetch_assoc(mysqli_query($link,$sql)); $folders = str_split((string)$img['id_image']); $path = implode('/', $folders).'/'; $sql = ' SELECT pl.`id_lang`, pl.`link_rewrite`, p.`ean13`, cl.`link_rewrite` AS category_rewrite FROM `'._DB_PREFIX_.'product` p LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product`) LEFT JOIN `'._DB_PREFIX_.'lang` l ON (pl.`id_lang` = l.`id_lang`) LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (cl.`id_category` = p.`id_category_default` AND cl.`id_lang` = pl.`id_lang`) WHERE p.`id_product` = '.(int)$r['id_product'].' AND l.`active` = 1 '; $t = mysqli_query($link,$sql) or die(mysqli_error($link)); $t = (mysqli_fetch_assoc($t)); echo '<offer id="'.$r['id_product'].'" available="true" bid="1"> <url>http://tnlshop.by/'.$t['category_rewrite'].'/'.$r['id_product'].'-'.$t['link_rewrite'].'.html</url> <price>'.$r['price'].'</price> <currencyId>BYN</currencyId> <categoryId>'.$r['id_category_default'].'</categoryId> <picture>http://tnlshop.by/img/p/'.$path.$img['id_image'].'-thickbox_default.jpg</picture> <delivery>true</delivery> <name>'.htmlspecialchars($r['name']).'</name> <vendor></vendor> <description>'.htmlspecialchars(strip_tags($r['description'])).'</description> </offer>'; } echo '</offers></shop> </yml_catalog> '; Проблема в том, что большинству товаров автоматически назначается категория "2" и лишь примерно 50 товаром назначается их настоящая категория в чем может быть причина? Код: <url>http://tnlshop.by/katalog-tovarov/2719-freza-almaznaya-dlya-manikyura-i-pedikyura-razmer-25-sinij.html</url> <price>3.000000</price> <currencyId>BYN</currencyId> <categoryId>2</categoryId> <picture>http://tnlshop.by/img/p/3/2/1/3/3213-thickbox_default.jpg</picture> <delivery>true</delivery> <name>Фреза алмазная для маникюра и педикюра (размер 25 синий)</name> <vendor></vendor> <description></description> </offer><offer id="2718" available="true" bid="1"> <url>http://tnlshop.by/vtirka-khlopya-khameleona/2718-khlopya-serebro-khrom-patal.html</url> <price>7.000000</price> <currencyId>BYN</currencyId> <categoryId>1422</categoryId> <picture>http://tnlshop.by/img/p/3/2/1/2/3212-thickbox_default.jpg</picture> <delivery>true</delivery> <name>Хлопья серебро (хром) паталь</name> <vendor></vendor> <description>Хлопья наносятся на остаточную липкость от гель-лака или липкий слой топа "похлопывающими" движениями, после перекрываются топом. Так же есть второй способ использования - перемешать хлопья с топом, полученную гелевую консистенцию нанести тонким слоем на подготовленные ногти (маникюр, база), просушить в лампе LED - 1 мин, УФ - 3 мин. После нанести еще один тонкий слой и так же просушить в лампе. После покрываем топом, хорошо запечатывая торцы. Сушим в лампе LED - 30 сек, УФ - 2 мин</description> </offer><offer id="2717" available="true" bid="1"> Подскажите пожалуйста как это поправить? <categoryId>'.$r['id_category_default'].'</categoryId> Может в этой строчке нужно, что-то поправить?
1. это не yml формат, а xml. 2. проблема (если вам кажется, что она есть) скорее всего в запросе Код: SELECT p.id_product,p.id_category_default,p.price,pl.* FROM `ps_product` p LEFT JOIN ps_product_lang pl on pl.id_product = p.id_product WHERE p.active = 1 order by p.id_product desc здесь выбирается категория, из поля `p.id_category_default` p.s. без базы данных помочь не получится,
как это называет яндекс - это их проблема. формат данных, в котором они это делают называется XML и тому подтверждение эта часть кода: PHP: echo '<?xml version="1.0" encoding="utf-8"?>