Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapisywanie do pliku
Forum PHP.pl > Forum > Gotowe rozwiązania
alchemic
Witam

mam taki problem:
mam scrypt komentarzy i dziala poprawnie wszystko tylko che by zapisywal/odczytywal komentarze w ten sposob by najstarsze byly na koncu a nowe na poczatku... co mam w nim zmienic ?

[php:1:d4a2961296]
<?
$DATADIR="data/";
$FORMAT="<TABLE align="center" WIDTH=95% cellspacing=6 style="border-collapse: collapse" bordercolor="#6585A1" bgcolor="#6585A1" cellpadding="0" border="0">
<TR bgcolor="#6585A1" ><TD bgcolor="#6585A1"><b>
<font face="Verdana" size="1" color="#FFCC00">%imie% </font></b>
<font face="Verdana" size="1" color="#111111">|</font><font face="Verdana" size="1" color="#800000"><b> </b></font><font face="Verdana">
<span style="font-size: 7pt">%data%</span></font></TD>
</TR><TR>
<TD bgcolor="#6585A1"><font face="Verdana" color="#d8e6f1" style="font-size: 9pt">%tekst%</font></TD></TR><TR>
<TD bgcolor="#6585A1"><font color="#ffffff">_______________________________</font></TD></TR></TABLE></div>";

$commentID="a$commentID";

function displayComments()
{
global $commentID, $start, $DATADIR, $FORMAT;

if(strstr($commentID, "/"))
return;

if(!file_exists($DATADIR.$commentID))
return;

$file=fopen($DATADIR.$commentID, "r");
flock($file, 1);

$i=0;

while(!feof($file))
{
$imie=chop(fgets($file, 1000));
$email=chop(fgets($file, 1000));
$data=chop(fgets($file, 1000));
$comment=chop(fgets($file, 100000));

if(feof($file))
break;

$display=$FORMAT;

if($email)
$mailto="<A HREF="mailto:$email">$email</A>";

$display=str_replace("%imie%", $imie, $display);
$display=str_replace("%email%", $mailto, $display);
$display=str_replace("%data%", $data, $display);
$display=str_replace("%tekst%", $comment, $display);

echo($display);

$i++;
}

flock($file, 3);
fclose($file);
}

function displayForm()
{
global $REQUEST_URI;
$len=strlen($REQUEST_URI)-strlen(strchr($REQUEST_URI, "?"));
$url=substr($REQUEST_URI, 0, $len);
?>
<FORM ACTION="panel_admina.php?id=2121" METHOD=POST>
<p>
<INPUT TYPE=HIDDEN NAME=COMMENTACTION VALUE=add>
</p>
<p>
<TABLE width="487">
</p>
<TR>
<TD><table width="90%" border="0" align="center">
<tr>
<td><b><font color="#003366" size="1" face="Verdana">Kto:</font></b></td>
<td><font face="Verdana" size="1" color="#003366"><b>
<input name=f_imie size=35 style="font-family: Verdana; font-size: 10pt; border: 1px solid #DCDEDF; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1; background-color: #7A97AF">
</b></font></td>
</tr>
<tr>
<td width="9%"><b><font color="#003366" size="1" face="Verdana">Wpis:</font></b></td>
<td width="91%"><font face="Verdana" size="1" color="#003366"><b>
<textarea name="f_tresc" cols="40" rows="3" style="font-family: Verdana; font-size: 10pt; color: #000000; border: 1px solid #DCDEDF; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1; background-color: #7A97AF"></textarea>
</b></font></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="SUBMIT" type=submit value="Dodaj" style="font-family: Verdana; font-size: 10px; color: #FFFFFF; font-weight: bold; border: 1px solid #FFFFFF; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1; background-color: #003366"></td>
</tr>
</table> <b></b></TD>
<TD><font face="Verdana" size="1" color="#003366"><b>
</b></font></TD>
<TR>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TR>
<TD></TD>
<TD>&nbsp; </TD>
</FORM>
<div align="center">
<?
}

if($COMMENTACTION=="add")
{
$file=fopen($DATADIR.$commentID, "a");
flock($file, 2);

$f_tresc=str_replace("n", "<BR>", $f_tresc);
$f_tresc=str_replace("r", "", $f_tresc);
$f_imie=str_replace("n", "<BR>", $f_imie);
$f_imei=str_replace("r", "", $f_imie);
$f_email=str_replace("n", "<BR>", $f_email);
$f_email=str_replace("r", "", $f_email);

fputs($file, $f_imie);
fputs($file, "n");
fputs($file, $f_email);
fputs($file, "n");
fputs($file, date("H:i d-m-Y"));
fputs($file, "n");
fputs($file, $f_tresc);
fputs($file, "n");

flock($file, 3);
fclose($file);
}

?>
</div>

[/php:1:d4a2961296]
Chewolf
Zapisując tablicę danych do pliku odwróć ją [manual:4c5e1f124f]array_reverse[/manual:4c5e1f124f]
alchemic
nie bardzo wiem jak to zastosowac, nie latwiej jest zmienic parametry
a i r ? jesli nie napisz mi jak odwrotnie odczytac tablice wynikow...
Majdan
Cytat
nie bardzo wiem jak to zastosowac, nie latwiej jest zmienic parametry
a i r ? jesli nie napisz mi jak odwrotnie odczytac tablice wynikow...

A czy skorzystałeś z linku, który Ci podał m5910?
Parametry są omówione dokładnie w manualu. "r" - zapis tylko do odczytu, "a" - tylko do zapisu.
alchemic
r - tryb odczytu - otwarcie pliku do odczytu, zaczynając od początku pliku

a - tryb dodawania - otwarcie pliku do dodawania zawartości, począwszy od końca istniejącej

chodzi mi by tak ustawic parametry by bylo zapisywane od poczatki pliku cos tak pustawialem ale kasowal mi poprzedie wpisy...
Majdan
Nie ma takiego parametru dla [manual:3a58eef595]fopen[/manual:3a58eef595], aby uzyskać to co chcesz robić. Musisz to zrobić inaczej.

Było już na forum.
:arrow: http://forum.php.pl/viewtopic.php?t=15171

PS. Szukanie nie boli.
peterj
może lepiej użyć funkcji rewind();
http://www.php.net/manual/pl/function.rewind.php
Przykład zastosowania:
[php:1:941a3ac654]<?php
$dane="jakieś dane do dodania";
$plik="plik.txt";
$fp=fopen("$plik", "r+");
rewind($fp);
flock($fp, 2);
fputs($fp, $dane);
flock($fp, 3);
fclose($fp);
?> [/php:1:941a3ac654]
Funkcja rewind(); powoduje 'przewinięcie' pliku do początku i potem dodajemy jakies dane, zostaną dodane na poczatku pliku.
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-2024 Invision Power Services, Inc.