/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hvorfor sorteres ikke i alfabetisk orden?
Fra : Jakob Munck


Dato : 16-06-06 16:29

Jeg har implementeret et galleri på min site, og det fungerer udmærket.

http://www.jakobmunck.dk/galleri/index.php

Koden læser hvilke undermapper der er i billedmappen, og derudfra genereres
menuen til venstre. Når jeg ser den på min lokale server vises menupunkterne
(= mappernes navne) i alfabefisk rækkefølge, men når det er lagt på serveren
hos Web10 vises punkterne i en anden rækkefølge, som jeg ikke forstår (se
linket).

Funktionen som lister mapperne, ser sådan ud:
------------------
function html_nav(){
$opendir = "billeder/";
if ($handle = opendir($opendir)) {
echo '<ul>';
echo '<li class="home_button"><a href="../index.php">Home</a></li>';

while (false !== ($folder = readdir($handle))) {
if (!is_file($folder) && $folder != '.' && $folder != '..') {
if(strlen($folder) > 20){$folder_sub =
substr($folder,0,20).'...';}else{$folder_sub = $folder;}
if(get_param('dir') == $folder){$style_on_current =
'class="active"';}else{$style_on_current = '';}
echo '<li '.$style_on_current.'><a href="?dir='.urlencode($folder).'"
title="'.$folder.'">'.$folder_sub.'</a></li>';
}
}
closedir($handle);
echo '</ul>';
}
}
-----------------------

Hvordan kan det være at denne listning - med den samme kode - er forskellig
på min egen server og på mit webhotel? Kan der gøres noget, så listningen
bliver alfabetisk uanset hvor den vises?

v.h.
Jakob



 
 
Martin Kaltoft (16-06-2006)
Kommentar
Fra : Martin Kaltoft


Dato : 16-06-06 16:52

Jakob Munck wrote:

> Hvordan kan det være at denne listning - med den samme kode - er
> forskellig på min egen server og på mit webhotel? Kan der gøres noget, så
> listningen bliver alfabetisk uanset hvor den vises?

Det kan være fordi du bruger windows, hvor filsystemet ikke kender forskel
på store og små bogstaver i filnavnet, og din udbyder kører på en unix
maskine, hvor der er forskel på store og små bogstaver i fil-/mappenavne...

--
Med venlig hilsen

Martin Kaltoft

Jakob Munck (16-06-2006)
Kommentar
Fra : Jakob Munck


Dato : 16-06-06 17:07

>
> Det kan være fordi du bruger windows, hvor filsystemet ikke kender forskel
> på store og små bogstaver i filnavnet, og din udbyder kører på en unix
> maskine, hvor der er forskel på store og små bogstaver i
> fil-/mappenavne...
>
> --

Men alle mappe-navne starter med tal, og hos min udbyder sorteres også tal i
forkert (tilfældig?) orden. Se selv:

www.jakobmunck.dk/galleri/index.php

Så jeg tror ikke at din forklaring kan være den rigtige.

v.h.
Jakob



Michael Zedeler (16-06-2006)
Kommentar
Fra : Michael Zedeler


Dato : 16-06-06 18:56

Jakob Munck wrote:
>>Det kan være fordi du bruger windows, hvor filsystemet ikke kender forskel
>>på store og små bogstaver i filnavnet, og din udbyder kører på en unix
>>maskine, hvor der er forskel på store og små bogstaver i
>>fil-/mappenavne...
>
> Men alle mappe-navne starter med tal, og hos min udbyder sorteres også tal i
> forkert (tilfældig?) orden. Se selv:
>
> www.jakobmunck.dk/galleri/index.php
>
> Så jeg tror ikke at din forklaring kan være den rigtige.

Du kan ikke regne med at filerne er sorteret i nogen bestemt rækkefølge,
så du er nødt til at sortere dem selv. Hvis filsystemet skulel sortere
alfabetisk, når man bad om indholdet af et bestemt katalog, ville det
koste en del i tabt performance på store kataloger - dog alt afhængigt
af filsystemet.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at http://michael.zedeler.dk/

Bertel Lund Hansen (16-06-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-06-06 17:01

Jakob Munck skrev:

> (= mappernes navne) i alfabefisk rækkefølge, men når det er lagt på serveren
> hos Web10 vises punkterne i en anden rækkefølge, som jeg ikke forstår

Din kode indeholder slet ingen sortering. Filerne vises som de
ligger i mappen.

Du kan splitte løkken op i to: først en del der læser filerne og
propper dem i et array. Derefter sorteret du dit array, og så
gennemløber du arrayet og viser filnavnene i sorteret
rækkefølge.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Bertel Lund Hansen (16-06-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-06-06 18:04

Bertel Lund Hansen skrev:

> Du kan splitte løkken op i to:

Således:

function html_nav() {
   $opendir = '../';

   if ($handle = opendir($opendir)) {
      echo "<ul>\n";
      echo "<li class='home_button'><a href='../index.php'>Home</a></li>\n";

      $filearray=array();
      while (false !== ($folder = readdir($handle)))
         if (!is_file($folder) && $folder != '.' && $folder != '..')
            $filearray[]=$folder;
      closedir($handle);

      sort($filearray);

      foreach($filearray as $folder) {
         if (strlen($folder) > 20) $folder_sub = substr($folder,0,20)."...";
         else $folder_sub = $folder;
         if (get_param('dir') == $folder) $style_on_current = "class='active'";
         echo "<li ".$style_on_current."><a href='?dir=".urlencode($folder)."' title='$folder'>$folder_sub</a></li>\n";
      }

      echo "</ul>\n";
   }
}


--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Jakob Munck (16-06-2006)
Kommentar
Fra : Jakob Munck


Dato : 16-06-06 18:44

> Således:
>
> function html_nav() {
> $opendir = '../';
>
> if ($handle = opendir($opendir)) {
> echo "<ul>\n";
> echo "<li class='home_button'><a href='../index.php'>Home</a></li>\n";
>
> $filearray=array();
> while (false !== ($folder = readdir($handle)))
> if (!is_file($folder) && $folder != '.' && $folder != '..')
> $filearray[]=$folder;
> closedir($handle);
>
> sort($filearray);
>
> foreach($filearray as $folder) {
> if (strlen($folder) > 20) $folder_sub = substr($folder,0,20)."...";
> else $folder_sub = $folder;
> if (get_param('dir') == $folder) $style_on_current = "class='active'";
> echo "<li ".$style_on_current."><a href='?dir=".urlencode($folder)."'
> title='$folder'>$folder_sub</a></li>\n";
> }
>
> echo "</ul>\n";
> }
> }
>

Mange tak. Det virker perfekt, bortset fra at den hvide farvning af det
aktive menupunkt, nu også sættes på samtlige punkter under dette punkt. Se
her:

www.jakobmunck.dk/galleri/index.php?dir=2005_Syr_Dead_cities_SimonS

Det handler om "class=active" her:
------------
foreach($filearray as $folder) {
if (strlen($folder) > 20) $folder_sub = substr($folder,0,20)."...";
else $folder_sub = $folder;
if (get_param('dir') == $folder) $style_on_current = "class='active'"; //her
er problemet, tror jeg.
echo "<li ".$style_on_current."><a href='?dir=".urlencode($folder)."'
title='$folder'>$folder_sub</a></li>\n";
}
echo "</ul>\n";
}
}
--------------
Det er ganske rart at brugeren kan se, hvilket menupunkt han har valgt, så
hvis der er en løsning, der gør at kun det valgte gøres hvidt, så vil det
være herligt. Kan det lade sig gøre.....?

v.h.
Jakob



Bertel Lund Hansen (16-06-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-06-06 22:12

Jakob Munck skrev:

> Mange tak. Det virker perfekt, bortset fra at den hvide farvning af det
> aktive menupunkt, nu også sættes på samtlige punkter under dette punkt. Se
> her:

Ups. Der var faldet en linje ud:

> if (get_param('dir') == $folder) $style_on_current = "class='active'"; //her
> er problemet, tror jeg.

Ja. Nedenunder skal der stå:

   else{$style_on_current = '';

Ellers beholder $style_on_current sin værdi når først den er sat.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Jakob Munck (21-06-2006)
Kommentar
Fra : Jakob Munck


Dato : 21-06-06 06:49

> Ups. Der var faldet en linje ud:
>
>> if (get_param('dir') == $folder) $style_on_current = "class='active'";
>> //her
>> er problemet, tror jeg.
>
> Ja. Nedenunder skal der stå:
>
> else{$style_on_current = '';
>

Undskyld, jeg har været væk et par dage p.g.a. tekniske problemer. Men nu
virker det og jeg takker dig mange gange for hjælpen.

v.h.
Jakob



Jakob Munck (16-06-2006)
Kommentar
Fra : Jakob Munck


Dato : 16-06-06 18:12

>> (= mappernes navne) i alfabefisk rækkefølge, men når det er lagt på
>> serveren
>> hos Web10 vises punkterne i en anden rækkefølge, som jeg ikke forstår
>
> Din kode indeholder slet ingen sortering. Filerne vises som de
> ligger i mappen.
>

Hvis jeg tilgår mappen via ftp ligger under-mapperne (= menupunkterne) i en
anden rækkefølge. Og hvis jeg ændrer denne rækkefølge til at være
alfabetisk, har det ingen indflydelse på rækkefølgen, som den ses på nettet.


> Du kan splitte løkken op i to: først en del der læser filerne og
> propper dem i et array. Derefter sorteret du dit array, og så
> gennemløber du arrayet og viser filnavnene i sorteret
> rækkefølge.
>

Lyder rigtigt, men det er lidt for avanceret til mine kodekundskaber.

Tak for hjælpen.

v.h.
Jakob


> --
> Bertel
> http://bertel.lundhansen.dk/ http://fiduso.dk/



Bertel Lund Hansen (16-06-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 16-06-06 22:13

Jakob Munck skrev:

> Hvis jeg tilgår mappen via ftp ligger under-mapperne (= menupunkterne) i en
> anden rækkefølge. Og hvis jeg ændrer denne rækkefølge til at være
> alfabetisk, har det ingen indflydelse på rækkefølgen, som den ses på nettet.

Det er kun en præsentationsrækkefølge. Man kan ikke sortere i
filsystemets rækkefølge.

Det kunne man dog med DiskEditor på Windows 98 (men ikke via
FTP).

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste