PHP + MYSQL + Skrypty POWERSHELL

0

Jest to moja pierwsza aplikacja przy użyciu PHP+MySQL. Nie jestem programistą PHP na codzień, jestem inżynierem ale planuję to zmienić w tym roku, to moje hobby i nie mam super zaawansowanego poziomu.
Mam napisaną aplikację w PHP odpytującą bazę danych w MySQL (tutaj wszystko jest ok), w której użytkownik po prostu dodaje i filtruje sobie swoich kontrahentów. Zrobiłem to dla swojego wujka w 1 osobowej firmie, a przy okazji chciałem zobaczyć jak wygląda PHP, żeby porównać go sobie z Java i obrać kierunek rozwoju.
Baza danych w MySQL jest zaciągana z pliku .txt który otrzymuję w danej lokalizacji sieciowej, napisałem skrypt w powershellu który gdy wykryje dodany plik .txt to kopiuje go do mnie na dysk. I teraz pytanie czy zapytanie MySQL "LOAD DATA INFILE..." wykonać tylko przy zaciągnięciu pliku za pomocą POWERSHELL? Czy w aplikacji PHP, tylko nie wiem jak to zrobić żeby wykonywała się tylko przy dodaniu nowego pliku? Nowy plik zawiera stare i nowe rekordy, które wczytuję do bazy danych.
Za każdą pomoc będę dziękował.

1

Ciężko coś powiedzieć. Może pokaż strukturę tego pliku txt. Czy plik jest nadpisywany, tzn czy jakieś dane do niego są dodawane? Może po prostu tą część pliku omijać?
Jeśli chodzi o całokształt to ja jednak chyba zrobiłbym taska w Windows Task Menager, który wykonywałbym skrypt PHP w CLI cyklicznie (częstotliwość do ustalenia). Task z kolei pobierałby i parsował ten plik tekstowy. Próbując wykonać wszystko z PowerShella nie masz żadnej walidacji.

0

Dziękuje za odpowiedź. Wykonałem to wszystko z poziomu powerschella. Najpierw kopiuje ten plik do siebie, następnie zmieniam jego kodowanie na utf8 bez BOM. A potem uruchamiam w Powerschellu plik .bat w którym jest LOAD DATA INFILE ...... Wszystko gra, odpytuje się tylko wtedy gdy zauważy nowy przeniesiony plik :)

1

OK. No ale jak ktoś Ci w pliku napisze np. NIP jako "kowalski" to zrobisz inserta do bazy? Dane przed wpisaniem do bazy powinny być sprawdzone, a to lepiej wykonać od strony PHP.
No chyba, że nie rozumiem dokładnie gdzie masz problem.

0

Ogólnie to nikt w tym pliku nic nie zmieni. On jest zaciągany tylko wtedy kiedy zostanie dostarczony w takiej formie przez klienta. Ja muszę go tylko zaciągnąć do bazy, więc bez sensu byłoby go odpytywać co chwilę.
Nie sprawdze poprawności danych, ale też nikt mi tych danych nie rozrzuci. Jednak czy mógłbyś mi przybliżyć jak sprawdzić poprawność danych przed wpisaniem do bazy danych?

1

Jak w pliku txt dostarczanym na udział sieciowy nikt nic nie zmieni? Dostarcza dane więc go uzupełnia, a wpisać tam może wszystko.
Jeśli chodzi o walidację, to poczytaj. Temat zbyt rozległy. Tu masz przykład sprawdzania numeru NIP:
http://phpedia.pl/wiki/Walidacja_numeru_NIP
Poczytaj o walidacji formularzy bo tu masz podobnie. Jeśli ktoś specjalnie lub przez pomyłkę w pole NIP wpisze "ala ma kota" to można mu np. wysłać maila z informacją, że w pliku jest błąd.
A sprawdzać musisz wiele, ot chociażby długość tekstu, tego czy ktoś nie wstawił spacji na początku lub końcu wyrazu itd.
Czyli jeszcze raz, jak już masz plik u siebie przenoszony jakimś skryptem to do niego możesz dodać również wykonanie funkcji PHP CLI i wykonać wszystkie potrzebne funkcje

0

OK. Widzę że temat jest bardzo rozległy. Będę się szkolił od połowy stycznia, bo chcę dostać pracę bardziej stacjonarną.
Plik który otrzymuję ja jako .txt generowany jest automatycznie z innego systemu, na ten moment wystarcza to co zrobiłem. Ale dziękuje bardzo za pokazanie tego problemu :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1