Artykuł dotyczy aktualizacji cen nie opartych na kombinacji atrybutów. Jak to zrobić opisaliśmy w innym artykule.

Są dedykowane moduły do Presta Shop aby to zrobić. Jednak przy odrobinie trudu wystarczy nam jedynie dostęp do PhpMyadmin na serwerze gdzie jest zainstalowany sklep.

Punkt 0 – kopia bezpieczeństwa.

Przed przystąpieniem do działania wykonujemy kopię bezpieczeństwa bazy danych. Nie zajmie nam to długo (2 kliknięcia myszką..) a pozwoli kontrolować bieżącą sytuację.

Wykonanie kopii bezpieczeństwa. W zależności od języka zaplecza znajduje się ta opcja w sekcji:

PL:

Parametry zaawansowane » Backup bazy danych » Przeczytałem ostrzeżenie – utwórz nową kopię zapasową

ENG:

Advanced Parameters » DB Backup » I have read the disclaimer. Please create a new backup.

1) Dostęp do bazy danych.

Dane dostępowe znajdziemy w pliku:


config/settings.inc.php

Kopiujemy dane znajdujące się po tych kluczach i przecinkach pomiędzy apostrofami:


_DB_USER_

_DB_PASSWD_

2) Dostęp do PhpMyAdmin

O to musimy poprosić naszego providera. Najczęstsze znajdowane ścieżki na popularnych hostingach to:

http://adres-sklepu.pl/phpmyadmin

http://sql.adres-sklepu.pl/

Możemy także pobrać w miarę aktualną wersję PhpMyAdmin i ją wgrać do podfolderu na serwerze sklepu. Np. do nowego folderu o nazwie “myadmin“. Wtedy dostęp do PhpMyAdmin będzie pod łączem:

http://sql.adres-sklepu.pl/myadmin

Uwaga! Domyślny adres bazy danych w PhpMyAdmin w skrypcie to “localhost” w zależności od naszego adresu serwera bazy danych (w powyżej wskazanym pliku settings.inc.php) może być on inny. Należy go uwzględnić w konfiguracji naszej instancji PhpMyAdmin w takim wypadku.

3) Wyciągnięcie potrzebnych danych do aktualizacji cen.

Po pomyślnym zalogowaniu do PMA uruchamiamy komendę SQL:


SELECT p.`id_product` , pl.name, p.`quantity` , p.`price`, pl.description
FROM `ps_product` p
LEFT JOIN `ps_product_lang` pl ON pl.id_product = p.`id_product`
WHERE pl.id_lang =6

Uwaga! W zależności od naszego tzw. prefixu (domyślnie to ps_)  w nazwie tabel w bazie danych komenda może być inna. Zwróć także uwagę na numer ID języka. Użyliśmy tutaj ID = 6. Upewnij się czy dla języka polskiego też masz taki numer. Dla aktualizacji cen nie jest to istotne. Bardziej przydaje się do orientacji jaki produkt zmieniamy w kwestii nazwy.

Efektem naszego zapytania jest lista produktów. Eksportujemy ją do pliku CSV dla Excel poprzez link “Export” na dole listy:

Na następnym ekranie wybieramy:

Export Method » Custom » Format » CSV for MS Excel » GO

4) Praca na pliku Exportu

Plik otwieramy poprzez edytor plików dla MS Excel np. domyślny dla MS Office lub Libre Office Calc. Do naszych prac nie ma to znaczenia – możemy wręcz użyć arkusza kalkulacyjnego z Google Docs. Ustawiamy takie rozpoznanie znaków rozdzielających aby w kolejnych kolumnach znalazły się:

  • ID produktu
  • Nazwa produktu
  • Ilość
  • Cena
  • Opis (html)

5) Wgranie cen w podstawowej kolumnie

Modyfikujemy plik Excela wg schematu na obrazku:

Pilnując aby odpowiednie ceny w wierszach (tutaj kolumna B) były przypisane do prawidłowych ID produktów (tutaj kolumna D)

W kolumnie A wpisujemy:


UPDATE `ps_product` SET `price` = '

W kolumnie C wpisujemy:


' WHERE `ps_product`.`id_product` =

W kolumnie E wpisujemy symbol średnika – aby rozdzielić kolejne zapytania:


;

Następnie zaznaczamy wszystkie komórki i wklejamy dane do notatnika lub innego edytora tekstowego (polecamy tutaj darmowy PSPad).

Ostatnim krokiem jest usunięcie w edytorze wystąpień tabulacji. Chodzi o to, że podczas wklejana danych – są one rozdzielone tabulacjami w miejscach gdzie w Excelu były kolumny:

  • Należy zaznaczyć taką tabulację w tekście i ją skopiować
  • Włączyć w edytorze opcję typu  “Znajdź i zamień
  • W szukanym polu wklejamy tabulację
  • W polu do zamiany usuwamy całą treść (zamienimy tabulację na brak znaku)

Po usunięciu tabulacji posiadamy komendy SQL które aktualizują nam bazę danych. A dokładniej ceny. Wklejamy całą zawartość edytora tekstowego w polu wywołania komendy w PhpMyAdmin (zakładka “SQL“).

Gotowe – ceny zaktualizowane.

6) Wgranie cen w kolumnie odpowiedzialnej za multistore

Aby całościowo zmienić ceny należy dodatkowo zaktualizować tabelę:


ps_product_shop

Pojawiła się ona w oprogramowaniu Presta Shop wraz z funkcją multistore.

W zasadzie aktualizacja tej kolumny jest dokładnie taka sama jak przedstawiona wyżej w punkcie 5)

Jedyną różnicą jest zawartość kolumny A:


UPDATE `ps_product_shop` SET `price` = '

 

Share This:

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *