[php] baza na plikach txt - jak przejść do następnej lini

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
hub_lan
Posty: 3
Rejestracja: czw lut 26, 2004 12:36 am
Lokalizacja: Kraków

[php] baza na plikach txt - jak przejść do następnej lini

Post autor: hub_lan »

Witam
mam nastepujący kłopot
(od razu mówie że w temacie php jestem cieniutki dla tego pliss o odpowiedzi jak dla matoła)
a teraz po kolei:

pobieram dane z pliku txt/csv linię i rozbijam ja na części
potem wyświetlam je po kolei i jest OK (przy pierwszej linii)

teraz pytanie jak zmusić php-a żeby przeczytał inną linie niż pierwszą ??
a konkretnie tę linię ktorą ja chcę ??

to jest przykładowa zawartść pliku txt/csv: "dane.csv"

Kod: Zaznacz cały

ID1|Imie1|Nazwisko1|Nazw Rod1|Data ur1
ID2|Imie2|Nazwisko2|Nazw Rod2|Data ur2
ID3|Imie3|Nazwisko3|Nazw Rod3|Data ur3
ID4|Imie4|Nazwisko4|Nazw Rod4|Data ur4
to jest plik *.php odczytujący dane:


[php]
<?php
$pl1="dane"
$pl2=".csv";
$pl=$pl1.$pl2;
$fs = fopen("$pl", "r");
$linia = fgets($fs, 800);
$id = explode("|", $linia);
echo("
<table><TR><td>".$id[0]."</td><td>".$id[1]."</td>
<td>".$id[2]."</Td><td>".$id[3]."</Td><td>".$id[4]."</Td></tr></table>
");
fclose($fs);
php?>
[/php]

z góry dzięki wielgachne za podpowiedź

wojtek vel hub_lan
Krzysztof Aszkiełowicz
Zaczyna działać
Zaczyna działać
Posty: 458
Rejestracja: pn maja 26, 2003 9:29 pm
Lokalizacja: Warszawa
Kontakt:

Re: [php] baza na plikach txt - jak przejść do następnej lini

Post autor: Krzysztof Aszkiełowicz »

funkcja [manual]file[/manual] zachowuje w tablicy plik np linia 1 pliku file.txt to:

[php]<?php
$file = file("file.txt");
echo $file[0];
?>[/php]
Michał Fikus
Przelotem
Przelotem
Posty: 242
Rejestracja: sob cze 08, 2002 6:39 pm
Lokalizacja: Wejherowo

Re: [php] baza na plikach txt - jak przejść do następnej lini

Post autor: Michał Fikus »

Cóż, użycie funkcji file() może być bardzo nieekonomiczne przy większej bazie. Lepiej wrzucić w pętle Twój skrypt i sprawdzać, czy spełniony jest warunek - np. pierwsza zmienna ma wartość 5. Dzięki temu możemy zaoszczędzić na ilości przetwarzanych danych. Przykładowo gdy mamy 50.000 lini a szukana dana jest w 5, to pętla wykona się 5 razy, pobierze pięc lini, a w wypadku użycia file() zostanie zaangażowana pamięć wymagana dla 50k lini.
hub_lan
Posty: 3
Rejestracja: czw lut 26, 2004 12:36 am
Lokalizacja: Kraków

Re: [php] baza na plikach txt - jak przejść do następnej lini

Post autor: hub_lan »

Witam ponownie
wielkie dzięki za wszystko
pomogło i chula jak miało
wojtek vel hub_lan
ps:
... Lepiej wrzucić w pętle Twój skrypt i sprawdzać, czy spełniony jest warunek - np. pierwsza zmienna ma wartoœć 5...
a mógłbym poprosić troszkę jaœniej
tak jak pisałem w php jestem jeszcze dziewicš ;)
wixor
Przelotem
Przelotem
Posty: 336
Rejestracja: śr gru 31, 2003 10:18 pm
Lokalizacja: Wrocław

Re: [php] baza na plikach txt - jak przejść do następnej lini

Post autor: wixor »

Tzn. żeby przeglądać plik linia po linii a nie ładować cały i później brać interesującą linię
Ostatnio zmieniony ndz lut 29, 2004 11:12 am przez wixor, łącznie zmieniany 1 raz.
wixor
Przelotem
Przelotem
Posty: 336
Rejestracja: śr gru 31, 2003 10:18 pm
Lokalizacja: Wrocław

Re: [php] baza na plikach txt - jak przejść do następnej lini

Post autor: wixor »

Chodzi o coś takiego:
[php]<?php
function getline($linenum)
{
$fd=fopen($file,"r"); flock($fd,LOCK_SH);
for($i=0;$i<$linenum;$i++) fscanf($fd,"%[^\n\r]",$line);
flock($fd,LOCK_UN);fclose($fd);
return $line;
}
?>[/php]
hub_lan
Posty: 3
Rejestracja: czw lut 26, 2004 12:36 am
Lokalizacja: Kraków

Re: [php] baza na plikach txt - jak przejść do następnej lini

Post autor: hub_lan »

witam
dzięki wielkie
co prawda moja "baza" ma na razie jakieś 350 linii
po 70 kolumn ale stale rośnie (przybywa linii)
i na przyszłość moze się przydać to rozwiązanie
jeszcze raz dzieki
wojtek vel hub_lan
ODPOWIEDZ