Skocz do zawartości

[php] zapis do pliku w pętli


Mar

Rekomendowane odpowiedzi

Mam plik stat.txt oraz kod:

$file2="stat.txt";
$fp=fopen("$file2", "w");
fwrite($fp, ''); 
flock($fp, 3); 
fclose($fp); 
while ()
 { 
$i++; 
$dane=$i; 
$file2="stat.txt"; 
$fp=fopen("$file2", "r+"); 
$dane=$dane.fread($fp, 
filesize($file2)); 
rewind($fp); 
flock($fp, 2); 
fwrite($fp, $dane); 
flock($fp, 3);  
fclose($fp);  
}

 

przed pętlą czyszczę plik, niestety nie otrzymuję w pliku to co chciałbym, tz chcę by w pliku było:
 
"...54321"
 
natomiast w pliku mam tylko wartość ostatniego $i.
 
Gdzie popełniam błąd?
 
 
M.
 

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

Gdzie popełniam błąd?

Może w pętli w której ciągle "mieszasz" w pliku? Zapisz w pętli wszytko co potrzebne do zmiennej a następnie po pętli zapisz zawartość zmiennej do pliku.

Nie znam się na pozycjonowaniu, ja tu tylko zużywam transfer i miejsce w sql.

Roman Kluska ujawnia: nadchodzi INFLACYJNY ARMAGEDON!

 

Odnośnik do komentarza
Udostępnij na innych stronach

@Trotyl, niestety dalej to samo.

 

@Irek, chodzi o to, że chcę obrócić pętle...

 

chyba, ze da się w PHP zapis do zmiennej z przodu, czyli utworzyć zmienną, która będzie miała wartość $d='54321'

 

zamiast 12345, niestety kod nie pozwala by odwróć już zapytanie wcześniej.

 

 

M.

 

 

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach

for($i=5; $i>0; $i--){
    echo $i;
}

Portal rolniczy NowoczesnaFarma.pl -  zawsze najświeższe wiadomości, porady oraz nowinki techniczne dot. traktorów, maszyn i urządzeń rolniczych;

Ogloszenia-Rolnicze.com - serwis z darmowymi ogłoszeniami rolniczymi w kategoriach: maszyny rolnicze, traktory, hodowla, uprawy, nieruchomości, praca;
Portal ekologiczny Eco-News.pl - aktualne wiadomości, porady i informacje  na temat odnawialnych źródeł energii OZE .

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli pliki nie są duże, to po prostu zapisuj zmienną+zawartość pliku. Możesz też pokombinować z SplFileObject.

Odnośnik do komentarza
Udostępnij na innych stronach

Masz włączone pełne raportowanie błędów razem z warningami i notice? Włącz jeśli nie, ponieważ na tę chwilę kod zgłasza:

Warning: fread(): Length parameter must be greater than 0 in

Dalej będzie pewnie jakieś błądzenie kodu związane właśnie z tym ostrzeżeniem.

 

Edycja:

a filesize zwraca 0, ponieważ dane dotyczące wielkości pliku są zcachowane podczas pętli while (pierwsze filesize zwraca 0, bo plik jest pusty na początku i wartość ta trafia do cache i tak już zostaje do końca).

Trzeba użyć dodatkowo clearstatcache w pętli.

 

Odnośnik do komentarza
Udostępnij na innych stronach

@KrissTex, dzięki ale to musi być pętla while, tak samo nie mogę wcześniej posortować.

 

@ttah dzięki za podpowiedź, faktycznie tam coś było nie tak, zrobiłem tak:

$tekst = @file_get_contents($file2); 

Dzięki.

Polecam katalog SeoPark.pl, katalog AK47 (5 lata w sieci) ...oraz Wirtualne-miasta.eu
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem

Odnośnik do komentarza
Udostępnij na innych stronach


@Trotyl, niestety dalej to samo.

 

Dziwne, u mnie działa. Pacnąłem to:

<?
$file2="stat.txt";
$fp=fopen("$file2", "w");
fwrite($fp, ''); 
flock($fp, 3); 
fclose($fp); 
while ($i<30)
 { 
$i++; 
$dane=$i; 
$file2="stat.txt"; 
$fp=fopen("$file2", "r+"); 
$fstat = fstat($fp);
$dane=$dane.fread($fp, $fstat['size']); 
rewind($fp); 
flock($fp, 2); 
fwrite($fp, $dane); 
flock($fp, 3);  
fclose($fp);  
}

I wypluł w stat.txt to:

302928272625242322212019181716151413121110987654321

chyba, ze da się w PHP zapis do zmiennej z przodu, czyli utworzyć zmienną, która będzie miała wartość $d='54321'
$zmienna=strrev($zmienna); //odwracanie ciągu
$zmienna=$zmienna1.$zmienna2 //łączenie ciągów
$zmienna=$zmienna2.$zmienna1 //łączenie ciągów

Tak jak pisał @Irek, coś przekombinowujesz. 

nihil fit sine causa

Odnośnik do komentarza
Udostępnij na innych stronach

OT zamiast "męczyć" się z używaniem plików IMHO znacznie prościej jest zastosować bazę danych nie koniecznie MySQL, ale SQLite <SQLite3> dostępną w chyba każdej współczesnej wersji PHP na hostingu.

 

Do obsługi plików jest też funkcja moim zdaniem wyższego poziomu:

https://php.net/manual/en/function.file-get-contents.php

https://php.net/manual/en/function.file-put-contents.php

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności