Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kolejność wczytywania plików z serwera
Forum PHP.pl > Forum > PHP
daniel333
Cześć,
Mam kod, który pobiera mi wszystkie obrazki z folderów umieszczonych na serwerze, a potem je wyświetla na stronie. Sęk w tym, że kolejność wyświetlania ich na localhoście i na serwerze jest inna. Więc mam dwie opcje:
1) Dowiedzieć się w jaki sposób pliki są pobierane z serwera (na tą chwilę wydaje mi się, że jest to przypadkowość, bo nie jest to ani data modyfikacji, ani nazwa pliku).
2) Przerobić kod tak, żeby dobrze wyświetlał pliki niezależnie od wszystkiego.

Kod
<?php
if ($handle = opendir('./zdjecia')) {
    while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != ".." && $file !="min") {
    $plik=$file;
    
    $i = explode('.', $plik);
    $maly = reset($i);
    
    echo "<a  rel='example_group' href='./zdjecia/".$plik."' title=''><img class='miniaturka'  style='border: 1px solid #262626;' alt='' src='./zdjecia/min/".$plik."' /></a>";
}}}
?>
Crozin
Niemal zawsze w przypadku braku jawnie zdefiniowanego sortowania należy przyjąć, że dane zostaną odczytane/przesłane/przetworzone losowo. System plików nie jest tutaj wyjątkiem. Zapisz sobie w jakiejś bazie danych (może to być zwykły plik) kolejność w jakiej pliki mają być wyświetlane i wyświetlaj na jej podstawie.
freemp3
To zależy jak chcesz sortować, jeśli np po nazwie pliku, dacie dodania lub jego rozmiarze można to zrobić w kodzie.

Jako klucz tablicy files podajesz nazwę pliku lub inny parametr po którym chcesz sortować i jako wartość przypisujesz kod który ma się wyświetlić. Po wyjściu z pętli sortujesz tablicę według kluczy funkcją ksort oraz przy pomocy funkcji implode sklejasz wartości i wyświetlasz.

Kod
<?php
$files = array();
if ($handle = opendir('./zdjecia')) {
    while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != ".." && $file !="min") {
    $plik=$file;
    
    $i = explode('.', $plik);
    $maly = reset($i);
    $files[$plik] = "<a  rel='example_group' href='./zdjecia/".$plik."' title=''><img class='miniaturka'  style='border: 1px solid #262626;' alt='' src='./zdjecia/min/".$plik."' /></a>";
}}}
ksort($files);
echo implode('', $files);
?>


Pamiętać należy, aby nie nadpisać wartości gdyby trafił się identyczny klucz (np. gdybyś sortował według daty dodania). Zabezpieczenie można zrobić w ten sposób:
Kod
if(array_key_exists($key, $files))
{
  $i = 0;
  while(++$i)
  {
    $key_buf = $key . $i;
    if(!array_key_exists($key_buf, $files))
    {
      $files[$key_buf] = 'wartosc';
      break;
    }
  }
}
else
{
  $files[$key] = 'wartosc';
}
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.