Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Operacje na plikach
Forum PHP.pl > Forum > Przedszkole
tenior
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?
Pilsener
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
tenior
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
Fifi209
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.
zelu
Pobierz caly plik do tablicy, pozniej usun interesujacy Cie fragment i wrzuc ponownie tresc do pliku nadpisujac stara wersje
Pilsener
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.