Skrypt komentarzy - odczyt .txt od najnowszych


(Mef Mefi Mefs) #1

witam, mam taki skrypt:

| TREŚĆ: |
| | |
| |

<?php // nazwa pliku z trescia komentarzy $nazwa = 'komentarze.txt'; // zapis jesli co wyslano z formularza if($_POST['tytul'] & $_POST['tresc'] & $_POST['autor']) { $fp=fopen($nazwa, 'a'); flock($fp, 2); fwrite($fp,$_POST['tytul'].'||'.strip_tags(strtr($_POST['tresc'],'\n',' ')).'||'.$_POST['autor'].'\n'); flock($fp, 3); fclose($fp); } // jezeli juz istnieja jakies komentarze if(is_file($nazwa)) { $linia = explode('\n',file_get_contents($nazwa)); $ilosc = count($linia); for($i=0; $i<$ilosc; $i--) { $komentarz = explode('||',$linia[$i]); echo ''.$komentarz[0].''.$komentarz[1].''.$komentarz[2].''; } } else echo 'Jeszcze nie ma zadnych komentarzy. Badz pierwszy i skomentuj! '; ?> [/code] wszystko działa, jednak chciałbym, by nowe komentarze wyświetlały się u samej góry. podejrzewam, ze odpowiada temu linijka:
[code]for($i=0; $i<$ilosc; $i++)

jednak gdy zamieniam $i++ na $i-- strona się zawiesza. i ładuje wiele razy

gdy dam tak:

for($i=$ilosc; $i>=$ilosc-6; $i--)

wyświetla się 5 ostatnich komentarzy.(z błędem) dodaje przed pierwszym komentarze

wielokrotnie.

ale chciałbym wszystkie komentarze wyświetlać z tym, że od najnowszych (u góry)

pozdrawiam


(mario@) #2
for($i=$ilosc-2; $i>=0; $i--)

Po co przy zapisie strstr?? Przed zapisem do pliku koniecznie przefiltruj dane. Ale czy nie lepszym (wygodniejszym) rozwiązaniem będzie coś takiego. Przy zapisie podmień na tą linijkę

fwrite($fp,$_POST['tytul'].'||'.strip_tags(str_replace("\r\n"," ",$_POST['tresc'])).'||'.$_POST['autor']."\n");

i odczyt pliku

$plik = file($nazwa);

	if(count($plik) > 0)

	{

		for($i=count($plik)-1;$i>=0;$i--)

		{

			$komentarz = explode('||',$plik[$i]);

			echo '
'.$komentarz[0].'
'.$komentarz[1].'
'.$komentarz[2].'
';

		}

	}

	else

		echo 'Jeszcze nie ma zadnych komentarzy. Badz pierwszy i skomentuj!

';

[/code]

(Mef Mefi Mefs) #3

(mario@) #4

(Mef Mefi Mefs) #5

no dobrze, ale gdzie mam to wkleić? albo zamiast czego? bo wkleiłem przed

i dodają się dalej komentarze, bez wpływu captcha.

a jak dodam zamiast:

<?php

// nazwa pliku z trescia komentarzy

$nazwa = 'komentarze.txt';

// zapis jesli co wyslano z formularza

if($_POST['tytul'] & $_POST['tresc'] & $_POST['autor'])

{

$fp=fopen($nazwa, 'a');

flock($fp, 2);

fwrite($fp,$_POST['tytul'].'||'.strip_tags(strtr($_POST['tresc'],'\n',' ')).'||'.$_POST['autor'].'\n');

flock($fp, 3);

fclose($fp);

}

// jezeli juz istnieja jakies komentarze

if(is_file($nazwa))

{

$linia = explode('\n',file_get_contents($nazwa));

$ilosc = count($linia);


for($i=0; $i<$ilosc; $i--)


{

$komentarz = explode('||',$linia[$i]);

echo '
'.$komentarz[0].'
'.$komentarz[1].'
'.$komentarz[2].'
';

}

}

else

echo 'Jeszcze nie ma zadnych komentarzy. Badz pierwszy i skomentuj!

';


?>[/code]

to komentarze się nie wyświetlają, ani nie dodają w ogóle.

gdy dam na sam początek, przed to komentarze i tak się dodają, mimo wyświetlenia komunikatu, że nie został dodany.


(mario@) #6
<?php();    $status = "";

(Mef Mefi Mefs) #7

dzięki za cierpliwość. działa!