Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] zapisywanie do pliku txt
warkakw
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 11.08.2006

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


witam
napisałem skrypt php i ma on za zadanie dopisywac kolejne linijki tekstu do
pliku *.txt. problem w tym że nie wiem co zrobic aby skrypt pisał od nowej linijki a nie na koncu ostatniej.
oto kod:
{
$top=fopen("top_download.txt", "a+t");
$do_zapisu="\\r\\n"."$_GET[fileid];42;$opis";
fwrite($top,$do_zapisu);
fclose($top);
}
ponoć \r\n ma powodować przejście do nowej linijki w pliku txt ale tak sie nie dzieje. Jest ono dopisywane jak zwykły tekst: blabla\r\nblabla
co zrobic aby pisało od nowej linijki?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
dziękuje za pomoc
Kamil
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nie
  1. <?php
  2. $do_zapisu="rn";
  3. ?>

a:
  1. <?php
  2. $do_zapisu="rn";
  3. ?>


I prosze uzywac bbcode.

ps: przenosze
Go to the top of the page
+Quote Post
warkakw
post
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 11.08.2006

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


thx

działa!
Go to the top of the page
+Quote Post
jacus
post
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.11.2006

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


Witam

Wybacz, że się dokleję ale mam podobny problem a rozwiazanie coś mi nie idzie.
Otóż mam problem z zapisywaniem do plików na stronie
Kod
http://www.laizsme.edu.pl/~jacus/formularz/zapis.php


potrzebuje żeby zapisywało za każdym razem do następnego wiersza a nie kasowało mi pierwszego wiersza i zapisywało na nowo.

kod pliku zapis2.php
Kod
<?php
  $a = 'login.txt';
  $b = $_POST[login];

  if (is_writable($a)) {
  

     if (!$a = fopen($a, 'w+')) {
           echo "Nie mogę otworzyć pliku ($a)";
           exit;
     }
  

     if (fwrite($a, $b) === FALSE) {
         echo "Nie mogę zapisać do pliku ($a)";
         exit;
     }
  
     echo "Sukces, zapisano login do pliku ($a)";
  
     fclose($a);
  
  } else {
     echo "Plik $a nie jest zapisywalny";
  }

  $c = 'haslo.txt';
  $d = $_POST[haslo];
  
  if (is_writable($c)) {
  

     if (!$c = fopen($c, 'w+')) {
           echo "Nie mogę otworzyć pliku ($c)";
           exit;
     }
  

     if (fwrite($c, $d) === FALSE) {
         echo "Nie mogę zapisać do pliku ($c)";
         exit;
     }
  
     echo "Sukces, zapisano haslo do pliku ($c)";
  
     fclose($c);
  
  } else {
     echo "Plik $c nie jest zapisywalny";
  }
  ?>


login ma zapisywać do pliku login.txt a hasło do haslo.txt.
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




w kodzie masz tak: fopen($c, 'w+')
a teraz zajrzyj do manuala
http://pl.php.net/manual/pl/function.fopen.php
i przeczytaj sobie co robi w+. a potem doczytaj co powinno byc, by nie obcinalo a dodawalo

ps: i uzywaj wlasciwego bbcode!!!
Go to the top of the page
+Quote Post
jacus
post
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.11.2006

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


a,w,r,x - nic nie działa tak jak ja chce.
możesz rozwinąc?:
"ps: i uzywaj wlasciwego bbcode!!!"
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
a,w,r,x - nic nie działa tak jak ja chce.
nie moze byc. a mi sie wydaje ze wlasnie "a" dopisuje na koniec pliku:
Cytat
umieszcza wskaźnik pliku na jego końcu

Pewnie cos źle robisz. pokaz kod po poprawkach tym w razem w dobrym bbcode

Cytat
możesz rozwinąc?:
"ps: i uzywaj wlasciwego bbcode!!!"
ty uzywasz bbcode code do osadzenia kodu php. Do takiego kodu uzywa sie bbcode php
Go to the top of the page
+Quote Post
jacus
post
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.11.2006

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


tak, masz racje, a osadza na końcu pliku tyle, że w tym samym wierszu a nie w następnym.

a możesz mi wyjaśnić jak się zmienia na bbcode php naczym to polega, i czym się różni od bbcode code bo nie mam pojęcia i na wikipedi też nie znalazłem.
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
tak, masz racje, a osadza na końcu pliku tyle, że w tym samym wierszu a nie w następnym.
ba... podpiales sie do cudzego topicu argumentujac iz jest bardzo podobny do twojego problemu. Problemem w tym topicu byl brak nowych linii w pliku, ale problem ten zostal rozwiązany. aty sie podpinasz i nawet nie przeczytales dwoch postow w tym topicu, ktore mowią co i jak. Mamy sie pogniewac?
NIgdzie w Twoim kodzie nie widze \r\n. co to \r\n? to juz doczytaj w tym topicu.

Cytat
a możesz mi wyjaśnić jak się zmienia na bbcode php naczym to polega, i czym się różni od bbcode code bo nie mam pojęcia i na wikipedi też nie znalazłem.

to jest kod php wstawiony w bbcode php:
  1. <?php
  2. $zmienna = 'ala';
  3. //jakis inny kod
  4. ?>

Wiecej info tu:
Temat: Tematyka i zasady panujace na forum Przedszkole
oraz chyba w regulaminie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
jacus
post
Post #10





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.11.2006

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


a nie podobny mam problem ?
wszystkie posty przeczytałem i sporo innych tematów.
tyle, że nie wiem jak mam użyć tego \r\n
i gdzie to dopisać (IMG:http://forum.php.pl/style_emoticons/default/mad.gif)

Kod
<?php
  $a = 'login.txt';
  $b = $_POST[login];
  $fwrite = "\r\n";

// $_POST[s].$_POST[s2].".php";
//."<br>"
  if (is_writable($a)) {
  

     if (!$a = fopen($a, 'a+t')) {
           echo "Nie mogę otworzyć pliku ($a)";
           exit;
     }
  

     if (fwrite($a, $b) === FALSE) {
         echo "Nie mogę zapisać do pliku ($a)";
         exit;
     }
  
     echo "Sukces, zapisano login do pliku ($a)";
  
     fclose($a);
  
  } else {
     echo "Plik $a nie jest zapisywalny";
  }

  $c = 'haslo.txt';
  $d = $_POST[haslo];
  
  if (is_writable($c)) {
  

     if (!$c = fopen($c, 'w+')) {
           echo "Nie mogę otworzyć pliku ($c)";
           exit;
     }
  

     if (fwrite($c, $d) === FALSE) {
         echo "Nie mogę zapisać do pliku ($c)";
         exit;
     }
  
     echo "Sukces, zapisano haslo do pliku ($c)";
  
     fclose($c);
  
  } else {
     echo "Plik $c nie jest zapisywalny";
  }
  ?>
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
a nie podobny mam problem ?
podpbny, tylko ze ty wogole z tego topicu nie wziales nic, co do tyczy problemu
Przeciez masz pokazane, ze koles \r\n dodaje do tekstu ktory ma wpisac do pliku. \r\n oznacz koniec lini. jak chcesz miec po loginie koniec linii to musisz go tam wstawic
I wyraźnie mowie uzywaj bbcode php a nie code(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) !
  1. <?php
  2. //....
  3. $b = $_POST[login]."rn";
  4. //.....
  5. ?>

Widzisz roznice w wygladzie kodu? Twoj to code moj to php.
Go to the top of the page
+Quote Post
jacus
post
Post #12





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.11.2006

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


Załapałem co z tym \r\n.
Do czego jest samo \r i samo \n? bo probowalem z \n i nie dzialalo mi z braku a+t
Jedyną rożnicę jaką widzę to zmiana = na - .
Ale jeszcze nie mogę znaleźć na tej stronce:
Kod
http://pl.php.net/manual/pl/function.fopen.php

co oznacza a+t ?
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Ale jeszcze nie mogę znaleźć
hmmm.... w takiej bajce jak "Mulan" (nie wiem czy ogladales) byl tekst: "Co ty, po chinsku nie kumasz?"
To ja mam ci napisac: "Co ty, po polsku nie kumasz?" (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Przeciez tam masz po polsku napisane:
Cytat
Notatka: Różne rodziny systemów operacyjnych stosuja rózne konwencje końca lini. Kiedy zapisujesz plik tekstowy i chcesz wstawić łamanie lini, musisz użyć poprawnych dla twojego systemu operacyjnego znak(ów) końca lini. Systemy bazujące na Uniksie używają \n jako znaku końca lini, systemy bazujące na Windowsie używają \r\n jako znaków końca lini, a systemy Macintosh używają \r jako znak końca lini.

Jeśli użyjesz nieprawidłowego końca lini do zapisu pliku, możesz zaobserwować, w innych aplikacjach otwierając ten plik, że "wygląda on zabawnie".

Windows oferuje flagę ('t') konwertującą tryb tekstowy, która przezroczyście przekłada \n na \r\n kiedy pracujesz z plikiem. Dla kontrastu, możesz także uzyć 'b' aby wymusić tryb binarny, wtedy nie będzie konwertować twoich danych. Aby użyć tych flag, wstaw 'b' lub 't' jako ostatni znak w parametrze tryb.

Domyślnie tryb konwersji zależy od SAPI i wersji php jakiej używasz, więc namawiamy aby zawsze podawać stosowną flage w celu przenośności. Powinieneś użyć trybu 't' jeśli pracujesz ze zwykłymi plikami tekstowymi (plain-text)i używasz \n do ograniczenia konców lini w twoim skrypcie, ale wymagasz aby twój plik był czytelny w aplikacjach takich jak notatnik. Powinieneś uzyć 'b' w każdym innym przypadku.

Jeśli nie podasz flagi 'b' kiedy pracujesz na binarnych plikach, możesz doświadczyć dziwnych problemów z twoimi danymi, włączając uszkodzone pliki graficzne i dziwne problemy ze znakami \r\n.

Notatka: Dla przenośności, bardzo zalecane jest użycie zawsze flagi 'b' kiedy otwierasz pliki za pomocą fopen().

Notatka: Ponownie, dla przenośności, jest również bardzo zalecane abyś, przepisał swój kod, który używa lub polega na trybie 't' tak aby używał poprawnego końca lini oraz trybu 'b'.

Ladnie, prosto i po polsku

ps: ta tytułowa "Mulan" była Chinką
Go to the top of the page
+Quote Post
jacus
post
Post #14





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.11.2006

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


LOL nie oglądam bajek bo nie mam czasu.
A tego nie czytałem...
Wielkie dzięki za pomoc.
Mam jeszcze takie pytanie, w tym momencie zapisuje w kolejnych wierszach tzn 1,2,3,4 itd
a co i gdzie trzeba dopisać żeby zapisywało nowe wpisy w pierwszym wierszu tak żeby najstarszy wpis był na samym dole, przeciwnie do tego co jest teraz?
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
a co i gdzie trzeba dopisać żeby zapisywało nowe wpisy w pierwszym wierszu tak żeby najstarszy wpis był na samym dole, przeciwnie do tego co jest teraz?
To juz nie jest takie proste.... ale trudne tez nie.
1) Pobierasz zawartosc pliku do zmiennej (file_get_contents).
2) Dopisujesz do początku zmiennej nowa wartosc (zwykle lączenie stringow),
3) zapisujesz zmienna do tego pliku (file_put_contents) (jak nie masz php5 to poszukaj w manualu odpowiednikow dla php4: http://pl.php.net/manual/pl/function.file-put-contents.php)
Go to the top of the page
+Quote Post
jacus
post
Post #16





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.11.2006

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


Faktycznie banalne to nie jest, niestety.
Może mi nie będzie potrzebne.
Jeszcze raz dzięki, pozdro
Go to the top of the page
+Quote Post
rozny
post
Post #17





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


A te zapisywanie na poczatku pliku do czegos konkretnie ci jest potrzebne? jesli tylko po to, zeby najstarsze wpisy wyswietlac na samym dole strony, to wystarczy zastosowac array_reverse(); aby wyswietlic wpisy z konca pliku wyzyej niz te z poczatku (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
jacus
post
Post #18





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 21.11.2006

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


Mnie to jest obecnie do niczego nie potrzebne ale potrzebuje żeby tak było, najnowszy wpis na samej górze w pliku txt.
Jak się posłużyć tym array_reverse()? jak to zastosować? tylko krok po kroku proszę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
lopik
post
Post #19





Grupa: Zarejestrowani
Postów: 340
Pomógł: 0
Dołączył: 7.07.2006

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


Nie czytałem od początku tematu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) , ale jak zapisujesz dane na końcu pliku to żeby ostatni wpis był pierwszym, to trzeba zrobić na przykład tak:

  1. <?php
  2. // tutaj czytasz plik z danymi do tablicy (jesli go jeszcze nie przeczytales za pomoca owej funkcji)
  3. $tablica = file($plik);
  4.  
  5. // i teraz odwracasz tablice do gory danymi ;)
  6. $odwroconaTablica = array_reverse($tablica, true)
  7. ?>


array_reverse

Ten post edytował lopik 12.12.2006, 15:37:14
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 - 18:14