Jump to content

[php] zapis do pliku w pętli


Recommended Posts

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.
 
Edited by Mar

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

Link to post
Share on other sites

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.
  • Like 1

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

Link to post
Share on other sites

@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

Link to post
Share on other sites

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 .

Link to post
Share on other sites

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.

 

Edited by ttah
Link to post
Share on other sites

@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

Link to post
Share on other sites

@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

Link to post
Share on other sites

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:

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

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

  • Like 1

HTTP 200 usługi IT - Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL
- Full Stack Developer - :chatownik:

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Terms of Use Privacy Policy