Avatar billede janbb Juniormester
26. juni 2006 - 14:06 Der er 12 kommentarer og
1 løsning

biblioteksfiler sortering efter alfabetisk navn

Jeg har muligvis spurgt E om noget lign. før og svaret var muligvis
- at det ikke sådan lige kunne lade sig praktisere, men jeg forsøger
alligevel en lille gang til:

Bruger nedenstående rutine på min hjemmeside.
På min lokale komputer sorteres billedfilerne alfabetisk,
mens det på min hjemmesideserver formentlig sorteres efter dato el. lign.
Har man nogen mulighed for i koden at bestemme hvordan filerne
sorteres ?



<?php

$directory = "familyonp2";

    if ($dir = opendir($directory)) {
    while ((($file = readdir($dir)) !== false))  {
    if (substr($file, -3) == 'jpg' || substr($file, -3) == 'JPG') {
    $size = getimagesize($directory.'/'.$file);
    $lsize = lstat($directory.'/'.$file);
    $lsize[7] = floor($lsize[7]/1024);
    //$filnavn = preg_replace('/jpg$/i', 'txt', $file);
    //echo file_get_contents($file.".txt");
$filnavn = preg_replace('/jpg$/i', 'txt', $file);

echo file_get_contents($directory.'/'.$filnavn);

//echo file_get_contents($filnavn.""); //<---- $filnavn
    echo "
<center>
            <table  border=0 cellspacing=0 cellpadding=0>
              <tr>
             
                <td width=30% valign=top>
                <a href='$directory/$file' target=_blank><img src='$directory/$file' border=0 width=710 ></a>
                </td>
               
                <td width=70%><p>
                Navn: $file<br>
                Dimenzion: $size[0] x $size[1]px<br>
                Size: $lsize[7] kb<br>
                </p></td>
             
              </tr>
            </table>";     
        }
      }
  }
?>
Avatar billede erikjacobsen Ekspert
26. juni 2006 - 14:45 #1
Næppe. Men læs navnene ind i et array, http://php.net/sort og skriv så ud med udgangspunkt i dit array
Avatar billede Slettet bruger
26. juni 2006 - 14:54 #2
Som erikjacobsen siger skal du benytte et array og funktionen sort()
Med udgangspunkt i din kodestump har jeg lavet følgende, som burde virke.

<?php

    $directory = "familyonp2";

    $filelist = Array();
    if ($dir = opendir($directory)) {
        while ((($file = readdir($dir)) !== false))  {
            if (strtolower(substr($file, -3)) == 'jpg') {
                $filelist[] = $file;
            }
        }

        if(count($filelist) > 0) {
            sort($filelist);
            for($i=0;$i<=count($filelist);$i++) {

                $size = getimagesize($directory.'/'.$filelist[$i]);
                $lsize = lstat($directory.'/'.$filelist[$i]);
                $lsize[7] = floor($lsize[7]/1024);

                    echo "
                    <center>
                                <table  border=0 cellspacing=0 cellpadding=0>
                            <tr>
                                <td width=30% valign=top>
                                    <a href='$directory/$filelist[$i]' target=_blank><img src='$directory/$filelist[$i]' border=0 width=710 ></a>
                                </td>
                                <td width=70%><p>
                                    Navn: $filelist[$i]<br>
                                    Dimenzion: $size[0] x $size[1]px<br>
                                    Size: $lsize[7] kb<br>
                                </p></td>
                            </tr>
                        </table>";


            }
        }
    }
?>
Avatar billede jakobdo Ekspert
26. juni 2006 - 17:14 #3
Følgende kode:
$filelist = Array();
if ($dir = opendir($directory))
{
  while ((($file = readdir($dir)) !== false))
  {
    if (strtolower(substr($file, -3)) == 'jpg')
    {
      $filelist[] = $file;
    }
  }

Kan laves som:
$files = glob($directory . "/{*.jpg,*.JPG,*.jpe,*.JPE,*.jpeg,*.JPEG}", GLOB_BRACE);
Avatar billede janbb Juniormester
27. juni 2006 - 12:45 #4
cypermann:
Har prøvet din kode - den virker som om den ikke stopper op når der ikke er flere filer i bibbet, men fremkommer med et tomt link og denne fejlmeddelse:

Undefined offset: 7

Hvis man putter et billede mere ind i bibbet:
skriver den i stedet:
Undefined offset: 8

Så jeg har ikke selv fantasi til at gennemskue fejlen i koden.
Har ikke selv konstrueret den men fået den her på E.
Avatar billede erikjacobsen Ekspert
27. juni 2006 - 14:10 #5
Du skal bare rette
  for($i=0;$i<=count($filelist);$i++) {
til
  for($i=0;$i<count($filelist);$i++) {
Avatar billede janbb Juniormester
28. juni 2006 - 08:25 #6
Ja nu er der sørme samme rk.flg. i begge versioner.Det var en gevinst.
Skal du ikke osse have points erikjacobsen ? så smid lige et svar.
Avatar billede jakobdo Ekspert
28. juni 2006 - 08:41 #7
erikjacobsen samler ikke på point...
Avatar billede erikjacobsen Ekspert
28. juni 2006 - 09:27 #8
Ingen point til mig, tak.
Avatar billede Slettet bruger
28. juni 2006 - 10:11 #9
Ja der var da lige sneget sig et lig med tegn ind :-)

Det er en ganske smart funktion den glob.
Den har jeg nu aldrig set før.
Avatar billede jakobdo Ekspert
28. juni 2006 - 11:24 #10
Jeg fik den introduceret af den kære coderdk! :o) Og ja, den er sgu smart.
Avatar billede janbb Juniormester
29. juni 2006 - 12:39 #11
den del af min kode:

$filnavn = preg_replace('/jpg$/i', 'txt', $file);

echo file_get_contents($directory.'/'.$file);

Som du glemte at medtage ?

Troede jeg selv jeg kunne indflette, men ak ..
Det er ikke så let tilsyneladende.


Er det bare mig der ikke er særlig kløgtig ?
Kan nogen af jer måske hjælpe med det

vil gerne gi extra points
Avatar billede jakobdo Ekspert
29. juni 2006 - 14:43 #12
Fang mig på msn: jakobdo (at) hotmail (dot) com
Måske jeg kan få tid til at kigge på det i aften.
Avatar billede janbb Juniormester
01. juli 2006 - 04:20 #13
jakobdo:
Det lykkedes mig selv at få det rettet:
$filnavn = preg_replace('/jpg$/i', 'txt', $filelist[$i]);

echo file_get_contents($directory.'/'.$filnavn);

Havde stirret mig blind på $files

Tak igen - nu virker det fint det hele.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester