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" 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 (1 - 11)
Maxik
post
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Może jakieś zastępowanie znalezionej linii pustą?


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
Cezar708
post
Post #3





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


A nie łatwiej wykorzystać do tego celu zwykła bazę danych. Chociażby nawet SQLite? Tam już wszystkie tego typu problemy są wyeliminowane
Go to the top of the page
+Quote Post
Krisso
post
Post #4





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

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


Z racji mojej upartości pozostaje przy plikach. Może z czasem zmienie na MySql-a ale poki co tylko na plikach pracuje.
Go to the top of the page
+Quote Post
Lion_87
post
Post #5





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

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


może tak:

Kod
$linia = str_replace("|$autor|$tytul\n","",$linia ); //tutaj podaj jak wyglada Twoja linia w baza.txt


Ten post edytował Lion_87 14.01.2008, 15:23:55
Go to the top of the page
+Quote Post
Krisso
post
Post #6





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
Lion_87
post
Post #7





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

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


moze to pomoże

Kod
<?
$plik = "baza.txt";
  $fopen = fopen ($plik , "r");
  $zmien = fread ($fopen, filesize ($plik));
  fclose ($fopen);
  if(strstr($zmien,"".$line[0]."||".$line[1]."||".$line[2]."||".$line[3]."||".$line[4]."||".$line[5]."||".$line[6]."||".$line[7]."")){
  
  $plik = "baza.txt";
  $fsee = fopen($plik,'w');

  $zmien = str_replace(""$line[0]."||".$line[1]."||".$line[2]."||".$line[3]."||".$line[4]."||".$line[5]."||".$line[6]."||".$line[7]."\n","",$zmien);


  fputs($fsee, $zmien);
  fclose($fsee);
  ?>
Go to the top of the page
+Quote Post
Krisso
post
Post #8





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

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


NIe za bardzo rozumiem kolego jak ten kod ma działać, więc jeśli można prosic to jakiś mały komentarzyk questionmark.gif
A ponieważ muszę skończyć ten projekt i to jak najszybciej,a ja z jakiegos powodu nie mogę usunąć wybranej lini.
Używając twojej podopowiedzi pojawia sie blad, na ktory nie mam koncepcji pozbycia sie.

Czyli nadal jestem na etapie, gdy znaleziono linie do usunięcia, ale nie wiem jak się jej teraz pozbyć.
Go to the top of the page
+Quote Post
dziurson
post
Post #9





Grupa: Zarejestrowani
Postów: 145
Pomógł: 16
Dołączył: 19.07.2007
Skąd: Elbląg

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


wyszuć if z tego wyżej i powinno działać


--------------------
Go to the top of the page
+Quote Post
Krisso
post
Post #10





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

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


Kod juz działa ale nadal z dużym minusem.
Zamiast kasować mi wybraną linię kasuje wszystkie od początku pliku i zapisuje tylko tą która była edytowana.

EDIT: juz sie zorientowalem dziursoni poprawilem tą linie z brakującą kropką, ale pozostaje problem skasowania wszystkiego a nie tylko wybranej lini.

Ten post edytował Krisso 16.01.2008, 17:51:38
Go to the top of the page
+Quote Post
dziurson
post
Post #11





Grupa: Zarejestrowani
Postów: 145
Pomógł: 16
Dołączył: 19.07.2007
Skąd: Elbląg

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


  1. <?php
  2. $zmien = str_replace("".$line[0]."||".$line[1]."||".$line[2]."||".$line[3]."||".$line[4]."||".$line[5]."||".$line[6]."||".$line[7]."\n","",$zmien);
  3. ?>


--------------------
Go to the top of the page
+Quote Post
Krisso
post
Post #12





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

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


OKI już sobie jakoś z tym poradziłem, ale poki co to jest po prostu fuszerka. Tzn.działa jak należy ale funkcjonalnie daje sobie "-5" a estetyka "-9" w skali 0-10 smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 21:41