Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: TXT --> MySQL
Forum PHP.pl > Forum > Bazy danych > MySQL
sereczyn
Witam,

Potrzebuje pomocy w wypełnieniu tabeli danymi z pliku.

Fragment pliku:
27.01.2010 9:34 - Dostęp użytkownika (odstepy miedzy danymi mają po kilka spacji, tego na forum nie widać) K:ZAMEK DOM U:Wojciech
27.01.2010 10:01 - Dostęp użytkownika K:ZAMEK DOM U:Janek
27.01.2010 10:20 - Dostęp użytkownika K:ZAMEK DOM U:Janek
27.01.2010 10:38 - Dostęp użytkownika K:ZAMEK DOM U:Wojciech
27.01.2010 10:46 - Dostęp użytkownika K:ZAMEK BIURO U:Irek


Pola w tabeli:
id, data, godzina, opis, zamek, uzytkownik

Plik jest generowany automatycznie, nie mam możliwości zmiany jego formatu.
Dla pewności mogę przesłać plik na maila.

Z góry dziękuje za pomoc.
230005
Wczytujesz plik za pomocą tego: http://pl.php.net/manual/en/function.file-get-contents.php , liczysz ile tych spacji tam jest, robisz explode(), jako delimiter podając te właśnie spacje (np " "). Jak masz tablicę, to już nic prostszego smile.gif.
sereczyn
A co jeżeli ilość spacji nie jest zawsza taka sama?
230005
No to masz trudniej smile.gif. Nie wiem na ile twój przykład z pierwszego posta jest odpowiadający rzeczywistości, ale jeśli plik wygląda dokładnie tak, to najpierw przepuść po stringu wyrażenie regularne z trzeciego posta stąd: http://www.webdeveloper.com/forum/showthread.php?t=121293 , oczywiście przerób aby odpowiadało to twoim potrzebom, podobnym wyrażeniem regularnym wyciągnij godziny, dalej, już prościej - badasz pozycję wystąpienia K: i U: i wycinasz odpowiednią część, to samo dla usera. Wszystko do tablicy i masz z górki. Metoda jest niedoskonała i zawodna, ale jak element oddzielający poszczególne rekordy może być różny, to tylko to mi przychodzi do głowy. Chyba, że to nie spacje tylko tabulatory?
Pilsener
Żadne file_get_contents bo zamuli serwer, o ile się wczyta w ogóle.

Najpierw plik musisz przeparsować linia po linii:
  1. while(!feof($uchwyt)){
  2. $linia = rtrim(fgets($uchwyt));
  3. echo $linia.'<br />';
  4. }
- oczywiście uchwyt to to, co zwraca funkcja fopen. Musisz obrobić każdą linijkę, sprawdzić, co nie trzeba wyciąć etc. a następnie stworzyć z tego plik .csv, gdzie poszczególne pola są rozdzielane tabulacją. Po prostu bierzesz linijkę po linijce z pliku, obrabiasz i zapisujesz do nowego pliku. Potem wystarczy plik wrzucić do bazy używając zapytania LOAD DATA INFILE.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.