ďťż

[php] księga gości TXT, wpisy od najnowszego w dół

       

Podstrony


telcocafe

Witajcie mam problem z stworzeniem księgi która będzie wyświetlać wpisy od najnowszego w dól. Zrobiłem coś takiego, że zaraz po otwarciu pliku ustawialo miejsce wpisu na początku a nie na końcu.

<?php $file = file("wpisy.txt"); foreach($file as $linijka) { $wpis = explode("|",$linijka); echo '<b>Dodał/a: '.$wpis[0]."</b><br />".$wpis[1]."<hr />"; } ?> <?php $nick = htmlspecialchars($_POST['nick']); $tresc = htmlspecialchars($_POST['tresc']); $tresc = str_replace("\n", '', $tresc); if(empty($nick) and empty($tresc)) { // prosty formularz zawierający dwa pola echo '<form action="" method="post" name="formularz"> Imię: <br /><input type="text" name="nick" style="width: 200px;" /><br /> Tresć wpisu: <br /><textarea name="tresc" style="width: 200px; height: 100px;"> </textarea><br /> <input type="submit" value="Wyslij" /> </form><br />'; } else { $dane = $nick."|".$tresc."\n"; $file = "wpisy.txt"; $fp = fopen($file, "a"); fseek($fp, 0); //OTO TUTAJ CHODZI flock($fp, 2); fwrite($fp, $dane); flock($fp, 3); fclose($fp); echo "Wpis został wysłany<br />"; echo "<A HREF=index.php?page=ksiega>odswież</A><br />"; } ?>

Proszę o pomoc! Jak zrobic tak aby wpisy były wyświetlane od najnowszego do najstarszego? Najłatwiejszą metodą byłoby dodanie wpisu na początku pliku a nie na końcu. Bardzo proszę o pomoc!
Użytkownik TexPac edytował ten post 09 wrzesień 2006, 16:08


Parametr "a" w funkcji fopen
Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego końcu. Jeśli plik nie istnieje to próbuje go utworzyć.
Dlatego też aby dodać na początek najłatwiej by było najpierw otworzyć plik z parametrem "r" [tylko do odczytu], wczytać do zmiennej zawartość pliku, dodać na początek zmiennej nowy wpis, a następnie otworzyć plik z parametrem "w" i dopisać naszą zmienną, zamknąć plik.

Niestety; fseek tutaj nie zadziała bo używasz "a". Możesz spróbować zamienić "a" na "a+" - gdyż jak czytamy w manualu/fseek:

fseek() gives also undefined results for append-only streams (opened with "a" flag).
Co może być przyczyną problemów.

Przykład:<? // wczytanie starych danych // otwarcie pliku do odczytu $fp = fopen("plik.txt", "r"); //odczytanie danych $stareDane = fread($fp, filesize("plik.txt")); // zamknięcie pliku fclose($fp) // stworzenie nowych danych $noweDane = "To, co chcesz, żeby było na początku\n"; $noweDane .= $stareDane; // zapisanie nowych danych // otwarcie pliku do zapisu $fp = fopen("plik.txt", "w"); // zapisanie danych fputs($fp, $noweDane); // zamknięcie pliku fclose($fp); ?>

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.