Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyciaganie n lini z pliku, +podzial na strony
dem
post
Post #1





Grupa: Zarejestrowani
Postów: 96
Pomógł: 7
Dołączył: 24.01.2006
Skąd: lublin/wawa

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


Jestem w trakcie pisania downloadu opartego na pliach. Kazda kategoria ma swoj plik a w nim kazda linia ma odpowiednie informacje o pliku (url, nazwa,opis, itd). Mój problem nad którym myśle juz od dawna polega na tym jak stworzyć podział na strony oparty na ilosci wyciagnietych lini z pliku. Jak zrobić aby skrypt wyciąnął pierwsze n lini i zrobił podział na strony z taką samą ilością informacji opartych na kolejnych n lini? jeśli ktoś nie jest wstanie dać mi gotowca(a zauważyłem, że jesteście na to strasznie cieci - nie wiem dlaczego), to prosze chociąż o podanie mechanizmu działania i potrzebnych do tego funkcji (zestawienie tych funkcji)

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
TomASS
post
Post #2





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Jeśli dobrze zrozumiałem, to masz jakąś liczbę linii i chcesz ją stronicować. Natomiast z gotowcami to się mylisz: szanowny kolega nospor stworzył świetną klasę do stronicowania którą można znaleźć tutaj.


--------------------
Go to the top of the page
+Quote Post
dem
post
Post #3





Grupa: Zarejestrowani
Postów: 96
Pomógł: 7
Dołączył: 24.01.2006
Skąd: lublin/wawa

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


thnx

chyba juz rozwiazalem swoj problem:

Cytat
To rozwiązanie nie wymaga przechowywania w pamięci całego pliku. Jest to ważne przy jednoczesnej pracy wielu instancji tego skryptu. Zużycie całej pamięci fizycznej doprowadzi do korzystania z pamięci wirtualnej, przez co prędkość działania skryptu znacznie spadnie.

Złym pomysłem jest korzystanie z funkcji file() jeśli zachodzi potrzeba odczytania tylko jednej linii z pliku. Takie rozwiązanie:

    $plik = file('plik');
    $szukana_linia = $plik[1];
 

jest bardzo nieefektywne. Wczytywany jest cały plik, podczas gdy potrzebna jest tylko jedna linia. Wydajniejszy jest poniższy kod. Wydajność zależy od wielkości pliku - np. dla pliku zawierającego 1000 linii zysk jest około 400-krotny.

    $fp = fopen('plik', 'r');
    fgets($fp);
    $szukana_linia = fgets($fp);
    fclose($fp);
Go to the top of the page
+Quote Post
TomASS
post
Post #4





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


1. To może zapodaj jak to rozwiązałeś
2. A co ma ten cytat do tego tongue.gif


--------------------
Go to the top of the page
+Quote Post
dem
post
Post #5





Grupa: Zarejestrowani
Postów: 96
Pomógł: 7
Dołączył: 24.01.2006
Skąd: lublin/wawa

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


Cytat(TomASS @ 2006-01-31 10:51:12)
1. To może zapodaj jak to rozwiązałeś
2. A co ma ten cytat do tego tongue.gif

no tak, że na podstawie tego cytatu wiem jak wyciagnąc jedna linia z pliku(dowolna linia)... a jeśli wiem jak wyciągnąc jedna linia to moge to równie dobrze zrobić dla n koljnych lini .. czy nie?smile.gif

wlasnie biore sie za potestowanie tego co napisał leon na swojej stronie i dowiem sie czy dokładnie o to mi chodziło... jak mi sie uda wkleje tu kodzik ;-)

** cytat ten, tez, powiedzial to o co mi chodzilo... aby nie tworzyc n indexow tablicy dla kazdej lini(bo po co, jesli ma byc podzial na strony) tylko te linie ktore chce...

*** pytanie teraz tylko czy dam rade to zrobic poprawnie :E

Ten post edytował dem 31.01.2006, 12:00:41
Go to the top of the page
+Quote Post
mike
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


1. Za pomocą file() tworzysz tablicę.
2. Za pomocą arra_splice() wycinasz kawałek tablicy, poczyanjąc od dowolnego miejsca, dowolną długość. Czyli wyciągasz ileś linii winksmiley.jpg
3. Za pomocą implode() możesz złożyć ja do kupy, jako łącznika używając entera, czyli "\n"
Go to the top of the page
+Quote Post
dem
post
Post #7





Grupa: Zarejestrowani
Postów: 96
Pomógł: 7
Dołączył: 24.01.2006
Skąd: lublin/wawa

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


Cytat(mike_mech @ 2006-01-31 11:02:22)
1. Za pomocą file() tworzysz tablicę.
2. Za pomocą arra_splice() wycinasz kawałek tablicy, poczyanjąc od dowolnego miejsca, dowolną długość. Czyli wyciągasz ileś linii winksmiley.jpg
3. Za pomocą implode() możesz złożyć ja do kupy, jako łącznika używając entera, czyli "\n"

heh..nie powiedziałem tego na poczatku.. w sumie powinienem najpierw o to spytać... czy wczytanie np. 400 lini jest bardzo obiciązające? mi sie wydaje, ze jest wiec chcialem jakos uniknac wczytywania do tablicy calego pliku :E

ale i tak thnx bo nie znałem pt. 2 :]

*** yyy..jak ustawic wskaznik na poczatku dowolnej lini?biggrin.gif kurde, trudne to

Ten post edytował dem 31.01.2006, 12:41:27
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: 21.08.2025 - 00:34