Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Dopisywanie informacji do pliku txt, Formularz
karlkar
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 28.03.2007

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


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ć?
Go to the top of the page
+Quote Post
kresh
post
Post #2





Grupa: Zarejestrowani
Postów: 99
Pomógł: 2
Dołączył: 8.11.2005
Skąd: Kraków

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


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

Ten post edytował kresh 1.05.2007, 23:30:10
Go to the top of the page
+Quote Post
karlkar
post
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 28.03.2007

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


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
Go to the top of the page
+Quote Post
Ociu
post
Post #4





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




  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ć.
Go to the top of the page
+Quote Post
sobstel
post
Post #5





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


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.

Ten post edytował sopel 3.05.2007, 09:10:15
Go to the top of the page
+Quote Post
karlkar
post
Post #6





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 28.03.2007

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


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ą?
Go to the top of the page
+Quote Post

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: 12.10.2025 - 03:49