Skocz do zawartości

Zdjęcie
- - - - -

Wyciąganie produktów z bazy Presta shop.


29 odpowiedzi w tym temacie
  • Zaloguj się, aby dodać odpowiedź
zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 14 lipca 2014 - 09:19

#1

Hej, chcę wyciągnąć listę produktów z presty. Mam jednak problem z łączeniem tabel (dawno to było na studiach :D )

Mianowicie, chcę wyciągnąć:

id_product
price
condition

z tabeli ps_product

do tego:

name
link_rewrite
description

z tabeli ps_product_lang

do tego

link_rewrite
z kategorii
ps_category_lang

Podsumowując, chcę wyciągnąć listę produktów, gdzie dane z najdują się w 3 tabelach.

Coś takiego wymyśliłem, ale nie do końca działa:

 

SELECT p.id_product, p.price, p.condition, pl.name, pl.link_rewrite, pl.description, c.link_rewrite AS "kategoria FROM ps_product p 
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) 
LEFT JOIN ps_category_lang c ON (p.id_category_default = c.id_category)
WHERE p.active = 1 AND pl.id_lang = 1

  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 14 lipca 2014 - 09:26

#2

Jest do tego gotowa metoda:

$productObj = new Product();
$products = $productObj -> getProducts($id_lang, 0, 0, 'id_product', 'DESC' );

lub:

Product::getProducts($id_lang, 0, 0, 'id_product', 'DESC' );

Użytkownik unbreak edytował ten post 14 lipca 2014 - 09:29

  • 1

webDeveloper


zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 14 lipca 2014 - 09:30

#3

Mam dostęp tylko do panelu i tak korzystam z Menadżera SQL, czy jakoś tak. Te metody gdzie się odpala?

No i zależy mi na eksporcie do CSV.


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 14 lipca 2014 - 09:36

#4

Aaaa, to pisz że tylko SQL :D

SELECT p.id_product, p.price, p.condition, pl.name, pl.link_rewrite, pl.description, c.link_rewrite FROM ps_product p 
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) 
LEFT JOIN ps_category_lang c ON (p.id_category_default = c.id_category)
WHERE p.active = 1 AND pl.id_lang = 1

To powinno być OK.

 

 

I co konkretnie potrzebujesz, bo eksport do csv jest wbudowany w panel, wchodzisz w katalog > Produkty i tam masz taką ikonkę eksportu :D


Użytkownik unbreak edytował ten post 14 lipca 2014 - 09:39

  • 0

webDeveloper


zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 14 lipca 2014 - 09:43

#5

Wiem, że tam jest, ale to mi nie eksportuje wszystkich produktów. Eksportuje tylko tyle ile widzi na aktualnej stronie, a jak przelacze na kolejna podstrone i wyeksportuje to i tak mi eksportuje te same. Jakies losowe :) 

Potrzebuję liste produktow z:

- id
- nazwa
- nazwa kategorii (link_rewrite)
- stan (nowy itd)
- dostępność
- data dostepnosci
- cena
- link do produktu

- link do zdjecia produktu


Z tego co doczytałem to permalinki do produktów nie są trzymane w polu w bazie i trzeba składać je z linku do sklepu, link_rewrite kategorii, link_rewrite produktu i ".html".


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 14 lipca 2014 - 09:55

#6

Można też wyciągać link tak: http://mydomain.com/...uct=ID_PRODUKTU i już rewrite sobie z tym poradzi jeżeli tylko są włączone FRIENDLY_URLe.

 

U mnie ten SQL działa, tylko nie daje link_rewrite, a nie mam możliwości sprawdzenia teraz jakie tam dokładnie kolumny są, a nie pamiętam :D

SELECT p.id_product, p.price, p.condition, pl.name, pl.link_rewrite as product_link, c.link_rewrite as category_link, pl.description FROM ps_product p 
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) 
LEFT JOIN ps_category_lang c ON (p.id_category_default = c.id_category)
WHERE p.active = 1 AND pl.id_lang = 1

  • 0

webDeveloper


zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 14 lipca 2014 - 09:58

#7

Można też wyciągać link tak: http://mydomain.com/...uct=ID_PRODUKTU i już rewrite sobie z tym poradzi jeżeli tylko są włączone FRIENDLY_URLe.

 

U mnie ten SQL działa, tylko nie daje link_rewrite, a nie mam możliwości sprawdzenia teraz jakie tam dokładnie kolumny są, a nie pamiętam :D

U mnie to samo. A jak bym  chciał do selecta dorzucić coś typu:

 

'http://nazwasklepu.pl/' + c.link_rewrite + '/' + pl.link_rewrite + '.html' AS link
 
FROM ps_product p 

Link chcę wyciągnąć, a ma on postać:

 

http://nazwa_sklepu.com/link_rewrite_kategorii/id_produktu-link_rewrite_produktu.html

  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 14 lipca 2014 - 10:21

#8

Niestety z tym link_rewrite dla categorii nie jest tak łatwo, trzeba szukać też po parentach etc, więc proponuję takie rozwiązanie: 

SELECT p.id_product, p.price, p.condition, pl.name, pl.description ,
concat('www.strona.pl/index.php?controller=product&id_product=',p.id_product) as full_link
FROM ps_product p 
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) 
LEFT JOIN ps_category_lang c ON (p.id_category_default = c.id_category)
WHERE p.active = 1 AND pl.id_lang = 1

Tak jak pisałem, to też jest link do produktu, a jak wejdziesz na niego to zostaniesz przekierowany na friendly url.


  • 1

webDeveloper


zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 14 lipca 2014 - 10:26

#9

Super, dzięki :) jest progress. Jeszcze kilka rzeczy muszę wyciągnąć. Link do zdjęcia na przykład,ale moze sobie poradze :)

A jak to jest z kodowaniem? Bo w exelu mi krzaczy. Myslę ze po prostu użyję exelowskiej funkcji "Znajdź i zamień" i sobie z tym poradze. Ale pytam, bo moze to idzie jakos ogarnac.


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 14 lipca 2014 - 11:59

#10

W panelu przy zapytaniu masz możliwość wybrania kodowania, utf-8 powinno być ok jeżeli baza jest dobrze zrobiona, u mnie nic nie krzaczy. Jak krzaczy to możesz się pobawić z iso.


  • 1

webDeveloper


zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 14 lipca 2014 - 12:08

#11

W panelu przy zapytaniu masz możliwość wybrania kodowania, utf-8 powinno być ok jeżeli baza jest dobrze zrobiona, u mnie nic nie krzaczy. Jak krzaczy to możesz się pobawić z iso.

Ok. z tym sobie jakoś poradziłem.

A masz pojęcie jak wygiągnąć zdjęcie produktu? Bo te linki, co ja widzę, są znowu z dupy...

 

http://nazwa.com/id_zdjęcia-thickbox_default/nazwa-produktu.jpg

To znowu nie pyknie, bo nazwa produktu jest jako ten link_rewrite


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 14 lipca 2014 - 12:28

#12

Akurat link_rewrite produktu mi działał, kategorii nie działał :) Ale machnij coś takiego:

SELECT p.id_product, p.price, p.condition, pl.name, pl.description ,
concat('www.strona.pl/index.php?controller=product&id_product=',p.id_product) as full_link,
concat( 'www.strona.pl', '/img/p/',mid(p.id_product,1,1),'/', if (length(p.id_product)>1,concat(mid(p.id_product,2,1),'/'),''),if (length(p.id_product)>2,concat(mid(p.id_product,3,1),'/'),''),if (length(p.id_product)>3,concat(mid(p.id_product,4,1),'/'),''),if (length(p.id_product)>4,concat(mid(p.id_product,5,1),'/'),''), p.id_product, '.jpg' ) AS image_link
FROM ps_product p 
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) 
LEFT JOIN ps_category_lang c ON (p.id_category_default = c.id_category)
WHERE p.active = 1 AND pl.id_lang = 1

  • 1

webDeveloper


zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 14 lipca 2014 - 12:32

#13

Sprawdzę. Na razie poradziłem sobie wyciągając jakieś fotki tak:

 

concat('www.nazwa.com/', cl.id_image, '/', pl.link_rewrite, '.jpg') as photo_link

ale to pewnie naiwny sposób.

UPDATE:
Ok, uzyłem Twojego, super dziala, dzieki :)

Wiesz moze  jeszcze dlaczego przy 4k produktów wyeksportowanych kilkaset randomowych jest rozsypanych? W excelu dane mi do zlych komórek wpisuje itd.

Jakieś babole w bazie danych? Nie jest to problem rozszerzenia komórek w excelu, bo sprawdzalem :P myslalem, ze moze tylko sie nie mieszcza dane.


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 14 lipca 2014 - 13:00

#14

Podeślij na priva ten pliczek zobaczymy.


  • 1

webDeveloper


zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 14 lipca 2014 - 13:09

#15

Podeślij na priva ten pliczek zobaczymy.

Poszło na gmaila


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 14 lipca 2014 - 13:18

#16

Wszystko jasne.

Tak jak pisałem na SB csv to plik tekstowy, a nie excelowy (to że excel go otwiera to tylko taki bajer).

W którym średnik oznacza nową 'kolumnę', a 'enter' oznacza nowy wiersz. Jak eksportujesz opisy produktów, to w niektórych występują entery, dlatego też pojawiają się w nowych wierszach. Nie eksportuj opisów to będzie wszystko ołk :D

 

Albo zamiast eksportuj daj wyświetl, pojawi Ci się tabela i ją kopiuj do excela/worda.

 

Albo użyj replace() i pozamieniaj w opisach entery (<br> i/lub \n) na np spacje.


Użytkownik unbreak edytował ten post 14 lipca 2014 - 13:19

  • 1

webDeveloper


zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 14 lipca 2014 - 13:24

#17

Wszystko jasne.

Tak jak pisałem na SB csv to plik tekstowy, a nie excelowy (to że excel go otwiera to tylko taki bajer).

W którym średnik oznacza nową 'kolumnę', a 'enter' oznacza nowy wiersz. Jak eksportujesz opisy produktów, to w niektórych występują entery, dlatego też pojawiają się w nowych wierszach. Nie eksportuj opisów to będzie wszystko ołk :D

 

Albo zamiast eksportuj daj wyświetl, pojawi Ci się tabela i ją kopiuj do excela/worda.

 

Albo użyj replace() i pozamieniaj w opisach entery (<br> i/lub \n) na np spacje.

No przecież to  jest oczywiste...

Nawet jak miałem problem z kodowaniem, to w EXCELU używałem importu z pliku i tam definiowałem ręcznie, czym są dane oddzielane...

No ale nie pomyślałem, że przez to rozsypuje się w excelu... O ja głupi :(

BIG THANKS :)


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 14 lipca 2014 - 14:49

#18
SELECT p.id_product, p.price, p.condition, pl.name, replace(pl.description,'\n',' /br') as description ,
concat('www.strona.pl/index.php?controller=product&id_product=',p.id_product) as full_link,
concat( 'www.strona.pl', '/img/p/',mid(p.id_product,1,1),'/', if (length(p.id_product)>1,concat(mid(p.id_product,2,1),'/'),''),if (length(p.id_product)>2,concat(mid(p.id_product,3,1),'/'),''),if (length(p.id_product)>3,concat(mid(p.id_product,4,1),'/'),''),if (length(p.id_product)>4,concat(mid(p.id_product,5,1),'/'),''), p.id_product, '.jpg' ) AS image_link
FROM ps_product p 
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) 
LEFT JOIN ps_category_lang c ON (p.id_category_default = c.id_category)
WHERE p.active = 1 AND pl.id_lang = 1

Dzięki temu nowe linie zostaną zastąpione przez string " /br" :) i nie powinno się już sypać.


  • 1

webDeveloper


zonic

    WT Elite

  • 2 911 postów
    • Czas spędzony online: 134d 2h 28m 23s
472
Znakomita!
  • LocationToruń

Napisano 14 lipca 2014 - 14:55

#19

W tym badziewny panelu tylko SELECTA czystego chyba mogę użyć. REPLACE jest zabronione...


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 14 lipca 2014 - 14:58

#20

Faktycznie, no to dupa :<


  • 1

webDeveloper






Podone tematy Collapse

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych