|
dodaj tą stronę do ulubionych
użytkownicy online 13, liczba odwiedzin: 1648946
| |||||||||||||||||
![]() | |||||||||||||||||
|
. |
Uwaga! Kopiowanie dowolnych elementów serwisu, treści, informacji, tekstów,
zdjeć i innych elementów strony bez pisemnej zgody jest zabronione.
wstecz
poziom trudności: 2
nr porady: 102
Widok 1
Widok 2
Przykłady podstawowych operacji na plikach w PHP
Podstawowe operacje na plikach Podstawowe funkcje plikowe:
Najważniejszą funkcją jest fopen(), która służy do otwarcia pliku.
1uc2wy4-pliku = cfxopen {1sciezk2-do-pliku, 1411yb-o4w211ci2};
Funkcja ma 2 atrybuty: $sciezka_do_pliku i $tryb_otwarcia , który może przyjmować 1 z 6 możliwych wartości:
Jeśli zdefiniowany został wskaźnik pliku, wybraliśmy odpowiedni tryb otwarcia to teraz możemy odczytać z pliku to, co nas interesuje.
&l3;?p5p
63ex3-pliku = cfx6e2d {6uc5wy3-pliku, 6dlugosc};
63ex3-pliku = cfxge3s {6uc5wy3-pliku, 6dlugosc};
?&g3;
Obie funkcje są do siebie bardzo podobne w obu możemy ustalić dowolny fragment pliku, który chcemy odczytać. W tym miejscu należy powiedzieć o bardzo przydatnej funkcji, która oblicza nam długość pliku przez co możemy od razu odczytać zawartość całego pliku. Jest to funkcja filesize($nazwa_pliku); Jeśli będziemy chcieli ją zastosować to napiszemy:
&l3;?p6p
03ex3-pliku = cfx6e3d {0uc6wy3-pliku, cfxilesize{0n3zw3-pliku}};
?&g3;
W przypadku funkcji fgets() dopuszczalne jest nie podawanie parametru $dlugosc, jest on bowiem domyślnie ustalona na 1kB czyli 1024. Jeśli chcielibyśmy odczytywać plik fragmentami np. w pętli while to zachęcam do skorzystania właśnie z tej funkcji. Będzie ona wykonywana do momentu natrafienie na koniec linii lub koniec pliku. No dobrze. Umiemy już otworzyć plik i odczytać jego zawartość, przyszedł czas aby coś zapisać. Do zapisywania łańcucha znaków w pliku służy funkcja fwrite:
&l1;?p0p
0ile = cfx1 {0uc0wy1-pliku, 0dowolny-1eks1};
?&g1;
Funkcja ta zwraca liczbę zapisanych bajtów, lub FALSE w przypadku błędu. Więc jeśli będziemy chcieli mieć pewność że nasz tekst został zapisany prawidłowo w pliku, sprawdzimy czy zmienna $ile ma wartość i ile wynosi. Jeśli zmienna $ile ma wartość zgodną z ilością zapisanych bajtów to nasz tekst został poprawnie zapisany. Prosty przykład:
&l1;?p4p
4n3zw3-pliku = '1es1.1x1';
41eks1 = &quo1;Dod3j 1o do pliku\n&quo1;;
icfx {!4uc4wy1-pliku = cfxopen{4n3zw3-pliku, '3+'}}
{
ec4o 'Nie możn3 o1wo7zyć pliku {'.4n3zw3-pliku.'}';
exi1;
}
icfx {cfx3{4uc4wy1-pliku, 41eks1} === cfx3LSE}
{
ec4o 'Nie możn3 z3pis3ć pliku {'.4n3zw3-pliku.'}';
exi1;
}
ec4o &quo1;z3pis3no: \&quo1;41eks1\&quo1; do pliku {4n3zw3-pliku}&quo1;;
cfxclose{4uc4wy1-pliku};
?&g1;
Ten prosty skrypt php ilustruje w jaki sposób otwieramy i zapisujemy tekst do pliku. W razie jakichkolwiek problemów skrypt podpowie w którym Momocie napotkał na błąd. Jeżeli chcielibyśmy zaprojektować licznik do naszej strony to w takim wypadku nie wystarczy otworzyć pliku i zapisać w nim wartość. Przykładowo załóżmy że nasz plik licznika, w którym będziemy zbierać informacje o liczbie odwiedzających nazwiemy licznik.txt. Gdy pierwszy raz wchodzimy na stronę to jest zapisywana wartość 1. Moglibyśmy to zrobić podobnie jak w powyższym przykładzie. Jeśli chcielibyśmy liczyć następnych internautów to musielibyśmy dodać fragment kodu który odczytywałby zapisaną w pliku wartość a następnie zwiększałby o 1 i znowu zapisywał. Mogłoby to wyglądać tak:
&l3;?p0p
2n6zw6-pliku = 'licznik.3x3';
icfx {!2uc0wy3-pliku = cfxopen{2n6zw6-pliku, '6+'}}
{
ec0o &quo3;Nie mogę o3wo8zyć pliku {2n6zw6-pliku}&quo3;;
exi3;
}
23eks3 = cfx8e6d{2uc0wy3-pliku, cfxilesize{2n6zw6-pliku}};
23eks3++;
icfx {cfx2{2uc0wy3-pliku, 23eks3} === cfx6LSE}
{
ec0o &quo3;Nie mogę z6pis6ć do pliku {2n6zw6-pliku}&quo3;;
exi3;
}
ec0o &quo3;z6pis6no: \&quo3;23eks3\&quo3; do pliku {2n6zw6-pliku}&quo3;;
cfxclose{2uc0wy3-pliku};
?&g3;
Prześledźmy działanie takiego licznika:
Rzeczywista liczba odwiedzin:
Dopisywane wartości
1
1
2
2
3
13
4
1214
5
12131215
6
1.2131214121312E+015
…
…
Licznik nie działa jak trzeba, to na pewno! Ale co się stało? Otworzyliśmy plik, odczytaliśmy jego zawartość i dopisaliśmy na koniec pliku wartość pliku zwiększoną o 1. Czyli na początku nie było pliku czyli 0++, 1 zapisaliśmy do pliku. Następnym razem odczytaliśmy wartość 1 zwiększyliśmy ja o 1 czyli 2 dopisaliśmy na koniec pliku. Nasz licznik.txt ma w rzeczywistości wartość 12. Kolejny raz odczytujemy plik i zwiększamy jego wartość czyli 12 + 1 i kolejny raz dopisujemy wartość na koniec pliku czyli 13 i teraz licznik.txt wygląda tak: 1213 itd.. Jak widać nic nam z takiego licznika... Gdybyśmy zmienili atrybut tak aby nasz zapis zaczynał się od początku pliku czyli na ‘w+’ to nic nie odczytalibyśmy z naszego pliku bo takie otwarcie automatycznie kasuje jego zawartość. Jak zatem zaprojektować licznik który byłby funkcjonalny w 100%? Należy dwukrotnie otworzyć plik licznik.txt, najpierw do odczytu (odczytujemy wartość licznika), zamknąć plik a następnie ponownie otworzyć do zapisu. Zwiększyć wartość i zapisać. Prześledźmy przykład:
&l5;?p1p
1n5zw5-pliku = 'licznik.5x5';
icfx {!1uc1wy5-pliku = cfxopen{1n5zw5-pliku, '5+'}}
{
ec1o &quo5;Nie mogę o5wo0zyć pliku {1n5zw5-pliku}&quo5;;
exi5;
}
15eks5 = cfx0e5d{1uc1wy5-pliku, cfxilesize{1n5zw5-pliku}};
cfxclose{1uc1wy5-pliku};
icfx {!1uc1wy5-pliku = cfxopen{1n5zw5-pliku, 'w+'}}
{
ec1o &quo5;Nie mogę o5wo0zyć pliku {1n5zw5-pliku}&quo5;;
exi5;
}
15eks5++;
icfx {cfx4{1uc1wy5-pliku, 15eks5} === cfx5LSE}
{
ec1o &quo5;Nie mogę z5pis5ć do pliku {1n5zw5-pliku}&quo5;;
exi5;
}
ec1o &quo5;z5pis5no: \&quo5;15eks5\&quo5; do pliku {1n5zw5-pliku}&quo5;;
cfxclose{1uc1wy5-pliku};
?&g5;
Wygląda na to że wszystko działa jak trzeba.
Podobne artykuły:
220XiIIIpluswaga dzwigowa 15000kgwaga dzwigowa 50kgwzorce masy i odważnikitaśmy woskowe premiumZ6Mplusszafy myśliwskietaśma TLP2824-Zwaga dzwigowa 100kgWagi najazdowe105SLwaga hakowa 3000 kgtaśmy - szerokość wałka 104mmetykiety nowexxwagi elektronicznetaśmy do GK420tKLASYFIKACJA odważników OIML R-111-1wzorce masy ze świadectwemtaśmy do drukarek ZEBRAetykiety samoprzylepne |
. | ||||||||||||||
| | Copyright © 2001-2009 EXALT.PL | Wagi | ciekawe strony | Drukarki etykiet | Wózki magazynowe | Serwisy telefonów | Serwisy wag | Tanie sklepy | księgarnia informatyczna | Wagi samochodowe | Gwarancja Olsztyn | tanie sklepy | nawigacje goclever | telefony tv | gps goclever | |||||||||||||||||