Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Usuwanie z pliku
Krisso
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 25.12.2007

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


Witam sprawa niby oczywista,jednak stwarza problem:

Istnieje wyszukiwarka znajdujaca interesującą nas linie z pliku "baza.txt".
Dodam, że wyszukiwarka znajduje linie za pomocą autora i tytulu (2 pierwsze kolumny w tabeli)
nastepnie wyswietla nam to co znalazł i automatycznie zapisuje do innego pliku "postoj.txt".

A tutaj tkwi problem:
Co należałoby zrobić aby po zapisaniu do "postoj" jednoczesnie wykasował tą linię z "baza.txt" (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Tak, aby po zedytowaniu możnabyłoby spokojnie zapisać do "baza.txt" nową ksiazke bez obawiania się, że stary(bledny) wpis nadal istnieje.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Krisso
post
Post #2





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 25.12.2007

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


baza.txt
Kod
Sienkiewicz Henryk||Potop||PWN||2005||4532/5422||powiesc||historyczna||jazda na szweda
Sienkiewicz Henryk||Pan Wołodyjowski||PWN||1785||45632/75645||powiesc||historyczna||ciekawa


ed.php
  1. <?php
  2. // fragment odpowiedzialny za wyszukanie
  3. $arrFile = file( 'baza.txt' ); // powinienem chyba dodać ,'r+'
  4. for( $i = 0; $i < count( $arrFile ); $i++ ) 
  5. {
  6. list($autor[$i], $tytul[$i], $wyd[$i],$rw[$i],$isbn[$i],$gat1[$i],$gat2[$i],$opis[$i] ) = explode("||", $arrFile[$i]);
  7. $line = explode( '||', $arrFile[ $i ] );  //rozbicie na elementy
  8. //znalezienie szukanego slowa, $pole1 to slowo pobrane z formularza umieszczonego 
    troche wyzej
  9. if( eregi( $pole1, $line[1])||eregi( $pole1, $line[0] ) ) 
  10. $dane = $line[0]."||".$line[1]."||".$line[2]."||".$line[3]."||".$line[4]."||".$line[5]."||".$line[6]."||".$line[7].""; 
  11. //tutaj nastepuje zapis znalezionej lini do pliku "postoj.txt"
  12. ?>

Przepraszam Lion_87 ale nie zabardzo rozumiem jak do powyższego kodu zastosować twoją propozycje.
powinien otowrzyc plik baza.txt do odczytu i zapisu ('r+') ale reszty jakoś nie łapie.
co podstawić do $linia, bo z twojego zapisu wyglada jakby ona sama siebie szukala.

EDIT: godzina 3:04 15 stycznia 2008 // Krok po kroku

OD ostatniego postu sprawa ruszyła do przodu (nocne pisanie widocznie mi służy), doszedlem do etapu usunięcia i mam problem:
plik baza.txt wyglada tak samo jak wyżej:

  1. <?php
  2. if($sprawa==$sprawdz)  //znajduje te same wpisy teraz mozna usunac opowiedni,
  3. // $sprawa zawiera zmienną z baza.txt
  4. //$sprawdz zawiera zmienne ktore zaraz będą edytowane
  5. {
  6. echo "Ta zmienna jes w bazie i teraz ją usuniemy<br>";
  7. unset($sprawa);  
  8. echo "Usunięto zbędną linie i reszte zapisujemy do pliku baza.txt";  
  9. }
  10.  else
  11.  {  
  12. $filer = "baza.txt";  
  13. $ftp = fopen($filer, "r+");  
  14. flock($ftp, 2);
  15. fwrite($ftp, $sprawa[j]);  
  16. flock($ftp, 3);
  17. fclose($ftp);
  18. echo "<center><strong><p>Stara wersja usunieta</p><br /></center></strong>";
  19.  }
  20. ?>


I problem polega na tym ze nie kija jak to działa, wiem że to powinno inaczej wygladać, ale poki co jest tak jak widzicie.
Moja prośba prosta - co zrobic aby po usunieciu tej lini ($sprawa) zapisać reszte pliku baza.txt na nowo.
Tak usunięcie zakończyło się w pełni sukcesem.

Ten post edytował Krisso 15.01.2008, 03:46:10
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: 3.10.2025 - 13:52