Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> dodawanie i usuwanie danych z pliku
dublinka
post
Post #1





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Witam,

Mam plik z taka budowa:

  1. niewazne||14||14||28


Budowa tego po tym NIEWAZNE moze byc losowa.Moze zawierac taka jak teraz ale moze miec tylko jedna:
  1. niewazne||14

dwie:
  1. niewazne||14||28

lub i trzy:
  1. niewazne||14||14||28


Jak zastapic jedna z nich ale nie linie tylko pomiedzy || i potem zapisac ?

jesli przesylam formularzem 14 a tam jest juz 14 i nie moze byc zastapiona lecz dopisana i miesz postac

wczesniej
  1. niewazne||14

lub
  1. niewazne||14||14


lub jeszcze bardziej zamieszane

Moga byc max 3 wiecej nie

np. 14||14||28 lub 28||14|14 lub 14||14 lub 28 samo lub 14 samo
to jest dla mnie nie do przeskoczenia.

jak to zrobic ?

Inne rozwiazanie budowy nie wchodzi w gre bo duzo byloby do zmiany. Niby proste ale kurka nie wiem jak to ugrysc.

Bardzo Was prosze o pomoc.

Ten post edytował dublinka 20.02.2013, 17:46:35
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
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%)
-----


Borys, to raczej plik danych a nie konfiguracyjny więc użycie file odpada ze względu na zużycie pamięci.

Dopisywanie do pliku jest proste:
  1. //inaczej ktoś doda || i nam się rozleci
  2. $tresc = str_replace("|", "\\| ", $tresc);
  3.  
  4. $uchwyt=fopen($pliczek, 'a');
  5. flock($uchwyt, 2);
  6. $wpis = 'nick||'.$tresc.'||'.time().'||'.$nr."\r\n";
  7. fputs($uchwyt, $wpis);
  8. flock($uchwyt, 3);
  9. fclose($uchwyt);


Z edycją gorzej, trzeba parsować plik linia po linii podmieniając szukaną linię na nową. Plik obrabia się mniej więcej tak:
  1. $p_newsy = fopen('newsy.txt','r');
  2. while(!feof($p_newsy)){
  3. $linia = fgets($p_newsy);
  4. echo $linia.'<br />';
  5. }


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





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


Cytat(Pilsener @ 20.02.2013, 22:19:00 ) *
Borys, to raczej plik danych a nie konfiguracyjny więc użycie file odpada ze względu na zużycie pamięci.
Jakiej pamieci (IMG:style_emoticons/default/biggrin.gif) To zaledwie kilka kb w pliku (IMG:style_emoticons/default/biggrin.gif)
A z tym przykladem to pojechales. Wogole bez sensu.Nie rozumiesz chyba pytania.


Juz jest mniej wiecej ok ale dochodze do momentu samego podmienienia linii konkretnej i nie wiem jak to zrobic.

Mam pole select z 2 mozliwosciami: 14, 28
Teraz w pliku powiedzmy jest tak:

  1. niewazne||14||28
  2. niewazne||14
  3. niewazne||14||28||14


i potrzebuje zmienic linie 2 czyli index 1 na taki schemat:

  1. niewazne||14||14


Teraz posylam z pola select 14 (ta druga 14 ktora ma sie zapisac w pliku)
Samo pobranie linii i dodanie kolejnego czyli w tym momencie 14 jest zrobione lecz nie wiem jak to podmienic i zapisac.

Ktos pomoze ? Sam zapis i podmiana. Czyli druga linia przykladowo.

  1. $foo = file($f);
  2. unset($foo[$u]);
  3. $f = fopen($f,'w');
  4. flock($f, LOCK_EX);
  5. fwrite($f,str_replace('\r','',join('',$foo)));
  6. flock($f ,LOCK_UN);
  7. fclose($f);


To przyklad do usuniecia linii. unset($foo[1]) usuwa linie z indexem 1 czyli ta o ktora mi chodzi ale to usuwa tylko.Jak ją podmienic (IMG:style_emoticons/default/questionmark.gif) z trescia przykladowo taka ?

  1. $nowatresc="niewazne||14||14";


Ten post edytował dublinka 22.02.2013, 10:50:09
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 15:26