Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Sortowanie nazw folderów, plików
Forum PHP.pl > Forum > PHP
tomeknh
Witam!

Mam poniższy kod:

  1. <?php
  2.  
  3. $dirs = array ("architektura", "prywatne", "komercyjne", "zagraniczne");
  4. $dirs_xml = array ("pierwsza", "druga", "trzecia", "czwarta");
  5. $opis_f = 'opis.txt';
  6. $min_f = 'min.jpg';
  7.  
  8. $o = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>'."\n<galerie>\n";
  9.  
  10. for ($i = 0; $i < 4; $i++)
  11. {
  12. $path = 'galeria/'.$dirs[$i];
  13. $rep = opendir($path);
  14. $o .= "<{$dirs_xml[$i]}>\n";
  15. unset ($dirs_temp);
  16. while (false != ($dir = readdir($rep)))
  17. {
  18. if (is_dir($path.'/'.$dir) && $dir != '.' && $dir != '..')
  19. {
  20. $path2 = $path.'/'.$dir;
  21. $rep2 = opendir($path2);
  22. unset ($img);
  23. while (false != ($file = readdir($rep2)))
  24. {
  25. if ($file != '.' && $file != '..' && $file != $opis_f && $file != $min_f && $file != 'Thumbs.db')
  26. {
  27. $img[] = $file;
  28. }
  29. }
  30. $opis_f_fn = $path2.'/'.$opis_f;
  31. if (file_exists($opis_f_fn))
  32. {
  33. $fh = fopen($opis_f_fn, 'r');
  34. $opis = fread($fh, filesize($opis_f_fn));
  35. }
  36. else
  37. $opis = "";
  38.  
  39. if (file_exists($path2.'/'.$min_f))
  40. {
  41. $min = $min_f;
  42. }
  43. else
  44. {
  45. $min = $img[0];
  46. }
  47.  
  48. $o .= '<mini opis="'.$opis.'" path="'.$path2.'/'.$min.'">'."\n";
  49. foreach ($img as $im)
  50. {
  51. $o .= "<img>$path2/$im</img>\n";
  52.  
  53. }
  54. $o .= "</mini>\n";
  55. closedir($rep2);
  56. }
  57. }
  58. closedir($rep);
  59. $o .= "</{$dirs_xml[$i]}>\n";
  60. }
  61. $o .= '</galerie>';
  62. $fn = "gallery.xml";
  63. $fh = fopen($fn, 'w') or die("can't open file");
  64. fwrite($fh, $o);
  65. fclose($fh);
  66. ?>






Problem wygląda tak, że na jednym serwerze pliki są posortowane w kolejności a na drugim nie.
Struktura folderów, plików wygląda tak, że 101_nazwa, 102_nazwa, 103_nazwa.....01_plik.jpg, 02_plik.jpg itp.

1. Dlaczego na jednym serwerze jest wszystko posortowane a na drugim wywala jakąś losową kolejność ? Co trzeba zmienić w ustawieniach serwera żeby sortowało w kolejności?
lub
2. Co trzeba zmienić w kodzie, żeby sortowało te foldery i pliki ?


Pozdrawiam!!!
piotr94
bo sortowanie masz zrobione nie programowo, ale poprzez serwer. I jeden z nich segreguje wg. nazw, a drugi wg. np. daty dodania, rozmiaru,...
jak to zrobićquestionmark.gif wrzucasz rekordy na początku do tablicy, potem przepuszczasz tablicę przez sort lub natsort i dopiero wtedy dane z tablicy poddajesz dalszej obróbce ;-)
tomeknh
A co zmienić w ustawieniach serwera żeby sortowało pokolei ? po nazwie?
Pilsener
To bez sensu, bo uzależniasz kolejność wyświetlania od ustawień nawet nie serwera, tylko systemu operacyjnego, na którym to stoi. Nikt nie będzie kolejkował plików na dysku dla potrzeb skryptu w PHP smile.gif

A jak zajdzie potrzeba sortowania po dacie czy rozmiarze to co wtedy? I nie rozumiem, po co się tak męczysz z tymi pętlami, wszystkie pliki z danej lokalizacji łatwo wrzucić do tablicy funkcją glob a potem posortować po nazwie - dwie linijki kodu:
http://pl.php.net/manual/pl/function.sort.php

I jak chcesz wczytać plik do zmiennej to użyj file_get-contents.
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.