konto usunięte

Temat: nie działa zapis do pliku...

witam

podpowiedzcie mi - co to moze byc, ze to ne dziala?
Bo już wymiękam.

===================================================================
$ciagwyjsciowy= "lalala";
@$wp=fopen("$DOCUMENT_ROOT/php0001/zamowienia.txt", 'ab');
flock($wp, 1);
if (!$wp){
echo ("<p><strong> ZAMÓWIENIE PAŃSTWA NIE MOŻE BYĆ ZREALIZOWANE W TEJ CHWILI. PROSZĘ SPRÓBOWAĆ PÓŹNIEJ </body></html> </strong></p>");
exit;
}
fwrite($wp,$ciagwyjsciowy);
flock($wp, 3);
fclose($wp);
=================================================================

z góry dzieki

konto usunięte

Temat: nie działa zapis do pliku...

sprawdziłeś chmod ?
Jacek R.

Jacek R. programista

Temat: nie działa zapis do pliku...

Ten kod wygląda tragicznie, ale ja przede wszystkim bym usunął @ na początku linijki:
@$wp=fopen("$DOCUMENT_ROOT/php0001/zamowienia.txt", 'ab');
Dzięki temu błędy nie zostaną połknięte i zobaczysz, gdzie dokładnie i jaki plik jest szukany.

konto usunięte

Temat: nie działa zapis do pliku...

Tak jak pisze Jacek - wywal @.

Zmień kod na coś w ten deseń:

if($wp=fopen($file, 'ab')) {
flock($wp, LOCK_EX);
fwrite($wp,$ciagwyjsciowy);
flock($wp, LOCK_UN);
fclose($wp);
}
else {
echo $komunikat;
exit;
}

konto usunięte

Temat: nie działa zapis do pliku...

1) chmod sprawdzony - dałem już wszystkim uprawnienia 777
2) dlaczego ten kod jest TRAGICZNY :):)?? Dopiero się uczę i jeżeli mógłbyś to rozwinąć - jak powinno to wyglądać - to będę bardzo wdzięczny.
3) jeżeli usunę "@" to jak mogę z pod Eclipsa zdebugować to?
4) wykorzystałem LOCK_EX i LOCK_UN - ale php wywalało mi błąd - dlatego skorzystałem z 1-3.

konto usunięte

Temat: nie działa zapis do pliku...

Spróbuj użyć funkcji file_put_contents. Chociaż lockowanie plików w celu obsługi jakiegoś procesu biznesowego to jakaś masakra :/

konto usunięte

Temat: nie działa zapis do pliku...

Krótki opis tego co robiłeś


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

Nie dość że nie sprawdzasz czy powiązanie z zasobem zostało utworzone, to jeszcze wyłączasz komunikowanie o ewentualnym błędzie.

Później odwołujesz się do $wp nie wiedząc czy takowy istnieje.

najprościej będzie tak:

if(file_put_contents($file, $content, LOCK_EX) === false) {
echo 'nie działa';
exit;
}

Robi dokładnie to samo co twoje, ale jest prostsze w zapisie i - krótsze :)

PS. Jeśli nie wiesz co się dzieje, gdzie jest błąd o którym cię skrypt nie informuje - daj na początku error_reporting(E_ALL).Michał Wachowski edytował(a) ten post dnia 21.06.12 o godzinie 20:07

konto usunięte

Temat: nie działa zapis do pliku...

cos jest ze ścieżką.

jak wpisuje:
$wp=fopen("$DOCUMENT_ROOT/php0001/zamowienia.txt", 'ab');
echo ($wp);

to mam taki komunikat:
Resource id #3

MICHAŁ ->
a jak dam to:
if(file_put_contents($wp, $ciagwyjsciowy, LOCK_EX) === false) {
echo 'nie działa';
exit;

to odpowiedz mam taką:
Warning: file_put_contents() expects parameter 1 to be string, resource given in C:\xampp\htdocs\php0001\przetworzzamowienie.php on line 94

czy cos jest z moim serwerem ze nie umie zinterpretowac to co jest napisane w dokumentacji i to co ty proponujesz?? nie wiem o co chodzi.

konto usunięte

Temat: nie działa zapis do pliku...

file_put_contents nie współpracuje z fopen. To zupełnie inna rodzina funkcji. Za pierwszy parametr podajesz ścieżkę do pliku itp. Popatrz w manual na php.net, to nie trudne.

Poza tym co to za zmienna $DOCUMENT_ROOT ?? :|Weź mi nie mów że korzystasz z register globals :| Rzuć okiem w tablicę $_SERVER.

konto usunięte

Temat: nie działa zapis do pliku...

Dla jasności: file_put_contents = fopen + fwrite + fclose
Co zresztą piszą w dokumentacji.

$file - ścieżka do pliku a nie resource,
$content - to co chcesz zapisać.

konto usunięte

Temat: nie działa zapis do pliku...

hehe - ok - zapisało
dałem tak:


$ciagwyjsciowy = $data . "\t" . $iloscopon . " opon \t" . $iloscoleju . " oleju \t" . $iloscswiec . " świec \t" . $wartosc_brutto . "PLN \t" . $adres . "\n";
$wp=("$DOCUMENT_ROOT/php0001/zamowienia.txt");
if(file_put_contents($wp, $ciagwyjsciowy, LOCK_EX) === false) {
echo 'nie działa';
exit;
}

fajnie. dzieki Michał.

Darek, $DOCUMENT_ROOT wygląda następująco:

$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];

Tak jest w książce która sobie przerabiam - i tak zapisałem :).

Pytanie: czyli rozumiem ogólnie powinienem korzystać z funkcji file_put_contents a nie z fwrite? jaka powinna być zasada wykorzystania tych funkcji? kiedy wykorzystujemy jedną a kiedy drugą?Adrian Walerczak edytował(a) ten post dnia 22.06.12 o godzinie 12:15

konto usunięte

Temat: nie działa zapis do pliku...

W sumie prościej byłoby chyba zrobić prostą tabelę w bazie danych z polami iloscopon, iloscoleju i napisać pewnie raptem kilkanaście linijek kodu do odczytywania tej tabeli/wględnie generowania plików txt w razie potrzeby... no ale co kto lubi ;)

konto usunięte

Temat: nie działa zapis do pliku...

heja
wiesz - ja na razie ucze sie php i przerabiam sobie lekture - no i mialem mały problem. Ale juz wszystko lata jak trzeba i fopen i file_put_contents.

dzieki



Wyślij zaproszenie do