Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] porządkowanie wyników dla foreach
Forum PHP.pl > Forum > Przedszkole
bogdanh
File manager airfilemanager pokazuje listę plików na serwerze calkowicie nieuporządkowaną.
Znalazłem pętle foreach która za to odpowiada.
Może ktoś poradzi jak ją zmienić,aby pliki były porządkowane np. po nazwie.
Poniżej cytuje:
Kod
# show files
  foreach($filetbl as $item)
  {
   $cnt++;
   $name = htmlspecialchars($item['name']);
   $preview = 'false';
   if($item['type'] == 'image' || $item['type'] == 'text') $preview = 'true';
   $total_size += $item['size'];
   $fsize = $item['size'].' B';
   if($item['size'] > 1023) $fsize = number_format($item['size'] / 1024, 1, '.', ' ').' KB';
   if($item['size'] > 1048575) $fsize = number_format($item['size'] / 1048576, 1, '.', ' ').' MB';
   $icon = 'unknown.gif';
   if(stristr($item['name'], '.doc') || stristr($item['name'], '.rtf') || stristr($item['name'], '.sxw') || stristr($item['name'], '.txt')) $icon = 'doc.gif';
    elseif(stristr($item['name'], '.gif') || stristr($item['name'], '.jpg') || stristr($item['name'], '.png') || stristr($item['name'], '.jpeg') || stristr($item['name'], '.jpe') || stristr($item['name'], '.svg')) $icon = 'image.gif';
    elseif(stristr($item['name'], '.pdf')) $icon = 'pdf.gif';
    elseif(stristr($item['name'], '.swf')) $icon = 'swf.gif';
   echo "\t\t".'<input type="checkbox" name="zaz[]" value="'.htmlspecialchars(urlencode($name)).'"><a href="#" onclick="sel(\''.htmlspecialchars(urlencode($name)).'\','.$preview.',false); return!1;" style="background-image:url(images/'.$icon.');"><span>'.htmlspecialchars($name).'</span> '.$fsize.'</a>'."\n";
  }
markonix
Poszedłbym wyżej i do wylistowania plików użyłbym np. glob, który domyślnie sortuje pliki (można dodać flagę wyłączającą sortowanie).
bogdanh
Cytat(markonix @ 23.05.2012, 16:05:35 ) *
Poszedłbym wyżej i do wylistowania plików użyłbym np. glob, który domyślnie sortuje pliki (można dodać flagę wyłączającą sortowanie).

Dziękuję. Będę próbował - może mi się poszczęści. smile.gif


Cytat(bogdanh @ 23.05.2012, 16:10:04 ) *
Dziękuję. Będę próbował - może mi się poszczęści. smile.gif

Jednak nie za bardzo daję sobie rade.
Sprobowalem posortować (wyzej) tablice $diletbl, ale tez kiszka.
asort($filetbl, SORT_LOCALE_STRING);
Za mało wiedzy. sad.gif
markonix
Co znaczy kiszka?
Nie sortuje?
Czemu mojej propozycji nie sprawdziłeś?
bogdanh
Cytat(markonix @ 23.05.2012, 20:47:30 ) *
Co znaczy kiszka?
Nie sortuje?
Czemu mojej propozycji nie sprawdziłeś?

Sorry za "kiszkę". smile.gif
Tak - nie sortuje.
Sprawdziłem - to znaczy próbowałem sprawdzać działanie glob.
Czytałem manual, ale mam za mało wiedzy żeby prawidłowo go zastosować.
W foreach($filetbl as $item) - np. foreach(glob($filetbl, flagi) as $item)
Poległem prawdopodobnie z powodu wzorca.
markonix
Glob zwraca tablicę, przypisz ją do zmiennej i sobie wyświetl za pomocą print_r, aby zweryfikować wylistowanie.
bogdanh
Cytat(markonix @ 24.05.2012, 12:08:49 ) *
Glob zwraca tablicę, przypisz ją do zmiennej i sobie wyświetl za pomocą print_r, aby zweryfikować wylistowanie.

Niestety nie udało sie z glob.
Zwracał mi jedynie array().
Za mało mam wiedzy. Muszę szukać dalej.
fafik007
Może to Ci pomoże:
  1. $pliki=glob("galeria/*.jpg");
  2. foreach($pliki as $wart)
  3. {
  4. $nazwa_pliku=basename($wart);
  5. echo"<img src=\"galeria/$nazwa_pliku\" />";
  6. }
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.