Na początku przyznam że jestem początkujący i to bardzo z programowaniem w php - aż tego żałuję bo muszę dodać parę dodatkowych funkcji działającego już kodu - jest to kod odpowiedzialny za importowanie danych z pliku csv i wprowadzanie ich do bazy danych na serwerze...
Tak po krótce co robi kod:
Mamy istniejąca bazę na której są jakieś produkty, następnie chcemy zaimportować nowe produkty do bazy przy użyciu pliku csv (standardowe kodowanie UTF-8, separator ";" separator wielu wartości ",").
Kod importuje określone dane z pliku csv takie jak:
nazwa produktu
kod produktu
EAN
ID podatku (w tym wypadku ID 1)
ilość
cena hurtowa
cena netto <--> automatycznie generuje cenę brutto, następnie importowany jest:
opis skrócony
opis główny
meta tytuł
meta opis
meta tagi
oraz wartości logiczne mówiące czy wprowadzony produkt ma być aktywny czy nie
i czy zdjęcie istniejące już ma usunąć...
Minus jest taki że kod opiera się na ID wpisu do bazy danych produktu - jeśli w pliku csv nie podajemy ID pod jakim dany produkt ma zostać wpisany czy był wpisany jeśli się powtarza to on wprowadzi go jak nowy - czyli innymi słowy dubluje produkty nowe z tymi już istniejącymi - nie rozróżnia ich wogóle bo ID nie jest używane takie samo w csv i w bazie.
Modyfikacja, którą staram się dodać do tego kodu będzie robiła wpierw:
- porównanie kodu produktu (z pliku csv) z kodem produktu już istniejącym w bazie, jeśli kod będzie inny to wprowadzi produkt jako nowy a jeśli kody będą takie same to przeprowadzi aktualizację istniejącego już w bazie produktu, następujące pola zostaną zaktualizowane:
- ilość
- cena hurtowa
- cena netto
Reszta pozostanie bez zmian.
Dodatkowo kod powinien zapisywać do zewnętrznego pliku txt na serwerze - kody produktów wprowadzonych nadpisanych (uaktualnione).
oto przykładowy format zapisu csv:
Cytat
161110;885976023884;RNLNVX20001;X201 3626PW9;Lenovo;101;2967.90;3650.52;0;1;1;1;0;X201 3626PW9;X201 3626PW9;X201 3626PW9;X201 3626PW9
164576;645743090125;RNLNVX28503;X220 W7P64 2520M/4G/320/Int/;Lenovo;101;4197.80;5163.29;3;1;1;1;0;X220 W7P64 2520M/4G/320/Int/;X220 W7P64 2520M/4G/320/Int/;X220 W7P64 2520M/4G/320/Int/;X220 W7P64 2520M/4G/320/Int/
162260;645743542051;RNLNVZV0009;ThinkPad L512 2598-CTO-329510;Lenovo;101;2613.56;3214.68;0;1;1;1;0;ThinkPad L512 2598-CTO-329510;ThinkPad L512 2598-CTO-329510;ThinkPad L512 2598-CTO-329510;ThinkPad L512 2598-CTO-329510
74694;ABEANAB02359;ABFELT01450;Plecak na notebook BG Fast Track 75914;Fellowes;95,113;142.01;206.11;0;1;1;1;0;Plecak na notebook BG Fast Track 75914;Plecak na notebook BG Fast Track 75914;Plecak na notebook BG Fast Track 75914;Plecak na notebook BG Fast Track 75914
114597;043859559404;ABFELT02011;Torba Thrio Lady 15' bordowa 5594501;Fellowes;95,113;92.61;134.41;0;1;1;1;0;Torba Thrio Lady 15' bordowa 5594501;Torba Thrio Lady 15 bordowa 5594501;Torba Thrio Lady 15 bordowa 5594501;Torba Thrio Lady 15 bordowa 5594501
164576;645743090125;RNLNVX28503;X220 W7P64 2520M/4G/320/Int/;Lenovo;101;4197.80;5163.29;3;1;1;1;0;X220 W7P64 2520M/4G/320/Int/;X220 W7P64 2520M/4G/320/Int/;X220 W7P64 2520M/4G/320/Int/;X220 W7P64 2520M/4G/320/Int/
162260;645743542051;RNLNVZV0009;ThinkPad L512 2598-CTO-329510;Lenovo;101;2613.56;3214.68;0;1;1;1;0;ThinkPad L512 2598-CTO-329510;ThinkPad L512 2598-CTO-329510;ThinkPad L512 2598-CTO-329510;ThinkPad L512 2598-CTO-329510
74694;ABEANAB02359;ABFELT01450;Plecak na notebook BG Fast Track 75914;Fellowes;95,113;142.01;206.11;0;1;1;1;0;Plecak na notebook BG Fast Track 75914;Plecak na notebook BG Fast Track 75914;Plecak na notebook BG Fast Track 75914;Plecak na notebook BG Fast Track 75914
114597;043859559404;ABFELT02011;Torba Thrio Lady 15' bordowa 5594501;Fellowes;95,113;92.61;134.41;0;1;1;1;0;Torba Thrio Lady 15' bordowa 5594501;Torba Thrio Lady 15 bordowa 5594501;Torba Thrio Lady 15 bordowa 5594501;Torba Thrio Lady 15 bordowa 5594501
W poniższym kodzie istotne są jedynie następujące partie (importujące produkty):
case $this->entities[$this->l('Products')]:
public function productImport()
A tu istniejący już kod, który w pełni działa ale mam problemy z jego modyfikacją:
Plik z kodem php udostępniam na stronie:
http://www.kkp-gezler.pl/sklep/download/AdminImport.txt