Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] [csv] Timer, obsługa plików CSV i polskie znaki
viper2000
post 12.01.2018, 02:03:51
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.01.2018

Ostrzeżenie: (0%)
-----


Witam

Właśnie zaczynam swoją przygodę z PHP więc na początku prosiłbym o nieco wyrozumiałości.

Aktualnie potrzebuje zrobić prosty skrypcik który będzie:
1) odczytywał dane z pliku na CSV (znajdującego się na zdalnym serwerze),
2) odczytanie dane będą przypisane do zmiennych,
3) kilka opercji obliczeniowych i
4) na koniec wyświetlenie końcowego efektu na ekran (a w nieco dalszej przyszłości również zapisanie tych wyników do bazy MySQL)


Aktualnie mój skrypt wygląda następująco:
  1. <?php
  2. class csv extends MySQLi
  3. {
  4. public function import($file)
  5. {
  6. $file=fopen($file, 'r');
  7.  
  8.  
  9.  
  10. while ($row=fgetcsv($file, 1000, ";"))
  11. {
  12.  
  13.  
  14. $Kod= $row[0];
  15. $Stan= $row[1];
  16. .
  17. .
  18. .
  19. $Rok= $row[9];
  20.  
  21.  
  22. echo $Kod , "<BR>";
  23. echo $Stan , "<BR>" ;
  24. .
  25. .
  26. .
  27. echo $Rok , "<BR>" ;
  28.  
  29.  
  30. print "<pre>";
  31. $KOD_2 = $row[6];
  32. $KOD_2 .= "-";
  33. $KOD_2 .= $row[0];
  34. echo $KOD_2;
  35. print "</pre>";
  36. }
  37. }
  38. }
  39.  
  40. ?>


A oto problemy jakie spotkałem na swojej drodze i bardzo prosiłbym o pomoc w ich rozwiązaniu:
1) W chwili obecnej plik CSV wczytuje ręcznie z pliku znajdującego się na dysku lokalnym komputera. Jak zrobić aby plik ten był odczytywany z (obcego) serwera www (do którego mam link)
2) W pliku CSV (po otwarciu go w notatniku) polskie znaki wyświetlają się poprawnie, ale w przeglądarce już nie. Jak zrobić aby w przeglądarce poprawnie wyświetlały się polskie znaki?
3) Jak poprawić ten kod aby odczytywanie plików ZAWSZE zaczynało się od DRUGIEJ linii ? (Pierwsza linia zawiera nagłówki których nie potrzebuje wczytywać gdyż mam odpowiednio nazwane zmienne dzięki czemu wiem jakie dane są pobrane z poszczególnych kolumn pliku CSV)
4) Nie udało mi się w dostępnych materiałach znaleźć informacji na temat tego aby język PHP posiadał coś takiego jak TIMER (znany z innych języków programowania). Jak w związku z tym zmusić skrypt aby pewne działania były wykonywane cyklicznie co godzinę i to bez względu na to co robi użytkownik.


Za pomoc z góry dziękuje.

Ten post edytował viper2000 12.01.2018, 02:08:24
Go to the top of the page
+Quote Post
viking
post 12.01.2018, 08:10:08
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


1. Można zwykłe file_get_contents ale nie wszystkie serwery zezwalają na taki dostęp do zasobów. Łatwiej użyć biblioteki https://github.com/guzzle/guzzle
2. Ustaw prawidłowe nagłówki
3. Zacznij iterować forem od innej linii
3. CRON


--------------------
Go to the top of the page
+Quote Post
viper2000
post 12.01.2018, 22:12:07
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.01.2018

Ostrzeżenie: (0%)
-----


1) mam nadzieje że na płatnym hostingu w home.pl nie będzie z tym żadnego problemu - w wolnej chwili przetestuje i w razie problemów będę kontynuował ten wątek.
2) Jakie nagłówki?? W pliku csv ? Bo jeśli tak to nie będę w stanie nic z tym zrobić ponieważ docelowo plik ten ma być wczytywany z zewnętrznego serwera www( do którego mam tylko link, a plik jest udostępniony jedynie z prawami do odczytu i pobierania na dysk). Jeśli możesz to rozwiń swoją myśl bo nie bardzo rozumiem w jaki sposób mam ustawić te nagłówki.
3) Aby skorzystać z pętli FOR to potrzebuje (przed rozpoczęciem pętli) znać liczbę wszystkich linii w pliku. Jak w takim układzie odczytać liczbę linii w pliku CSV questionmark.gif
4) Poczytałem sobie o CRON - w tym względzie wszystko wydaje się jasne, mam nadzieje że nie pojawią się problemy gdy zacznę pisać kod :-) A narzazie DZIĘKUJĘ ZA PODPOWIEDŹ
Go to the top of the page
+Quote Post
viking
post 12.01.2018, 22:20:51
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Home to jeden wielki problem więc nie gwarantuję. Artykuł o kodowaniu znaków ze stopki. Pierwszy z brzegu przykład fgetcsv i count.


--------------------
Go to the top of the page
+Quote Post
viper2000
post 14.01.2018, 01:10:19
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.01.2018

Ostrzeżenie: (0%)
-----


Nieznacznie przerobiłem swoją funkcję oczekując tego iż na moim ekranie wyświetli się aki sam zestaw informacji jak wcześniej oraz dodatkowo ilość linii w pliku csv .
Niestety wyświetla mi się teraz TYLKO ilość linii w pliku CSV , a nie wyświetlają się wartości zapisane w pliku CSV (tak jak by ta pentla FOR w ogóle się nie wykonała)
Możecie powiedzieć mi dlaczego pętla for w ogóle się nie wykonuje ( a bynajmniej nie widzę na ekranie efektów tej pętli), nie ma też żadnych błędów.


Oto nieco zmieniony tekst mojej funkcji:
  1. <?php
  2. class csv extends MySQLi
  3. {
  4. public function import($file)
  5. {
  6. $a=0;
  7. $file=fopen($file, 'r');
  8.  
  9. while ($row=fgetcsv($file, 1000, ";"))
  10. {
  11. $a++;
  12. }
  13. echo "ilość wierszy to: ",$a ;
  14.  
  15. for($licznik=$a; $licznik>1; $licznik--)
  16. {
  17.  
  18. $row= fgetcsv($file, 1000, ";");
  19. $Kod= $row[0];
  20. $Stan= $row[1];
  21. .
  22. .
  23. .
  24. $Rok= $row[9];
  25.  
  26.  
  27. echo $Kod , "<BR>";
  28. echo $Stan , "<BR>" ;
  29. .
  30. .
  31. .
  32. echo $Rok , "<BR>" ;
  33.  
  34.  
  35. print "<pre>";
  36. $KOD_2 = $row[6];
  37. $KOD_2 .= "-";
  38. $KOD_2 .= $row[0];
  39. echo $KOD_2;
  40. print "</pre>";
  41. }
  42. }
  43. }
  44.  
  45. ?>
Go to the top of the page
+Quote Post
SmokAnalog
post 14.01.2018, 01:23:07
Post #6





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Zrób sobie podstawowy debug - zobacz co masz w $a, a w pętli wypisz sobie $licznik.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 10:30