Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie zawartośći pliku..., ...za pomocą krsort.
serek_x
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


Witam serdecznie. Mam problem z posortowanie pliku, z którego wczytywane byłyby komentarze, według dat od najświeższej.
  1. <?php
  2. $id=fopen($nazwa,"r");
  3. while(!feof($id))
  4.        {
  5. $linia=fgets($id);
  6.      if($linia!="")
  7.          {      
  8.                    list($date, $log, $kom)=split('|',$linia);
  9.             echo"<table width='600' FRAME=below><tr><td width='15' align=right>W dniu:</td><td> $date</td></tr><tr><td   align=right>użytkownik:</td> <td>$log</td></tr><tr><td align=right>napisał:</td><td>$kom</td></tr></table>";
  10.                    }
  11.    }
  12.                  $t=file($nazwa);
  13.              krsort($t);      
  14. fclose($id);
  15. }
  16. ?>

wiem, że źródło nie wygląda ciekawie, tymniemniej będę wdzięczny za jakąkolwiek pomoc...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
shpaque
post
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


to ja odkopię temat, bo mam zapis w pliku bardzo podobny, bo:

  1. <?
  2. $database = './../db/actuals.db';
  3.  
  4. if (!file_exists($database))
  5. {
  6. echo 'Baza danych nie odnaleziona!';
  7. }
  8.  
  9. $id = isset($_REQUEST['id']) ? $_REQUEST['id'] : '';
  10. $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
  11. $input = array('\"', '<div>', '</div>');
  12. $datas = array();
  13. $zdjecies = array();
  14. $tytuls = array();
  15. $artykuls = array();
  16. $count = 0;
  17. $kodindex = -1;
  18.  
  19. $items = file($database);
  20. foreach($items as $line)
  21. {
  22. list($data, $zdjecie, $tytul, $artykul) = explode('|', trim($line));
  23. $datas[$count] = $data;
  24. $zdjecies[$count] = $zdjecie;
  25. $tytuls[$count] = $tytul;
  26. $artykuls[$count] = $artykul;
  27. if ($id == $tytul)
  28. {
  29. $kodindex = $count;
  30. }
  31. $count++;
  32. }
  33.  
  34. if (!empty($action))
  35. {
  36. if ($action == 'delete')
  37. {
  38. if ($kodindex == -1)
  39. {
  40. echo 'Nie odnaleziono wpisu!';
  41. }
  42.  
  43. $file = fopen($database, 'w');
  44. for ($i=0; $i < $count; $i++)
  45. {
  46. if ($i != $kodindex)
  47. {
  48. fwrite($file, $datas[$i]);
  49. fwrite($file, '|');
  50. fwrite($file, $zdjecies[$i]);
  51. fwrite($file, '|');
  52. fwrite($file, $tytuls[$i]);
  53. fwrite($file, '|');
  54. fwrite($file, str_replace($input, '', $artykuls[$i]));
  55. fwrite($file, "\r\n");
  56. }
  57. }
  58. fclose($file);
  59. header('Location: '.basename(__FILE__));
  60. }
  61. else
  62. if ($action == 'update')
  63. {
  64. $file = fopen($database, 'w');
  65. for ($i=0; $i < $count; $i++)
  66. {
  67. if ($i == $kodindex)
  68. {
  69. $datas[$i] = $_POST['data'];
  70. $zdjecies[$i] = $_POST['zdjecie'];
  71. $tytuls[$i] = $_POST['tytul'];
  72. $artykuls[$i] = $_POST['artykul'];
  73. }
  74. fwrite($file, $datas[$i]);
  75. fwrite($file, '|');
  76. fwrite($file, $zdjecies[$i]);
  77. fwrite($file, '|');
  78. fwrite($file, $tytuls[$i]);
  79. fwrite($file, '|');
  80. fwrite($file, str_replace($input, '', $artykuls[$i]));
  81. fwrite($file, "\r\n");
  82. }
  83. fclose($file);
  84. header('Location: '.basename(__FILE__));
  85. }
  86. else
  87. if ($action == 'create')
  88. {
  89. for ($i=0; $i < $count; $i++)
  90.  
  91. $file = fopen($database, 'a');
  92. fwrite($file, $_POST['data']);
  93. fwrite($file, '|');
  94. fwrite($file, $_POST['zdjecie']);
  95. fwrite($file, '|');
  96. fwrite($file, $_POST['tytul']);
  97. fwrite($file, '|');
  98. fwrite($file, str_replace($input, '', $_POST['artykul']));
  99. fwrite($file, "\r\n");
  100. fclose($file);
  101. header('Location: '.basename(__FILE__));
  102. }
  103. }
  104. ?>


...więc jak wiadomo nowy wpis ląduje na końcu pliku - i niech tak zostanie! Chciałbym jedynie żeby WYŚWIETLANE były wpisy odwrotnie (sama ich edycja lub dodanie niech fizycznie wpisuje "nowe - linijkę niżej"). Czyli po polsku (IMG:style_emoticons/default/smile.gif) Plik niech się zapisuje tak jak jest, czyli im nowszy wpis - tym niżej, a niech wyświetla się odwrotnie - czy tak robi właśnie array_reverse? czy zmienia całą wartość pliku i nie daj Boże odwróci ją i nadpisze..?

WYŚWIETLANIE:
  1. for ($i=0; $i < $count; $i++)
  2. {
  3. echo "<tr>\n";
  4. echo "<td>" . $datas[$i] . "</td>\n";
  5. echo "<td><a href=./../db/aktualnosci/" . $zdjecies[$i] . " rel='fancy' title='".$tytuls[$i]."'><img src=./../db/aktualnosci/" . $zdjecies[$i] . " height = '50 px' border='0 px' title='Zobacz większe zdjęcie'></a></td>\n";
  6. echo "<td>" . $tytuls[$i] . "</td>\n";
  7. echo "<td>\n";
  8. echo " <a href=\"" . basename(__FILE__) . "?action=edit&id=" . $tytuls[$i] . "\" class='foot'>Edytuj</a> | \n";
  9. echo " <a href=\"" . basename(__FILE__) . "?action=delete&id=" . $tytuls[$i] . "\" class='foot'>Usuń</a>\n";
  10. echo "</td>\n";
  11. echo "</tr>\n";
  12. }
  13. echo "</table>\n";


już mam - wystarczyło zrobić tak:
  1. for ($i = $count - 1; $i >= 0; $i--)


Ten post edytował shpaque 2.11.2013, 17:36:08
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 04:41