Jed113
15.09.2010, 19:27:47
Witam! Jestem początkujący w tematyce php, może ktoś mi wyjaśnić co to za błąd i jak to naprawić ?
Warning: fopen(C:/xampp/htdocs/../zamowienie.txt) [function.fopen]: failed to open stream: No such file or directory in C:\xampp\htdocs\przeglad.php on line 20
bastard13
15.09.2010, 19:32:12
Podałeś złą ścieżkę do pliku.
Jed113
15.09.2010, 20:06:38
Ale dobra jest, podawałem też bezpośrednią i to samo, jakieś inne pomysły ?
bastard13
15.09.2010, 20:14:19
Wklej ten kawałek kodu tutaj.
Jed113
15.09.2010, 20:37:42
<?php
$DOCUMENT_ROOT=$_SERVER['DOCUMENT_ROOT'];
$plik = fopen("$DOCUMENT_ROOT/../zamowienie.txt", 'rb');
?>
naitsabes
15.09.2010, 20:41:39
Po co zmienna ? Jeżeli robisz strone lub cos to i tak znasz katalogi

A bez zmiennej może byc wszystko dobrze...
Jed113
15.09.2010, 20:43:48
bez document_root ? wybaczcie , ale zaczęłem dopiero kilka dni temu .
naitsabes
15.09.2010, 20:45:38
tak

po prostu daj sobie np.
$plik = fopen("tomek/dane/blalba/zamowienie.txt", 'rb');
Jed113
15.09.2010, 20:49:03
$plik =fopen("xampp/htdocs/zamowienie.txt", 'rb'); tak dałem bo to w tym katalogu jest i to samo.
bastard13
15.09.2010, 20:51:33
$plik =fopen("../zamowienie.txt", 'rb');
1) Ścieżkę względną podaje się zaczynając od folderu, w którym wywołujesz skrypt.
2) Po drugie:
$plik = fopen("$DOCUMENT_ROOT/zamowienie.txt", 'rb');
niepotrzebne '../'
3) używaj bbcode
Jed113
15.09.2010, 20:59:46
Korzystam z książki helionu php i mqsql i tam właśnie wykorzystują tą zmienną ($DOCUMENT_ROOT), czyli jaki kod ma być ostatecznie aby zadziałał ?
bastard13
15.09.2010, 21:03:37
A próbowałeś powyższe? Np. pierwszy lub drugi? lub:
$plik = fopen($_SERVER['DOCUMENT_ROOT'].'/zamowienie.txt', 'rb');
Jed113
15.09.2010, 21:07:25
$plik = fopen($_SERVER['DOCUMENT_ROOT'].'/zamowienie.txt', 'rb');
jak wstawiam to, nie pokazuje nic , strona pusta.
bastard13
15.09.2010, 21:11:32
Pewnie biały ekran, jak zgaduje. To powiem ci, że wszystko działa, bo w innym wyrzuciłoby błąd.
A teraz przeczytaj:
http://php.net/manual/pl/function.fopen.phpi pomyśl dlaczego masz pusty ekran. Podpowiem, że przede wszystkim powinieneś zwrócić uwagę na to co zwraca funkcja fopen() i co się z tym dalej robi.
Jed113
15.09.2010, 21:27:22
okej

, wielkie dzięki za odpowiedzi, Pozdrawiam

$wp = fopen('$DOCUMENT_ROOT/../zamowienie.txt', 'rb');
echo $wp;
jak daje to to wyświetla mi resource id#3
a kiedy dodaje do tego wiersz $wp=fread($wp, 300)
to wyświetla mi tylko do 300 znaku i wszystko w tym samym wierszu mimo że w pliku txt jest w osobnych.
bastard13
15.09.2010, 21:32:22
Cytat
echo $wp;
jak daje to to wyświetla mi resource id#3
A co zwraca funkcja fopen()?
Cytat
a kiedy dodaje do tego wiersz $wp=fread($wp, 300)
to wyświetla mi tylko do 300 znaku
Co określa drugi parametr przekazany do funkcji fread()?
Cytat
wszystko w tym samym wierszu mimo że w pliku txt jest w osobnych.
Jaka jest różnica między łamaniem lini w pliku tekstowym, a pliku html?
Jed113
15.09.2010, 21:49:09
drugi parametr to ilość bajtów, łamanie lini w html w windows to /r/n wszystko jest w porządeczku, a co zwraca funkcja fopen to się domyśle, jest to plik tekstowy z zapisanym zamówieniem z innego skryptu, to chyba nie ma znaczenia ?
okej już mam
pomogło fgets czyli odczytywanie wiersz po wierszu
bastard13
15.09.2010, 21:53:18
1) tak.
2) nie. Zrób sobie plik test.html, a w nim:
czy to będzie
złamany tekst
i zobacz jak go wyświetli przeglądarka.
3)
Cytat
Zwraca wskaźnik pliku do zasobu w przypadku sukcesu lub FALSE przy błędzie.
Jed113
15.09.2010, 21:54:33
$wp = fopen('$DOCUMENT_ROOT/../zamowienie.txt', 'rb');
$wp = fgets($wp,999);
echo $wp;
zrobiłem tak i wyświetla, lecz tylko pierwszy wiersz zamówienia
bastard13
15.09.2010, 22:00:42
Cytat
Korzystam z książki helionu php i mqsql
Przeczytaj rozdział do końca, bo nie wierzę, że tam nie ma tego wszystkiego, a później, jeżeli będziesz miał jeszcze jakieś pytania, to pisz.
Koniec końców forum to nie tutorial.
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.