Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Operacje na plikach
tenior
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

Ostrzeżenie: (10%)
X----


Witam,
mam problem z jedną rzeczą, google nie chce mi pomóc to napiszę tutaj, a więc kod:
  1. <?php
  2.  
  3. if(!$_GET['l']){
  4. echo 'Wybierz użytkownika do usunięcia'; exit; }
  5. if(!$_GET['h']){
  6. echo 'Wybierz użytkownika do usunięcia'; exit; }
  7. if(!$_GET['ad']){
  8. echo 'Wybierz użytkownika do usunięcia'; exit; }
  9. $nick = $_GET['l'];
  10. $has = $_GET['h'];
  11. $ad = $_GET['ad'];
  12. $plik1 = "test.list";
  13. $plik2 = "test.usr";
  14. $fg1 = @fopen($plik1,'r+');
  15.  
  16.  
  17. @fclose($fg1);
  18.  
  19. $wzor = ''.$nick.'||'.$has.'||'.$ad.'';
  20. $wzor2 = '['.$nick.']
  21. UserPassword='.$has.'
  22. ServerAdmin='.$ad.'';
  23. ?>


plik test.list zawiera informację w formacie
Kod
karol||nae||1
nobek||jeden||0
lolek||taki||1
cccccccccc||ccccccc||1


natomiast plik test.usr jest nastepujacy
Kod
[karol]
UserPassword=nae
ServerAdmin=1
[nobek]
UserPassword=jeden
ServerAdmin=0
[lolek]
UserPassword=taki
ServerAdmin=1
[cccccccccc]
UserPassword=ccccccc
ServerAdmin=1


Jak widać funkcją GET pobieram zawartość danego użytkownika, w zmiennej $wzor jest napisana linia która znajduję się w pliku test.list, a w $wzor2 jest zawartosc danego uzytkownika z pliku test.usr.
Chodzi o to żeby skrypt usuówał daną zmienną z pliku i zapisał się, czy jest to możliwe?
Go to the top of the page
+Quote Post
Pilsener
post
Post #2





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

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


1. Nie używamy operatorów @ przed nazwami funkcji
2. Przyda Ci się tutek o plikach tekstowych:
http://www.forumweb.pl/viewtopic.php?t=39103
Go to the top of the page
+Quote Post
tenior
post
Post #3





Grupa: Zarejestrowani
Postów: 58
Pomógł: 2
Dołączył: 16.11.2008

Ostrzeżenie: (10%)
X----


ok zrobilem, podziałała funkcja str_replace
teraz tylko nie wiem jak zrobić zeby nie zostawała pusta linia w pliku a zeby ja usuwal
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Pilsener @ 18.03.2009, 20:31:56 ) *
1. Nie używamy operatorów @ przed nazwami funkcji
2. Przyda Ci się tutek o plikach tekstowych:
http://www.forumweb.pl/viewtopic.php?t=39103


Nie wiem dlaczego nie używamy. ;d Jeżeli nie chcemy wysypu błędów, a konfiguracji serwera nie można zmienić...


Co do pytania, ja bym ten pliczek załadował gdzieś do zmiennej.
np.

Kod
$zmienna = file('plik.txt');


Każdy użytkownik (zakładam że nie masz pustych linii) to 3 linie
Pierwszy zatem to $zmienna[0] (nazwa), $zmienna[1] (password), $zmienna[2] (admin)
Kolejny użytkownik zatem przedstawia się jako: $zmienna[3], $zmienna[4], $zmienna[5]

Zrób sobie zmienną np. $users = array();

Nazwa użytkownika: strpos & substr
Hasło & admin = explode('=', $string);

I każdego usera dopisujesz jako:
$users[] = array('name' => $name, 'pass' => $pass, 'isAdmin' => $admin);

Taki mały pomysł. ;d A najlepiej skorzystaj z mysql.
Go to the top of the page
+Quote Post
zelu
post
Post #5





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

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


Pobierz caly plik do tablicy, pozniej usun interesujacy Cie fragment i wrzuc ponownie tresc do pliku nadpisujac stara wersje
Go to the top of the page
+Quote Post
Pilsener
post
Post #6





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

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


Bardzo fajne macie pomysły, ale ciekawy jestem, jak będzie wyglądało Wasze wrzucanie pliku do tablicy przy np. 5 tysiącach rekordów w pliku? Przechowywanie pliku w zmiennej to pomysł mocno kiepawy.

Cytat
jak zrobić zeby nie zostawała pusta linia w pliku a zeby ja usuwal


Masz przecież gotowy kod w tutorialu, który Ci podałem:
  1. <?php
  2. $p_newsy = fopen('newsy.txt','r');
  3. $temp = fopen('temp.txt','a');
  4. flock($temp, 2);
  5. while(!feof($p_newsy)){
  6.   $linia = fgets($p_newsy);
  7.   $_temp2 = explode("||",$linia);
  8.   $nr = rtrim($_temp2[4]);
  9.   if($nr != $_GET['i']){  //pomijamy linię, której id = id rekordu, który chcemy skasować  
  10.      fputs($temp, $linia);      
  11.   }  
  12. }//koniec pętli while
  13. flock($temp, 3);
  14. fclose($p_newsy);
  15. fclose($temp);
  16. unlink('newsy.txt');
  17. rename('temp.txt','newsy.txt');
  18. ?>
- elegancko obrabiamy plik linia po linii i usuwamy tą, której ID, login (czy co tam chcemy) chcemy skasować. Gdy chcemy skasować kilka linijek za jednym zamachem to zamiast $nr dajemy tablicę i sprawdzamy, czy ID rekordów należą do tej tablicy (in_array).

I jak coś robisz to pokaż kod, bo inaczej nikt się domyśli, co tam kombinujesz i nie udzieli pomocy.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 11:53