Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> TXT --> MySQL
sereczyn
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 31.01.2010

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


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.

Ten post edytował sereczyn 31.01.2010, 20:05:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
230005
post
Post #2





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


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.
Go to the top of the page
+Quote Post
sereczyn
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 31.01.2010

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


A co jeżeli ilość spacji nie jest zawsza taka sama?

Ten post edytował sereczyn 1.02.2010, 21:24:16
Go to the top of the page
+Quote Post
230005
post
Post #4





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

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


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?
Go to the top of the page
+Quote Post
Pilsener
post
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Ż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.
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 Aktualny czas: 19.08.2025 - 07:02