Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Dopisywanie informacji do pliku txt
Forum PHP.pl > Forum > Przedszkole
karlkar
Witajcie. Mam formularz zapisujący dane, które się do niego wprowadzi w pliku txt. Mam również zamiar stworzyć stronę dla adminów, która pozwoli im na dopisanie czegoś do istniejącego już wpisu - np. do linijki, gdzie pierwsze słowo to "Mietek". Czy jest taka opcja? Jak tak to jak to zrobić?
kresh
1. Otworzyć plik i wczytać dane np. file_get_contents()" title="Zobacz w manualu PHP" target="_manual
2. Odnaleźć słowo "Mietek". np. strpos()" title="Zobacz w manualu PHP" target="_manual
3. Wykonać operację dopisania, np poprzez str_replace()" title="Zobacz w manualu PHP" target="_manual
4. Ponownie zapisać dane, np. file_put_contents()" title="Zobacz w manualu PHP" target="_manual
karlkar
Hmmm próbowałem coś stworzyć, ale funkcja która miała coś znaleźć wciąż wywalała zmienną 0 mimo że treść w pliku istnieje... Może mi ktoś dać dokładniejszy opis? No i lepiej bez funkci file_get_contents i file_put_contents bo one nie są dostępne we wszystkich wersjach php...
Skrypt ma wyłowić z pliku txt który wygląda o tak:
Cytat
Karol|18|Chotomów|2h|ONW|PvE|Rok|Jestem&se&taki&jeden|Drusilia|N/Mo|on||on|Niczego|Nic|Joasia&Beata&Mietek
ddddddddddd|dd|ddddddddd|d|d|obojetne|d|d|d|d||Factions||d|d|d
ddddddddddd|dd|ddddddddd|d|d|obojetne|d|d|d|d||Factions||d|d|d

znaleźć linijkę ze słowami (w tym wypadku Karol i Chotomów), a następnie na koniec tej linijki (przed przejściem do następnej linii oczywiście) dopisać |1|0
Ociu
  1. <?php
  2. $plik = 'file.txt';
  3. $tbl=array();
  4. foreach(file($plik) AS $line)
  5. {
  6. if(strpos($line,'Karol') && strpos($line,'Chomotów')){
  7. $end = '|1|0';
  8. }else{
  9. $end='';
  10. }
  11. $tbl[]=$line.$end;
  12. }
  13. print_r($tbl);
  14. ?>

Jeśli dobrze pamiętam, to tak to będzie wyglądać.
sobstel
tylko, że w twoim rozwiązaniu Ociu mocno pożeramy zasoby zapisując do tablicy, przy naprawdę dużych plikach może to rodzić problemy. wydaje mi się, że lepiej stworzyć plik tymczasowy np. tempnam" title="Zobacz w manualu PHP" target="_manual, tam zapisać nowe dane (odczytać linia po lini z oryginalnego i w odpowiednim miejscu wstawić nową linie) i potem usunąć plik oryginalny i zastąpić nazwę pliku tymczasowego na nazwę pliku oryginalnego.
karlkar
to by faktycznie rozwiązało problem, który opisałem, ale jest jeszcze jedno co muszę zrobić - ta końcówka |1|0 - chodzi o to że są to głosy w głosowaniu TAK|NIE. Przydałoby się, aby można było odczytać z tego pliku ilość głósów, a potem po oddaniu głosu przez użytkownika poprawić wpis na np. |2|0 czy też |1|1 i.t.d.
Wiem że sprawe możnaby prosto rozwiązać tworząc baze MySQLa ale nie znam żadnych daromwych providerów. Dlatego wrzucam to do txt... Może jakiś skrypt, który pobierze dane z tej linijki, usunie ją, a potem spowrotem ją wpisze, ale z poprawioną końcówką?
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.