Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak Zmienić?
Forum PHP.pl > Forum > PHP
Kaczor.net
Jak zmienić ten sposób zapisu do pliku:

  1. <?
  2.  
  3. $file=fopen(&#092;"dane.txt\", \"a\");
  4. fwrite($file, &#092;"$nick||$mail||$www||$data||$ip||$wpis||n\");
  5. fclose($file);
  6.  
  7. ?>


tak by dane były dapisywane na początek pliku. Męcze się z tym juz od jakiegos czasu i nic sad.gif Pomocy!
FiDO
Generalnie dopisywanie na poczatek pliku (technicznie mozliwe, ale niewydajne) jest bardzo zlym pomyslem, powiedz co chcesz przez to osiagnac, a napewno znajdzie sie na to lepszy sposob.
hwao
http://pl.php.net/fopen
Cytat(manual)
'a'  Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
'r'  Open for reading only; place the file pointer at the beginning of the file.
'w'  Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.

ph34r.gif
Kaczor.net
Po to by nowe wpisy były wyświetlane od najnowszego do najstarszego. W pliku pokaz.php o takiej struktórze:

  1. <?
  2.  
  3. $file_name='dane.txt';
  4. $file_data=file($file_name);
  5.  
  6. for($i=0; $i<count($file_data); $i++){$file=explode('||',$file_data[$i]);
  7.  
  8. echo'<br>
  9. <center><table border=\"1\" bordercolor=\"SILVER\" cellpadding=\"2\" cellspacing=\"2\">
  10. <tr>
  11. <td width=\"60\" align=\"right\"><font class=\"Stopka\">Nick:</font></td>
  12. <td width=\"200\"><center><a href=\"mailto:'.$file['1'].'\">'.$file['0'].'</a></center></td>
  13. <td width=\"60\">&nbsp;</td>
  14. </tr>
  15. <tr>
  16. <td width=\"60\" align=\"right\"><font class=\"Stopka\">WWW:</font></td>
  17. <td width=\"200\"><center><a href=\"http://'.$file['2'].'\" target=\"_blank\">http://'.$file['2'].'</a></center></td>
  18. <td width=\"60\">&nbsp;</td>
  19. </tr>
  20. <tr>
  21. <td width=\"60\" align=\"right\"><font class=\"Stopka\">Data:</font></td>
  22. <td width=\"200\"><center>'.$file['3'].'</center></td>
  23. <td width=\"60\">&nbsp;</td>
  24. </tr>
  25. <tr>
  26. <td width=\"60\" align=\"right\"><font class=\"Stopka\">IP:</font></td>
  27. <td width=\"200\"><center>'.$file['4'].'</center></td>
  28. <td width=\"60\">&nbsp;</td>
  29. </tr>
  30. <tr>
  31. <td colspan=\"3\" width=\"320\"><br>'.$file['5'].'<br><br></td>
  32. </tr>
  33. </table></center>
  34. <br>
  35.  
  36. ';}
  37.  
  38. ?>


zamienienie funkcji

  1. <?php
  2. for($i=0; $i<count($file_data); $i++)
  3. ?>


na

  1. <?php
  2. for($i=count($file_data); $i<0; $i--)
  3. ?>


nie przyniosło porządanego efektu, wieć jestem zmuszony do dopisywania na początek pliku.
FiDO
Wstaw
  1. <?php
  2. $file_data = array_reverse($file_data);
  3. ?>

za linijka pobierajaca dane za pomoca funkcji file()

Swoja droga to (troche zmieniona wersja tego co podales)
  1. <?php
  2. for($i = count($file_data) - 1; $i >= 0; $i--)
  3. ?>

tez powinno dzialac.

Jak widzisz sa conajmniej 2 inne prostsze sposoby na to co chciales osiagnac.
Kaczor.net
Działa laugh.gif Dzięki za pomoc! Wykorzystałem pierwszą opcje FiDo.
Parti
Cytat(Kaczor.net @ 2004-08-21 22:27:07)
tak by dane były dapisywane na początek pliku. Męcze się z tym juz od jakiegos czasu i nic sad.gif Pomocy!

Żeby jednak odpowiedzieć na Twoje pytanie, podam sposób. Najczęściej tworzy się nowy tymczasowy plik, do którego wpisujesz to co chcesz mieć na początku pliku. Następnie przepisujesz wszystko z oryginalnego pliku. Kasujesz oryginalny plik i zmieniasz nazwe pliku tymczasowego.

W sytuacjach kiedy dopisywanie na początku pliku jest konieczne i nie da się tego obejść w jakiś łatwy sposób, warto tworzyć bufor. Tzn. jeśli dopisujemy coś na początek, to robimy od razu miejsce na następne 100 linijek i sukcesywnie je zapełniamy. Dopiero jak wykorzystamy całe miejsce z bufora korzystamy z procedury opisanej wyżej (robiąc oczywiście miejsce na następne 100 linijek) itd.
Kaczor.net
Mam nowe pytanie.
Wyzej podałem kod pliku pokaz.php i chciałbym sie dowiedzieć co mam wstawić by przy każdym wpisie był pokazany jego numerek?
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-2025 Invision Power Services, Inc.