Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Zapisywanie do pliku: nadpisuje mi treść
grattz
post
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


Mam taką funkcję która ma za zadanie zapisywanie do pliku wejscia admina na podstrone forum:
  1. <?php
  2. //dodawanie do pliku nowych postow w ktorych brałem udział
  3. if (isset($_SESSION['user'])){
  4.  $plik=fopen('admin.php','w');
  5.  flock($plik,LOCK_EX);
  6.  fputs($plik,'$post['.$id.']='' .time(). '';');
  7.  flock($plik,LOCK_UN);
  8.  fclose($plik);
  9. }
  10. ?>

No i ladnie przybiera mi to formę jaką chce : ( ale bez <?PHP i ?> )
  1. <?php
  2. $post[53]='1212085156';
  3. ?>


Ale następne wejście na podstronę i wywołanie skryptu powoduje nadpisanie pliku a nie dodanie informacji w nowej linii. Czemu ?
I jak zrobic zeby w tym pliku admin treść zapisywała sie pomiędzy <?php i ?>

Ten post edytował grattz 29.05.2008, 19:56:43
Go to the top of the page
+Quote Post
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Lista możliwych trybów dla fopen(). Poczytaj w manualu dlaczego tak się dzieje.
Go to the top of the page
+Quote Post
piotrooo89
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




z tego manuala co Ci dał batman skorzystaj... a ja Ci powiem że powinien być to tryb a+ który otworzy plik do odczytu i zapisu ale ustawi kursor na końcu co umożliwi dalsze dopisane informacji.
Go to the top of the page
+Quote Post
grattz
post
Post #4





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


Super. To jeszcze jak zrobic zeby na koncu zawsze było:
?>
Go to the top of the page
+Quote Post
Danone
post
Post #5





Grupa: Zarejestrowani
Postów: 169
Pomógł: 16
Dołączył: 18.10.2006
Skąd: Olsztyn/Wrocław

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


Tak powinno dopisać

  1. <?php
  2. fputs($plik,'$post['.$id.']='' .time(). '';?>');


Ten post edytował Danone 29.05.2008, 20:02:05
Go to the top of the page
+Quote Post
grattz
post
Post #6





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


Cytat(Danone @ 29.05.2008, 21:01:50 ) *
Tak powinno dopisać

  1. <?php
  2. fputs($plik,'$post['.$id.']='' .time(). '';?>');

Też tak myślalem ale wtedy do każdego nowego rekordu dodaje sie to "?>" więc takie coś odpada.
Może to na poziomie include('admin.php'); jest coś nie tak.
Go to the top of the page
+Quote Post
Kicok
post
Post #7





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


  1. <?php
  2.  
  3. fseek( $fp, -2, SEEK_END );
  4. fwrite( $fp, '(...)' );
  5.  
  6. ?>



problem wystąpi, gdy "?>" nie będą ostatnimi znakami w pliku.
Może po prostu daruj sobie to "?>" w admin.php? ;]
Go to the top of the page
+Quote Post
batman
post
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Funkcja fseek nie zadziała, jeśli plik otwierany jest w trybie dodawania (a lub a+). Jedynym wyjściem jest pobranie zawartości całego pliku, dodanie w odpowiednim miejscu tekstu, a następnie zapisanie do pliku nowej zawartości.
Go to the top of the page
+Quote Post
grattz
post
Post #9





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


Cytat(Kicok @ 29.05.2008, 21:31:09 ) *
Może po prostu daruj sobie to "?>" w admin.php? ;]

HAHA rzeczywiście problem sie rozwiązał (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif) Dziwne. To jeszcze mam pytanie kosmetyczne.
Jak zamiast formy:
  1. <?php
  2. $post[53]='1212089508';$post[1]='1212089641';$post[45]='1212089643';
  3. ?>

Uzyskać
  1. <?php
  2. $post[53]='1212087361';
  3. $post[43]='1212087425';
  4. $post[38]='1212087427';
  5. ?>
Go to the top of the page
+Quote Post
pyro
post
Post #10





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


afff...

  1. <?php
  2. // po zapisie do pliku wiersza
  3. // ...
  4.  
  5. $plik = 'pliczek.txt';
  6. if(substr(file_get_contents($plik), -2) != '?>')
  7. {
  8. // zapisz '?>' na koncu
  9. }
Go to the top of the page
+Quote Post
Kicok
post
Post #11





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Cytat
Funkcja fseek nie zadziała, jeśli plik otwierany jest w trybie dodawania (a lub a+). Jedynym wyjściem jest pobranie zawartości całego pliku, dodanie w odpowiednim miejscu tekstu, a następnie zapisanie do pliku nowej zawartości.

Albo otwarcie pliku w trybie r+


A entery się robi przez "\r\n"

Ten post edytował Kicok 29.05.2008, 20:38:54
Go to the top of the page
+Quote Post
grattz
post
Post #12





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


Tak próbuje wstawić to enter tutaj
  1. <?php
  2. fputs($plik,'$post['.$id.']='' .time(). '';');
  3. ?>

i mi nie wychodzi. Jak to umieścić żeby przełamywało wiersz ?

Ten post edytował grattz 29.05.2008, 21:12:51
Go to the top of the page
+Quote Post
pyro
post
Post #13





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


  1. <?php
  2. if(stristr(PHP_OS, 'win'))
  3. {
  4. $nl = "r\n";
  5. }
  6. else
  7. {
  8. $nl = "\n";
  9. }
  10. ?>

teraz dajesz $nl (nową linię) tam, gdzie chcesz, żeby był przełamany wiersz
Go to the top of the page
+Quote Post
grattz
post
Post #14





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 29.10.2006
Skąd: BB

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


Dzięki (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)
Go to the top of the page
+Quote Post
nexis
post
Post #15





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Cytat(pyro @ 29.05.2008, 22:11:19 ) *
  1. <?php
  2. if(stristr(PHP_OS, 'win'))
  3. {
  4. $nl = "r\n";
  5. }
  6. else
  7. {
  8. $nl = "\n";
  9. }
  10. ?>


  1. <?php
  2. PHP_EOL;
  3. ?>


Nie łatwiej? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
pyro
post
Post #16





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


hehe, kompletnie zapomniałem o tej stałej =D, ale i tak jest ok
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: 23.08.2025 - 10:54