Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Ошибка при экспорте БД в xml
Форумы портала PHP.SU » » XML и его обработка » Ошибка при экспорте БД в xml

Страниц (1): [1]
 

1. Tatjana77 - 24 Февраля, 2012 - 14:25:16 - перейти к сообщению
Помогите пожалуйста, найти ошибку.
При зкспорте БД в xml файл один и тот же товар выгружается несколько раз (магазин на движке Opencart).

salidzini.php

PHP:
скопировать код в буфер обмена
  1. <?// get products
  2. mysql_query("SET NAMES 'utf8'");
  3. mysql_query("SET CHARACTER SET 'utf8'");
  4. $req=mysql_query('SELECT p.product_id,pc.category_id,cd.name, model,image,price FROM product p INNER JOIN product_to_category pc
  5.   ON (pc.product_id=p.product_id) LEFT JOIN category_description cd ON(cd.category_id=pc.category_id) WHERE cd.language_id=3');
  6. $fp=fopen('./exports/salidzini.xml','w');
  7. $start='<?xml version="1.0" encoding="utf-8"?>
  8. <root>
  9. ';
  10. fwrite($fp,$start);
  11. while($row=mysql_fetch_assoc($req)){
  12.         $price=number_format($row['price'],2,'.','');
  13.         $xml.="<item>\n";
  14.         $xml.="\t\t<name>".$row['model']."</name>\n";
  15.         $xml.="\t\t<link>".HTTP_SERVER."index.php?route=product/product&product_id=".$row['product_id']."</link>\n";
  16.         $xml.="\t\t<price>".$row['price']."</price>\n";
  17.         $xml.="\t\t<image>".HTTP_SERVER.$row['image']."</image>\n";
  18.         $xml.="\t\t<category_full>".$row['name']."</category_full>\n";
  19.         $xml.="\t\t<category_link>".HTTP_SERVER."index.php?route=product/category&path=".$row['category_id']."</category_link>\n";
  20.         $xml.="\t\t<manufacturer>".$row['name']."</manufacturer>\n";
  21.         $xml.="\t\t<model>".$row['model']."</model>\n";
  22.         $xml.="</item>\n";
  23.         fwrite($fp,$xml);
  24. }
  25.         fwrite($fp,'</root>');
  26.         fclose($fp);
  27.         echo '<b>Import of salidzini is succesfully done!';
  28. ?><br />
2. caballero - 24 Февраля, 2012 - 14:43:06 - перейти к сообщению
значит он несколько раз выбирается из БД. При чем тут xml?
проверь что запрос из Бд возвращает
3. Tatjana77 - 24 Февраля, 2012 - 15:10:59 - перейти к сообщению
Можете посмотреть, я дам доступ к FTP.
Не могли бы написать мне на почту - tanja_bel@inbox.lv
4. caballero - 24 Февраля, 2012 - 17:47:53 - перейти к сообщению
Доступ по FTP тут не помождет. Нужен доступ к БД.


просто выполните запрос к БД

SELECT p.product_id,pc.category_id,cd.name, model,image,price FROM product p INNER JOIN product_to_category pc
ON (pc.product_id=p.product_id) LEFT JOIN category_description cd ON(cd.category_id=pc.category_id) WHERE cd.language_id=3

и посмотрите что вернет.
и не раздавайте по инету доступы к вашему серверу.
5. Tatjana77 - 24 Февраля, 2012 - 19:06:27 - перейти к сообщению
Спасибо!

Нашла ошибку.
6. Tatjana77 - 25 Февраля, 2012 - 15:24:00 - перейти к сообщению
Помогите, пожалуйста, выдается ошибка:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home6/tanoutle/public_html/sali dzini.php on line 29

На эту строчку - while($row=mysql_fetch_assoc($req))

$req=mysql_query("SELECT p.product_id,pc.category_id,cd.name, model,image,price FROM oc_product p INNER JOIN product_to_category pc
ON (pc.product_id=p.product_id) LEFT JOIN category_description cd ON(cd.category_id=pc.category_id) WHERE cd.language_id=3");
$fp=fopen('/home6/tanoutle/public_html/exports/salidzini.xml','w');
$start='<?xml version="1.0" encoding="utf-8"?>
<root>
';
fwrite($fp,$start);
while($row=mysql_fetch_assoc($req)){
$price=number_format($row['price'],2,'.','');
$xml.="<item>\n";
$xml.="\t\t<name>".$row['model']."</name>\n";
$xml.="\t\t<link>".HTTP_SERVER."index.php?route=product/product&amp;product_id=".$row['product_id']."</link>\n";
$xml.="\t\t<price>".$row['price']."</price>\n";
$xml.="\t\t<image>".HTTP_SERVER.$row['image']."</image>\n";
$xml.="\t\t<category_full>".$row['name']."</category_full>\n";
$xml.="\t\t<category_link>".HTTP_SERVER."index.php?route=product/category&amp;path=".$row['category_id']."</category_link>\n";
$xml.="\t\t<manufacturer>".$row['name']."</manufacturer>\n";
$xml.="\t\t<model>".$row['model']."</model>\n";
$xml.="</item>\n";
}
fwrite($fp,$xml);

fwrite($fp,'</root>');
fclose($fp);
7. caballero - 25 Февраля, 2012 - 16:06:08 - перейти к сообщению
while($row=mysql_fetch_array($req))
8. Tatjana77 - 25 Февраля, 2012 - 16:17:53 - перейти к сообщению
Уменя в БД
define('DB_PREFIX', 'oc_');

И не правильно формируется запрос

$req=mysql_query("SELECT p.product_id,pc.category_id,cd.name, model,image,price FROM product p INNER JOIN product_to_category pc
ON (pc.product_id=p.product_id) LEFT JOIN category_description cd ON(cd.category_id=pc.category_id) WHERE cd.language_id=3");
9. Dmitrus - 30 Ноября, 2012 - 01:07:00 - перейти к сообщению
Здравствуйте уважаемые форумчане, вот есть похожий код для opencarta для вывода товаров в XML для salidzini.lv, kurpirkt.lv, ну хоть убейся головой об стенку, никак не могу его заставить работать.
Подскажите люди добрые в чём может быть ошибка, у меня одна база данных с префиксом, как я понял в этом коде префикс не указан, как это сделать пока что сам не знаю, префикс к базе "ledl_" может кто подскажет.
Заранее спасибо
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. header("Content-type: text/xml");
  3. // Settings
  4. $website = 'websait';
  5. // Connection
  6. $link = mysql_connect("127.0.0.1", "login", "pass");
  7. $select_db = mysql_select_db("db_name");
  8.  
  9. // Select
  10. $sql = "SELECT product_description.name, product.product_id, product.price, product.image, category.parent_id, product_to_category.category_id
  11. FROM product
  12. LEFT JOIN product_description ON product.product_id=product_description.product_id
  13. LEFT JOIN product_to_category ON product.product_id=product_to_category.product_id
  14. LEFT JOIN category_description ON product_to_category.category_id=category_description.category_id
  15. LEFT JOIN category ON category.category_id=category_description.category_id";
  16. $result = mysql_query($sql) or die (mysql_error());
  17. $xml_output  = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
  18. $xml_output .= "<root>\n";
  19. $prev_value = 0;
  20. while ($line = mysql_fetch_assoc($result)) {
  21. if ($prev_value != $line['product_id']) { $prev_value = $line['product_id'];
  22.   // Echo
  23.   $parent_id = $line['parent_id'];
  24.   $sql2 = "SELECT name FROM category_description WHERE category_id=$parent_id AND language_id=2";
  25.   $result2 = mysql_query($sql2) or die (mysql_error());
  26.   while($parent_name1 = mysql_fetch_assoc($result2)){ $parent_name = $parent_name1['name']; }
  27.   if(isset($parent_name)) {$parent_symbol = ">";}else{$parent_symbol = "";}
  28.  
  29.   $category_id = $line['category_id'];
  30.   $sql3 = "SELECT name FROM category_description WHERE category_id=$category_id AND language_id=2";
  31.   $result3 = mysql_query($sql3) or die (mysql_error());
  32.   while($category_name1 = mysql_fetch_assoc($result3)){ $category_name = $category_name1['name']; }
  33.  
  34.   $xml_output  .= "<item>\n";
  35.   $xml_output  .= "<name>".$line['name']."</name>\n";
  36.   $xml_output  .= "<link>http:///".$website."/index.php?route=product/product&product_id=".$line['product_id']."</link>\n";
  37.   $xml_output  .= "<price>".$line['price']."</price>\n";
  38.   $xml_output  .= "<image>http://".$website.".lv/image/data/".$line['image']."</image>\n";
  39.   $xml_output  .= "<category>".$category_name."</category>\n";
  40.   $xml_output  .= "<category_full>".$parent_name." ".$parent_symbol." ".$category_name."</category_full>\n";
  41.   $xml_output  .= "<category_link>http:///".$website."".$line['category_id']."</category_link>\n";
  42.   $xml_output  .= "</item>\n";
  43. }
  44. }
  45. $xml_output .= "</root>";
  46. echo $xml_output;
  47. ?>

 

Powered by ExBB FM 1.0 RC1