![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 28.01.2004 Skąd: że znowu ლ(ಠ益ಠლ Ostrzeżenie: (0%) ![]() ![]() |
Mam w pliku tekstowym około 300 linijek danych. Jest to tekst otoczony cudzysłowami, każda linijka kończy się przecinkiem. Poniżej wycinek z pliku:
Kod "linijka pierwsza - tytuł", "Opis linijki pierwszej. Bla bla bla.", "Warszawa", "Jest to stolica Polski.", "Komputery", "Bardzo lubię grać w gry, najlepiej "Tomb Rajder", który jest fajny.", Muszę to przenieść do bazy MySQL (w tabeli "tekst" mam pola id, tytul, tresc). Prosta sprawa ale kompletnie nie potrafię operować na plikach ![]() Wiem tylko, że to będzie tak: - linijka 1 = tytul 1 - linijka 2 = tresc 1 - linijka 3 = tytul 2 - linijka 4 = tresc 2 itd. Jak to zrobić w PHP? -------------------- Kod $kobieta = 'Kobieta zmienną jest...'; |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 133 Pomógł: 8 Dołączył: 23.09.2011 Skąd: Stromiec Ostrzeżenie: (0%) ![]() ![]() |
Ja jestem słabiak, ale zrobiłbym to tak:
Czytamy plik (kiedyś się bawiłem, jakiś fread był od tego) Robimy explode (przecinki) Pętla for wykonywana liczba tablicy z explode /2 Dodajemy do bazy linijkę z tablicy taką jaką nam pokazuje for i następnie dodajemy aż do 4. Nie wiem jak to wytłumaczyć, może spróbuję zrobić ten kod to w edicie dam Edit: Poradziłem sobie, został jedynie przecinek na końcu ale to już sobie go wytniesz jakoś http://m.cezary.pl/test/zpliku.php Ten post edytował CTRL 25.02.2012, 16:39:51 -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 28.01.2004 Skąd: że znowu ლ(ಠ益ಠლ Ostrzeżenie: (0%) ![]() ![]() |
Od rana nad tym siedzę i są efekty
![]() Zrobiłem troszkę inaczej i krócej przy okazji ![]()
a potem w pętli usuwam niepotrzebne cudzysłowy z początków a z końców linijek wywalam przecinek, cudzysłów i znaki końca wiersza. Na razie wyświetlam po dwa na raz, oczywiście zaraz zmienię na wstawianie do bazy danych
-------------------- Kod $kobieta = 'Kobieta zmienną jest...'; |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
file() (podobnie jak i file_get_contents()) zda egzamin tylko dla niedużych plików (powiedzmy, że do 50MB). Skoro używasz file() to równie dobrze możesz użyć file_get_contents() i explode(), ta druga funkcja przy okazji usunie przecinki. Pętla foreach i przepisywanie tablicy za pomocą array_push() jest w ogóle zbędne, co więcej funkcja array_push() może tutaj coś poknocić, choć tak na prawdę niczego w tej chwili nie robi. Zamiast tego można posłużyć się pętlą for i w tej pętli wygenerować zapytanie SQL, które powinno być de facto zapytaniem MULTI-INSERT:
Zamiast zagnieżdżać rtrim() w ltrim() możesz użyć po prostu trim(). Ten post edytował mortus 25.02.2012, 17:24:32 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 322 Pomógł: 15 Dołączył: 29.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Takie coś znalazłem:
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 70 Pomógł: 0 Dołączył: 28.01.2004 Skąd: że znowu ლ(ಠ益ಠლ Ostrzeżenie: (0%) ![]() ![]() |
Widzę, że pojawiła się jeszcze prostsza opcja
![]() Chociaż mój plik nie jest duży (68KB) to mój skrypt wykonuje się prawie 15 sekund. Jak na jednorazowe użycie to ujdzie... ważne że nie ma timeouta ![]() Przypuszczam, że kod użytkownika Barcelona będzie dużo szybszy - wykorzystam przy instalacji całości na serwerze jeśli mój polegnie. Cały mój projekt dotyczy kompletnie czego innego więc nie mam zamiaru skupiać się na importowaniu danych - ważne, że działa. Niemniej jednak dziękuję za pomoc! --- Pojawił się jeden mały problem: źle wyświetlane są niektóre znaki, np. niemieckie umlauty albo znak "stopni" (Celsjusza, nie wiem jak to się nazywa). Plik txt i wszystkie php koduję w utf-8 więc nie wiem dlaczego tak się dzieje... Jakieś wskazówki? -------------------- Kod $kobieta = 'Kobieta zmienną jest...'; |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.08.2025 - 23:03 |