Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie alfabetyczne.
Forum PHP.pl > Forum > PHP
fenox
Witam,

Od razu na wstępie zaznaczę, że jestem laikiem w sprawach php. Mam taki oto gotowy skrypt (to jego część):

Kod
<?php
$directory = "muzyka/rock_metal/";
$directory2 = "index.php?id=muzyka/rock_metal/";
$dir=opendir($directory);
$file_list=" &nbsp;<font class=\"alfabet\">A</font>
<UL style='list-style-image: url(images/muzyka_pobierz.gif); padding: 2 0 0 35px;
margin: 0 0 10px 0;'>";
while($file_name=readdir($dir))
{
if(($file_name!=".")&&($file_name!=".."))
{
$file = basename ($file_name, ".txt");
if($file{0} == 'A')
{
   $file_list.="<LI style=\"padding-left: 5px;\"><b><font class=\"naglowek\"><a class=\"alfabet_muzyka\" href=\"".$directory2. $file."\">$file</a></font></b>";
}
}
}
$file_list.="</UL>"; closedir($dir);
echo "$file_list";
?>


Ogólnie chodzi o to, że na podstawie plików tekstowych skrypt robi tabelkę w zależności od jakiej litery owy plik tekstowy się zaczyna to przyporządkowywuje go do odpowiedniego miejsca w tabeli.
Chodz mi oto, żeby linki w tej tabeli były posortowane alfabetycznie np. w kategorii A wszystko było alfabetycznie etc.

Byłbym naprawdę bardzo wdzięczny za pomoc!

Pozdrawiam.
Grzyw
Zrób to inaczej, w dwóch krokach.
Najpierw wrzuć te linki do tablicy, posortuj ją w PHP i wywal po sortowaniu w pętli jako lista wypunktowana.

  1. <?php
  2. $directory = "muzyka/rock_metal/";
  3. $directory2 = "index.php?id=muzyka/rock_metal/";
  4. $dir=opendir($directory);
  5. $file_list=" &nbsp;<font class=\"alfabet\">A</font>
  6. <UL style='list-style-image: url(images/muzyka_pobierz.gif); padding: 2 0 0 35px;
  7. margin: 0 0 10px 0;'>";
  8. while($file_name=readdir($dir))
  9. {
  10. if(($file_name!=".")&&($file_name!=".."))
  11.  {
  12.  $file = basename ($file_name, ".txt");
  13.  if($file{0} == 'A')
  14. {
  15.  $linki[$directory2]=$file;
  16. }
  17.  }
  18. }
  19. sort($linki);
  20. foreach ($linki as $dir => $link)
  21. {
  22. echo "<LI style=\"padding-left: 5px;\"><b><font class=\"naglowek\"><a class=\"alfabet_muzyka\" href=\"".$dir. $file."\">$link</a></font></b>";
  23. }
  24. echo "</UL>"; 
  25. closedir($dir);
  26. echo "$file_list";
  27. ?>


Nie jestem pewny, czy nie palnąłem literówki. Pisane w edytorze na forum.
Jeżeli nie rozumiesz jakiegoś fragmentu, daj znać.
Zawsze rób wcięcia przy blokach tekstu ograniczoncyh przez { } - to pomaga znacznie w czytelności kodu.
fenox
Wywala błąd:

Warning: closedir(): supplied argument is not a valid Directory resource in .. on line 177.

Nie bardzo wiem co mogłoby być źle, troche gubie się w tych zmiennych ; )
Grzyw
Sorry, nie zauważyłem, że wykorzystujesz zmienną $dir.
Zmień w pętli foreach $dir na jakąkolwiek inną zmienną (w 2 miejscach)
  1. <?php
  2. $directory = "muzyka/rock_metal/";
  3. $directory2 = "index.php?id=muzyka/rock_metal/";
  4. $dir=opendir($directory);
  5. $file_list=" &nbsp;<font class=\"alfabet\">A</font>
  6. <UL style='list-style-image: url(images/muzyka_pobierz.gif); padding: 2 0 0 35px;
  7. margin: 0 0 10px 0;'>";
  8. while($file_name=readdir($dir))
  9. {
  10. if(($file_name!=".")&&($file_name!=".."))
  11.  {
  12.  $file = basename ($file_name, ".txt");
  13.  if($file{0} == 'A')
  14. {
  15.  $linki[$directory2]=$file;
  16. }
  17.  }
  18. }
  19. sort($linki);
  20. foreach ($linki as $folder => $link)
  21. {
  22. echo "<LI style=\"padding-left: 5px;\"><b><font class=\"naglowek\"><a class=\"alfabet_muzyka\" href=\"".$folder. $file."\">$link</a></font></b>";
  23. }
  24. echo "</UL>"; 
  25. closedir($dir);
  26. echo "$file_list";
  27. ?>
fenox
Zamieniłem na coś takiego:

  1. <?php
  2. $directory = "muzyka/rock_metal/";
  3. $directory2 = "index.php?id=muzyka/rock_metal/";
  4. $dir=opendir($directory);
  5. $file_list=" &nbsp;<font class=\"alfabet\">A</font>
  6. <UL style='list-style-image: url(images/muzyka_pobierz.gif); padding: 2 0 0 35px;
  7. margin: 0 0 10px 0;'>";
  8. while($file_name=readdir($dir))
  9. {
  10. if(($file_name!=".")&&($file_name!=".."))
  11.  {
  12.  $file = basename ($file_name, ".txt");
  13.  if($file{0} == 'A')
  14. {
  15.  $linki[$directory2]=$file;
  16. }
  17.  }
  18. }
  19. sort($linki);
  20. foreach ($linki as $dir2 => $link)
  21. {
  22. echo "<LI style=\"padding-left: 5px;\"><b><font class=\"naglowek\"><a class=\"alfabet_muzyka\" href=\"".$dir2. $file1."\">$link</a></font></b>";
  23. }
  24. echo "</UL>"; 
  25. closedir($dir);
  26. echo "$file_list";
  27. ?>


I niby błędów nie wywala, ale w ogóle nie wyświetla elementów listy, jakieś cuda się dzieją ; D
I przepraszam za moją ułomność w kwesti php, ale potrzebuje to zrobić..
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.