Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] zapis do pliku tekstwego
Forum PHP.pl > Forum > Przedszkole
petylyl
Witam,
Uczę się PHP z książki Vademecum Profesjonalisty i jest tam taki fragment kodu, który zapisuje dane z formularza do pliku tekstowego. Oto on:

Kod
$adres = $imie."\t". $nazwisko."\t". $ulica."\t". $numer_domu."\t". $kodp."\t". $miejsc."\t";
$ciagwyjsciowy = $data."\t".$iloscopon."opon \t".$iloscoleju." butelek oleju\t"
                                .$iloscswiec." ¶wiec zapłonowych\t". $brutto ."\t". $cenaporabacie. $adres. "\n";

@ $wp = fopen("$DOCUMENT_ROOT/www/zam/zam.txt", 'ab');

if (!$wp)
{
echo '<p><strong> Zamówienie Państwa nie może zostać przyjęte w tej chwili.'
         .'Proszę spróbować póĽniej.</strong></p>';
    exit;
}

fwrite($wp, $ciagwyjsciowy, strlen($ciagwyjsciowy));
fclose($wp);

echo '<p>Zamówienie zapisane.</p>';


Chciałbym, aby nowe zamówienie, a więc w praktyce nowy ciąg wyjściowy był zapisywany w nowym wierszu. W książce w tym celu użyto znaku "\n". Niestety nie wiem gdzie jest błąd (być może w książce - zauważyłem ich tam kilka), ale zamówienie nie zapisuje mi się w nowym wierszu. Znaki tabulacji oznaczone "\t" są, ale kolejne zamówienie są zapisywane obok, a nie wiersz niżej. Czy wiecie jak rozwiązać ten problem?
Darti
\n to raczej pod linuxem
spróbuj \r
-emes-
\n działa pod wszystkim - \r, to jedynie "powrót karetki"

z tego co widzę, to masz wymieszany plain text z htmlowymi tagami.

jeżeli to ma być w htmlu drukowane, to nowa linia "\n" zauważana będzie w źródle strony, ale nie na samej stornie wyświetlanej przez przeglądarakę. w htmlu musisz użyć znacznika nowej lini <br/>
tomsi
Polecam erratę do książki. Z tego co widzę to jest to ksiazka z wydawnictwa helion. Są tutaj wypisane znalezione blędy, a przynajmniej ich większość.

Errata
Chrom
po prostu wstaw na końcu wiersza "\r\n"
-emes-
nie ma bata - "\n" musi wystarczyć.

może być natomiast taka kwestia, że tworzysz te pliki na serwerze uniksowym, a otwierasz je pod windowsem.
windows nie rozumie normalnego znaku nowej linii, tylko jakieś tam swoje śmieci wstawia.
w takiej sytuacji, wystarczy otworzyć taki log z jakiegoś konkretniejszego edyto tekstu (Notepad++ rozumie te znaczniki na pewno)

możesz wrzucić gdzieś przykładowego loga i podać link?
phpion
Cytat(Chrom @ 6.12.2007, 22:50:00 ) *
po prostu wstaw na końcu wiersza "\r\n"

POPIERAM.

Cytat(-emes- @ 6.12.2007, 23:10:00 ) *
nie ma bata - "\n" musi wystarczyć.

Jest bat. Na Unixach znak końca linii to \n, natomaist na Windowsach \r\n.
petylyl
To jest chyba jakaś wada Notatnika, bo w Wordpadzie pokazuje poprawnie (z "/n"), także kiedy tutaj na forum wklejam ten tekst wyświetla się normalnie. Dziękuję za wskazówki. Pozdrawiam.
-emes-
dokładnie.
właśnie o tym mówiłem; nie ma sensu się bawić w "\r\n", tylko normalny edytor jest potrzebny i tyle.


phpion.com, no przecież w dalszej treści poprzedniego postu właśnie o tym pisałem... że windows nie rozumie normalnych znaków nowej linii...
ehh... sciana.gif
petylyl
-emes- - tak, twoja uwaga była słuszna, dzięki za wskazówkę. Teraz już wszystko działa i można przejść do tablic w php, czyli dalej.
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.