Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Integracja sklepu xml (php,xml,sql)
Forum PHP.pl > Forum > PHP
sal_159.cm
Witam,

Jestem nowy na tym forum. W php dopiero zaczynam, więc proszę o jakieś wskazówki.
Napisałem skrypt który ma pobrać dane z xml, zapisać je w bazie danych i wyświetlić później w sklepie (logiczne).
Problem jest tego rodzaju, że echo nie wywala żadnych błedów a produktów w bazie jak nie było tak nie ma.

oto kawałek skryptu php

function parsuj_produkty(){
$dane = simplexml_load_file('gimmik_b2b_products_list.xml');
$dane = $dane->product_list;
for($x=0;$x<count($dane->product);$x++){
$produkt = $dane->product[$x];
$kat = self::pobierz_kategorie_glowna($produkt->category_id);
$producent = self::pobierz_id_producenta($produkt->brand);
$ilosc = $produkt->quantity;
$cena = $produkt->price_retail_gross;
$product_code = $produkt->product_code;
$nazwa = $produkt->product_name;
$opis = $produkt->product_description;
$parametry = $produkt->product_technical;
$zap = mysql_query("select product_code from products WHERE product_code='$product_code'");
$ile = mysql_num_rows($zap);
if($ile == 0){
echo 'Dodaję nowy produkt<BR>';
mysql_query("INSERT INTO products(`product_id`,
`category_id`,
`producer_id`,
`vat`,
`in_stock`,
`add_date`,
`edit_date`,
`price`,
`promo`,
`warranty`,
`weight`,
`views`,
`category2`,
`category3`,
`sort`,
`main_page`,
`main_page_sort`,
`products_related`,
`other_price`,
`product_code`,
`pkwiu`) VALUES

(NULL,
'$kat',
'$producent',
'23',
'$ilosc',
CURRENT_TIMESTAMP,
CURRENT_TIMESTAMP,
'$cena',
'',
'0',
'', '0', '0', '0', '0', '', '0', '', '0', '$product_code', '');");
$idp = mysql_insert_id();
/////////////////// DODAWANIE OPISU ///////////////
$opis = $produkt->product_description .'<h3>Dane techniczne</h3>'. $produkt->product_technical .'<h3>Skład Zestawu</h3>'. $produkt->product_set . '<h3>Do uruchomienia</h3>'.$produkt->product_to_run . $film;
$opis = str_replace("'","`",$opis);
mysql_query("INSERT INTO prod_translations(`id_transl`, `pid`, `product_name`, `description`, `params`, `jm`, `options`, `active`, `lang`, `isdefault`) VALUES (NULL, '$idp', '$nazwa', '$opis', '$parametry', '', '', '1', 'pl', '');");
//////////////////// DODAWANIE ZDJĘĆ PRODUKTU ORAZ ICH POBIERANIE /////
for($y=0;$y<count($dane->product[$x]->photos);$y++){
$nazwa_pliku_oryginal = $dane->product[$x]->photos[$y]->photo[0];
$zdjecie_url = @file_get_contents($dane->product[$x]->photos[$y]->photo[0]);
$nazwa_pliku = explode('/',$dane->product[$x]->photos[$y]->photo[0]);
$nazwa_pliku = $nazwa_pliku[count($nazwa_pliku)-1];
$roz = explode('.',$nazwa_pliku);
$plik = md5(md5(md5($roz[0])));
mysql_query("INSERT INTO gfx(`gfx_id`, `prod_id`, `main_gfx`, `name`, `unic_name`, `gfx_sort`) VALUES (NULL, (SELECT product_id FROM products WHERE product_code='".$dane->product[$x]->product_code."' LIMIT 1), '$main_gfx', '$nazwa_pliku_oryginal', '$nazwa_pliku', '$gfx_sort');");
$fp = fopen('_var/gfx/'.$plik, "a");
flock($fp, 2);
fwrite($fp, $zdjecie_url);
flock($fp, 3);
fclose($fp);
echo 'Dodałem '.$x+$y.' zdjęć<BR>';
}
}
else{
echo 'Produkt już istnieje. Aktualizuję stan magazynowy<BR>';
mysql_query("update products set in_stock='$ilosc' where product_code='$product_code'");
}
}

}





bede bardzo wdzięczny za jakiekolwiek wskazówki.

Pozdrawiam
Lolek13
po pierwsze jak mozesz wrzuc to w znaczniki php bo tak nic tutaj nie widac.

Po drugie bledy wyswietlasz tak :

  1. ini_set('display_errors', '1');
darko
po drugie nigdzie nie widać mysql_connect, po trzecie obsługuj przynajmniej podstawowe informacje od mysql, np.
  1. mysql_connect('xx', ..) or die(mysql_error());
sal_159.cm
  1. function parsuj_produkty(){
  2. $dane = simplexml_load_file('gimmik_b2b_products_list.xml');
  3. $dane = $dane->product_list;
  4. for($x=0;$x<count($dane->product);$x++){
  5. $produkt = $dane->product[$x];
  6. $kat = self::pobierz_kategorie_glowna($produkt->category_id);
  7. $producent = self::pobierz_id_producenta($produkt->brand);
  8. $ilosc = $produkt->quantity;
  9. $cena = $produkt->price_retail_gross;
  10. $product_code = $produkt->product_code;
  11. $nazwa = $produkt->product_name;
  12. $opis = $produkt->product_description;
  13. $parametry = $produkt->product_technical;
  14. $zap = mysql_query("select product_code from products WHERE product_code='$product_code'");
  15. $ile = mysql_num_rows($zap);
  16. if($ile == 0){
  17. echo 'Dodaję nowy produkt<BR>';
  18. mysql_query("INSERT INTO products(`product_id`,
  19. `category_id`,
  20. `producer_id`,
  21. `vat`,
  22. `in_stock`,
  23. `add_date`,
  24. `edit_date`,
  25. `price`,
  26. `promo`,
  27. `warranty`,
  28. `weight`,
  29. `views`,
  30. `category2`,
  31. `category3`,
  32. `sort`,
  33. `main_page`,
  34. `main_page_sort`,
  35. `products_related`,
  36. `other_price`,
  37. `product_code`,
  38. `pkwiu`) VALUES
  39.  
  40. (NULL,
  41. '$kat',
  42. '$producent',
  43. '23',
  44. '$ilosc',
  45. CURRENT_TIMESTAMP,
  46. CURRENT_TIMESTAMP,
  47. '$cena',
  48. '',
  49. '0',
  50. '', '0', '0', '0', '0', '', '0', '', '0', '$product_code', '');");
  51. $idp = mysql_insert_id();
  52. /////////////////// DODAWANIE OPISU ///////////////
  53. $opis = $produkt->product_description .'<h3>Dane techniczne</h3>'. $produkt->product_technical .'<h3>Skład Zestawu</h3>'. $produkt->product_set . '<h3>Do uruchomienia</h3>'.$produkt->product_to_run . $film;
  54. $opis = str_replace("'","`",$opis);
  55. mysql_query("INSERT INTO prod_translations(`id_transl`, `pid`, `product_name`, `description`, `params`, `jm`, `options`, `active`, `lang`, `isdefault`) VALUES (NULL, '$idp', '$nazwa', '$opis', '$parametry', '', '', '1', 'pl', '');");
  56. //////////////////// DODAWANIE ZDJĘĆ PRODUKTU ORAZ ICH POBIERANIE /////
  57. for($y=0;$y<count($dane->product[$x]->photos);$y++){
  58. $nazwa_pliku_oryginal = $dane->product[$x]->photos[$y]->photo[0];
  59. $zdjecie_url = @file_get_contents($dane->product[$x]->photos[$y]->photo[0]);
  60. $nazwa_pliku = explode('/',$dane->product[$x]->photos[$y]->photo[0]);
  61. $nazwa_pliku = $nazwa_pliku[count($nazwa_pliku)-1];
  62. $roz = explode('.',$nazwa_pliku);
  63. $plik = md5(md5(md5($roz[0])));
  64. mysql_query("INSERT INTO gfx(`gfx_id`, `prod_id`, `main_gfx`, `name`, `unic_name`, `gfx_sort`) VALUES (NULL, (SELECT product_id FROM products WHERE product_code='".$dane->product[$x]->product_code."' LIMIT 1), '$main_gfx', '$nazwa_pliku_oryginal', '$nazwa_pliku', '$gfx_sort');");
  65. $fp = fopen('_var/gfx/'.$plik, "a");
  66. flock($fp, 2);
  67. fwrite($fp, $zdjecie_url);
  68. flock($fp, 3);
  69. fclose($fp);
  70. echo 'Dodałem '.$x+$y.' zdjęć<BR>';
  71. }
  72. }
  73. else{
  74. echo 'Produkt już istnieje. Aktualizuję stan magazynowy<BR>';
  75. mysql_query("update products set in_stock='$ilosc' where product_code='$product_code'");
  76. }
  77. }
  78.  
  79. }
  80.  
darko
Przekaż funkcji zasób do połączenia z bazą danych.
Lolek13
Cytat(darko @ 24.07.2012, 14:51:02 ) *
po drugie nigdzie nie widać mysql_connect, po trzecie obsługuj przynajmniej podstawowe informacje od mysql, np.
  1. mysql_connect('xx', ..) or die(mysql_error());


http://php.net/manual/en/function.mysql-connect.php

Zacznij od tego
sal_159.cm
  1. <?
  2.  
  3. define('DB_HOST','localhost');
  4. define('DB_USER','user');
  5. define('DB_PASS','password');
  6. define('DB_DB','shop');
  7. $connect = mysql_connect(DB_HOST, DB_USER, DB_PASS)
  8. or die('Błąd połączenia z bazą danych');
  9. mysql_select_db(DB_DB,$connect) or die('nie znaleziono bazy danych');
  10. mysql_query('SET CHARSET utf8');



połączenie z baza
darko
  1. function parsuj_produkty($dbResource){
  2. //..
  3. $zap = mysql_query("select product_code from products WHERE product_code='$product_code'", $dbResource);
  4.  
  5. i teraz zmienną $connect przekaż funkcji:
  6. parsuj_produkty($connect);
Lolek13
  1. mysql_query("INSERT INTO products(`product_id`,
  2. `category_id`,
  3. `producer_id`,
  4. `vat`,
  5. `in_stock`,
  6. `add_date`,
  7. `edit_date`,
  8. `price`,
  9. `promo`,
  10. `warranty`,
  11. `weight`,
  12. `views`,
  13. `category2`,
  14. `category3`,
  15. `sort`,
  16. `main_page`,
  17. `main_page_sort`,
  18. `products_related`,
  19. `other_price`,
  20. `product_code`,
  21. `pkwiu`) VALUES
  22.  
  23. (NULL,
  24. '.$kat.',
  25. '.$producent.',
  26. '.23.',
  27. '.$ilosc.',
  28. CURRENT_TIMESTAMP,
  29. CURRENT_TIMESTAMP,
  30. '.$cena.',
  31. '',
  32. '0',
  33. '', '0', '0', '0', '0', '', '0', '', '0', '.$product_code.', '');");


Dodaj kropki do wstawianych zmiennych tak jak tu ... mozliwe, ze bedzie trzeba dodac jeszcze " "
sal_159.cm
zmiany wprowadzone, dalej nie działa.

w które miejsce dokładnie wstawić "
Lolek13
  1. NULL,
  2. '".$kat."',
  3. '".$producent."',
  4. '23',
  5. ''.$ilosc."',
  6. CURRENT_TIMESTAMP,
  7. CURRENT_TIMESTAMP,
  8. '".$cena."',
  9. '',
  10. '0',
  11. '', '0', '0', '0', '0', '', '0', '', '0', '".$product_code."', '');


u mnie dopiero cos takiego ostatnio zadzialalo ...
sal_159.cm
  1. (NULL,'".$kat."','".$producent."','23','".$ilosc."',CURRENT_TIMESTAMP,CURRENT_TIMESTAMP,
  2. '"$cena."','','0','', '0', '0', '0', '0', '', '0', '', '0', '".$product_code."', '');");



dokładnie tak ma to wyglądać ?
Lolek13
tak u mnie dopiero takie cos zdalo egzamin.
sal_159.cm
wywala błąd

  1. Parse error: syntax error, unexpected T_VARIABLE in /import.php on line 156
Lolek13
pewnie brakuje Ci gdzieś srednika, klamry, nawiasu lub cos w tym stylu
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.