Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Płaska baza danych
Forum PHP.pl > Forum > Przedszkole
kanwilu
Witam!
Mam problem z edycja rekordów .
Dajmy na to mam baze.txt a w niej:

Cytat
Krzysiek|&&|24 marca 2001|&&|Bardzo fajna strona|&&|krzysiek@przyklad.pl
Bartek|&&|26 marca 2001|&&|Ciekawy serwis ... |&&|bartek@przyklad.pl
Ania|&&|28 marca 2001|&&|Interesująca witryna|&&|ania@przyklad.pl

Dorota|&&|5 maja 2001 r.|&&|Bardzo fajna witryna ...|&&|dorota@przyklad.pl



Teraz dajmy na to, że chce edytować tylko np. rekodr, gdzie jest imie Ania (zmienić na jakieś inne ).

Jak to zrobić z poziomu przęgladarki, główkuje nad kodem, ale nic sensownego mi do głowy nie przychodzi...
Z góry dzia Rkingsmiley.png
SongoQ
uzyj funkcji explode, raz do dzielenia na rekordy a 2 raz do podzielenia na pola.
kanwilu
Z tym nie ma problemu (z podziałem na rekordy), ale jak się dobrać do tych rekordów (czyt. edytować je?).
revyag
Wrzuć je sobie w jakiś formularz. Np pole input albo textarea.
strife
questionmark.gif
  1. <?php
  2.  
  3.  
  4. $string = 'user|dane|id|time';
  5.  
  6. $s = explode('|', $string);
  7. foreach($s as $n => $da)
  8. {
  9.  
  10.  if ($n == 1) // ktore pole chcemy edytowac
  11.  {
  12.  
  13.  $da = 'dane trala'; // zamina dane na to.
  14.  
  15.  }
  16.  
  17.  $array[] = $da; // nadpisanie calosci w tabeli
  18.  
  19. }
  20. print_r($array);
  21.  
  22. ?>
kanwilu
Niestety ja mam plik oddzielny.Skrypt jest oddzielony od bazy: skrypt.php, baza.txt . Tutaj jest właśnie sęk...
Mimo wszystko dzięki za pomoc biggrin.gif
strife
Cytat(kanwilu @ 2005-05-24 14:20:15)
Niestety ja mam plik oddzielny.Skrypt jest oddzielony od bazy: skrypt.php, baza.txt . Tutaj jest właśnie sęk...
Mimo wszystko dzięki za pomoc biggrin.gif

Tak więc odczytaj plik baza.txt przez fopen" title="Zobacz w manualu PHP" target="_manual, fread" title="Zobacz w manualu PHP" target="_manual, a potem go robij przez explode" title="Zobacz w manualu PHP" target="_manual
questionmark.gif
kanwilu
Właśnie tak się starałem robić. Pamiętajmy jednak, że chce edytować tylko jeden rekord, więc nie bardzo wiem jakie dać atrybuty przy otwarciu. Musi w końcu zamienić ten jeden atrybut. NIe może skasować innych rekordów w bazie.

P.S. Eh jaki ja jestem męczący tongue.gif
SongoQ
Otwierasz plik,
blokujesz,
ladujesz do tablicy,
modyfikujesz,
zwalniasz i zamykasz
kanwilu
Ech nie o to pewnie chodziło...No nie wiem jak to zrobić....Kombinuje, narazie wymyśliłem coś takiego:

  1. <?php
  2.  
  3. $plik = fopen(&#092;"dane.txt\", \"a+\");
  4. flock($plik,2);
  5.  
  6. $string = file(&#092;"dane.txt\");
  7.  
  8. $s = explode('|&&|', $string);
  9. foreach($s as $n => $da)
  10. {
  11.  
  12. if ($n == 1) // ktore pole chcemy edytowac
  13. {
  14.  
  15.    $da = 'dane trala'; // zamina dane na to.
  16.    
  17. }
  18.  
  19. $array[] = $da; // nadpisanie calosci w tabeli
  20.  
  21. }
  22. print_r($array);
  23.  
  24. fputs($plik, $da); 
  25. flock($plik,3);
  26. fclose($plik);
  27.  
  28.  
  29. ?>
nospor
file zwraca tablicę nie string. W tablicy są kolejne wiersze z pliku
  1. <?php
  2.  
  3. $ar=file('jakisplik');
  4. foreach ($ar as $line)
  5. {
  6. //w $line masz pojedynczą linię. rób se teraz co chcesz
  7. }
  8.  
  9.  
  10. ?>
kanwilu
$string to nazwa tylko zmiennej...
nospor
Cytat
$string to nazwa tylko zmiennej...
Aż tak tepy to nie jestem. Tylko że ty potem robisz explode na tej zmiennej, któa jest tablicą. Explode robi sie na stringu a nie na tablicy
kanwilu
Poradziłem sobie innaczej.
Teraz moge edytować baze.txt po przez formularz.
To nie jest to co chciałem osiągnąć, ale nie jest źle.
Mimo wszystko dziękuje za pomoc, dziś jakoś przez tą pogode nie tryskam pomysłami tongue.gif.
Pozdro!!!

P.S. Nospor sorry, dziś jakoś przymulony jestem od tych tabletek od grypy.
Masz racje i tak można smile.gif
dr_bonzo
Musisz uwazac zeby ci nikt nie wpisal do tresci/nicka/itd. TABULATORA i ENTERA -- bo ci sie baza rozepsuje.

PS. A czemu nie SQL?questionmark.gif


PS6: TABLUCATORA -- heh biggrin.gif
SongoQ
Wydaje mi sie ze bez szczegolowej walidacji i tak sie ta bazka w pliku kiedys rozleci.

Tez sie zastanawialem dlaczego nie moze uzywac SQLa, jesli chodzi o € to bym polecal SQLite.
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.