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:
1 |
config/settings.inc.php |
Kopiujemy dane znajdujące się po tych kluczach i przecinkach pomiędzy apostrofami:
1 2 |
_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:
1 |
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:
1 |
UPDATE `ps_product` SET `price` = ' |
W kolumnie C wpisujemy:
1 |
' WHERE `ps_product`.`id_product` = |
W kolumnie E wpisujemy symbol średnika – aby rozdzielić kolejne zapytania:
1 |
; |
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ę:
1 |
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:
1 |
UPDATE `ps_product_shop` SET `price` = ' |
[…] Na początek nawiązujemy połączenie z bazą danych. Jak uzyskać parametry policzenia i zalogować się do PhpMyAdmin – opisaliśmy w innym naszym artykule. […]
[…] Na początek nawiązujemy połączenie z bazą danych. Jak uzyskać parametry policzenia i zalogować się do PhpMyAdmin – opisaliśmy w innym naszym artykule. […]
[…] Pozyskujemy także link i logowanie do narzędzia phpmyadmin. […]