Avatar billede tomb3 Nybegynder
13. oktober 2005 - 20:34 Der er 22 kommentarer og
1 løsning

List billeder fra dir

Hej,

Skal bruge et script der læser filer fra /dir/ og poster dem på en side - fx. 4 i bredden x 7 i højden. Er der flere end 28 billeder, skal scriptet automatisk lave links til næste side, i bunden. Fx. "Side <- 1 2 3 4 5 ->"

Nogen der kan hjælpe mig?
Avatar billede jakobdo Ekspert
13. oktober 2005 - 21:20 #1
Dette er en del af vejen!

Håber du selv kan rette det til:

$dir = getcwd();

$allowExt = array("jpg");

// Open a known directory, and proceed to read its contents
if (is_dir($dir))
{
    if ($dh = opendir($dir))
    {
        $fileArray = array();
        while(($file = readdir($dh)) !== false)
        {
            $arr = explode (".", $file);
            $extension = end($arr);
            if(in_array($extension,$allowExt))
            {
                $fileArray[] = $file;
          }
        }
        closedir($dh);
    }
}

$kolonner = 2;
$antalImages = count($fileArray);

if($antalImages > 0)
{
    ksort($fileArray);
   
    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    $i = 0;
   
    foreach($fileArray as $file)
    {
    if(!($i%$kolonner) && $i>0 && $i < $antalImages)
    {
            $tmp .= "</tr>\n<tr>\n";
    }
    $tmp .= "<td><img src=\"".$file."\"></td>\n";
    $i++;
  }
 
  for($i=0; $antalImages % $kolonner && $i<$kolonner-($antalImages % $kolonner); $i++)
  {
        $tmp .= "<td>&nbsp;</td>\n";
  }
  $tmp .= "</tr>\n</table>";
  echo $tmp;
}
else
{
    echo "Vi har ikke uploadet nogle billeder endnu, de kommer...";
}

Det indeholder dog ikke funktion til over 28 billeder.
Avatar billede tomb3 Nybegynder
14. oktober 2005 - 02:45 #2
Thx..

Kan ikke få den til at vise billederne, den giver blot røde krydser. :(
Avatar billede jakobdo Ekspert
14. oktober 2005 - 06:25 #3
Det er fordi $file kun er filnavnet!
Du kan lave hacket:
$tmp .= "<td><img src=\"".$dir."/".$file."\"></td>\n";

Jeg antager du har sat: $dir i toppen til et eller andet.
Avatar billede tomb3 Nybegynder
15. oktober 2005 - 12:33 #4
Nice :)

Mangler bare det kun viser eks. 28 billeder pr. side, og skriver filnavn under hvert billede.
Avatar billede jakobdo Ekspert
15. oktober 2005 - 12:37 #5
Og det kan jeg ikke rigtigt greje i den løsning jeg har givet dig!
Måske hvis du har det i en database?
Avatar billede jakobdo Ekspert
15. oktober 2005 - 12:42 #6
Jeg tænkte på man måske kunne lave noget slam i stil med:

$_GET['offset']

Jeg har en ide, men jeg kigger på det i morgen!
Avatar billede tomb3 Nybegynder
15. oktober 2005 - 12:44 #7
Ville helst lave det uden SQL.. Er super hvis du gider se på det i morgen. :)
Avatar billede jakobdo Ekspert
16. oktober 2005 - 14:09 #8
Jeg har prøvet at lave noget her:

$antalImages = count($fileArray);
$offset = (isset($_GET["offset"]) && $_GET["offset"]>0)?$_GET["offset"]:0;
$maxPictures = 10;
$kolonner = 2;

if($antalImages > 0)
{
    ksort($fileArray);

    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset-10)."\">Prev</a></td>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset+10)."\">Prev</a></td>\n";
    echo "</tr>\n";
    echo "</table>\n";
   
    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    $i = 0;
   
    for($i = $offset; $i < $offset+$maxPictures; $i++)
    {
        if(!($i%$kolonner) && $i>0 && $i < $antalImages)
        {
            $tmp .= "</tr>\n<tr>\n";
        }
        $file = $fileArray[$i];
        $tmp .= "<td><a target=\"_blank\" href=\"".$file."\"><img src=\"thumb_".$file."\" title=\"Klik her for at se ".$file." i fuld størrelse!\" alt=\"".basename($file)."\"></a></td>\n";
  }
 
  for($i=0; $antalImages % $kolonner && $i<$kolonner-($antalImages % $kolonner); $i++)
  {
        $tmp .= "<td>&nbsp;</td>\n";
  }
  $tmp .= "</tr>\n</table>";
  echo $tmp;
 
  echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset-10)."\">Prev</a></td>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset+10)."\">Prev</a></td>\n";
    echo "</tr>\n";
    echo "</table>\n";
 
}
else
{
    echo "Vi har ikke uploadet nogle billeder endnu, de kommer...";
}

Det er ikke rigtigt smukt, og det mangler lidt håndtering af hvis man prøver at gå højere op osv...

Men test det lidt. :o)
Avatar billede tomb3 Nybegynder
17. oktober 2005 - 14:36 #9
Kan ikke få den til at vise nogen billeder.. Har jeg gjort noget galt?

<?
$dir = "pic";

$allowExt = array("jpg");

// Open a known directory, and proceed to read its contents
if (is_dir($dir))
{
    if ($dh = opendir($dir))
    {
        $fileArray = array();
        while(($file = readdir($dh)) !== false)
        {
            $arr = explode (".", $file);
            $extension = end($arr);
            if(in_array($extension,$allowExt))
            {
                $fileArray[] = $file;
          }
        }
        closedir($dh);
    }
}

antalImages = count($fileArray);
$offset = (isset($_GET["offset"]) && $_GET["offset"]>0)?$_GET["offset"]:0;
$maxPictures = 10;
$kolonner = 2;

if($antalImages > 0)
{
    ksort($fileArray);

    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset-10)."\">Prev</a></td>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset+10)."\">Prev</a></td>\n";
    echo "</tr>\n";
    echo "</table>\n";

    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    $i = 0;

    for($i = $offset; $i < $offset+$maxPictures; $i++)
    {
        if(!($i%$kolonner) && $i>0 && $i < $antalImages)
        {
            $tmp .= "</tr>\n<tr>\n";
        }
        $file = $fileArray[$i];
        $tmp .= "<td><a target=\"_blank\" href=\"".$file."\"><img src=\"thumb_".$file."\" title=\"Klik her for at se ".$file." i fuld størrelse!\" alt=\"".basename($file)."\"></a></td>\n";
  }

  for($i=0; $antalImages % $kolonner && $i<$kolonner-($antalImages % $kolonner); $i++)
  {
        $tmp .= "<td>&nbsp;</td>\n";
  }
  $tmp .= "</tr>\n</table>";
  echo $tmp;

  echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset-10)."\">Prev</a></td>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset+10)."\">Prev</a></td>\n";
    echo "</tr>\n";
    echo "</table>\n";

}
else
{
    echo "Vi har ikke uploadet nogle billeder endnu, de kommer...";
}

?>


Billederne ligger selvfølgelig i /pic/
Avatar billede jakobdo Ekspert
17. oktober 2005 - 14:40 #10
Ret:
$tmp .= "<td><a target=\"_blank\" href=\"".$file."\"><img src=\"thumb_".$file."\" title=\"Klik her for at se ".$file." i fuld størrelse!\" alt=\"".basename($file)."\"></a></td>\n";
Til:
$tmp .= "<td><img src=\"".$dir."/".$file."\"></td>\n";
Avatar billede tomb3 Nybegynder
17. oktober 2005 - 14:49 #11
Den udskriver stadig ikke billederne :(
Avatar billede jakobdo Ekspert
17. oktober 2005 - 14:57 #12
Må jeg se et link?
Avatar billede tomb3 Nybegynder
17. oktober 2005 - 15:06 #13
Avatar billede jakobdo Ekspert
17. oktober 2005 - 16:26 #14
Jeg tror du har fejl på din side, den er nemlig bare tom!
Avatar billede tomb3 Nybegynder
17. oktober 2005 - 17:28 #15
Ja, kan bare ikke lige gennemskue hvor.
Har gjort hvad du skrev.


<?
$dir = "pic";

$allowExt = array("jpg");

// Open a known directory, and proceed to read its contents
if (is_dir($dir))
{
    if ($dh = opendir($dir))
    {
        $fileArray = array();
        while(($file = readdir($dh)) !== false)
        {
            $arr = explode (".", $file);
            $extension = end($arr);
            if(in_array($extension,$allowExt))
            {
                $fileArray[] = $file;
          }
        }
        closedir($dh);
    }
}

antalImages = count($fileArray);
$offset = (isset($_GET["offset"]) && $_GET["offset"]>0)?$_GET["offset"]:0;
$maxPictures = 10;
$kolonner = 2;

if($antalImages > 0)
{
    ksort($fileArray);

    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset-10)."\">Prev</a></td>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset+10)."\">Prev</a></td>\n";
    echo "</tr>\n";
    echo "</table>\n";

    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    $i = 0;

    for($i = $offset; $i < $offset+$maxPictures; $i++)
    {
        if(!($i%$kolonner) && $i>0 && $i < $antalImages)
        {
            $tmp .= "</tr>\n<tr>\n";
        }
        $file = $fileArray[$i];
        $tmp .= "<td><img src=\"".$dir."/".$file."\"></td>\n";
  }

  for($i=0; $antalImages % $kolonner && $i<$kolonner-($antalImages % $kolonner); $i++)
  {
        $tmp .= "<td>&nbsp;</td>\n";
  }
  $tmp .= "</tr>\n</table>";
  echo $tmp;

  echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset-10)."\">Prev</a></td>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset+10)."\">Prev</a></td>\n";
    echo "</tr>\n";
    echo "</table>\n";

}
else
{
    echo "Vi har ikke uploadet nogle billeder endnu, de kommer...";
}

?>
Avatar billede jakobdo Ekspert
17. oktober 2005 - 17:44 #16
Prøv at test denne:

<?
$dir = "/pic/";
$realDir = $_SERVER["DOCUMENT_ROOT"] . $dir;
$webDir  = $_SERVER["SERVER_NAME"] . $dir;

$allowExt = array("jpg");

// Open a known directory, and proceed to read its contents
if (is_dir($realDir))
{
    if ($dh = opendir($realDir))
    {
        $fileArray = array();
        while(($file = readdir($dh)) !== false)
        {
            $arr = explode (".", $file);
            $extension = end($arr);
            if(in_array($extension,$allowExt))
            {
                $fileArray[] = $file;
            }
        }
        closedir($dh);
    }
}

$antalImages = count($fileArray);
$offset = (isset($_GET["offset"]) && $_GET["offset"]>0)?$_GET["offset"]:0;
$maxPictures = 10;
$kolonner = 2;

if($antalImages > 0)
{
    ksort($fileArray);

    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset-10)."\">Prev</a></td>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset+10)."\">Prev</a></td>\n";
    echo "</tr>\n";
    echo "</table>\n";

    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    $i = 0;

    for($i = $offset; $i < $offset+$maxPictures; $i++)
    {
        if(!($i%$kolonner) && $i>0 && $i < $antalImages)
        {
            $tmp .= "</tr>\n<tr>\n";
        }
        $file = $fileArray[$i];
        $tmp .= "<td><img src=\"http://".$webDir.$file."\"></td>\n";
  }

  for($i=0; $antalImages % $kolonner && $i<$kolonner-($antalImages % $kolonner); $i++)
  {
        $tmp .= "<td>&nbsp;</td>\n";
  }
  $tmp .= "</tr>\n</table>";
  echo $tmp;

  echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset-10)."\">Prev</a></td>\n";
    echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset+10)."\">Prev</a></td>\n";
    echo "</tr>\n";
    echo "</table>\n";

}
else
{
    echo "Vi har ikke uploadet nogle billeder endnu, de kommer...";
}

?>
Avatar billede tomb3 Nybegynder
17. oktober 2005 - 17:57 #17
Yes.. så virker det :D

Det skal bare ikke være muligt at gå til næste side, hvis der ikke er flere billeder. Plus den ikke _skal_ vise 10 billeder pr. side, hvis der kun er eks. 7 (som på side2).
Avatar billede tomb3 Nybegynder
17. oktober 2005 - 18:04 #18
Har et fuldendt script i ASP som virker, ved ik om det er til at omskrive dele fra?
Må jeg skrive til dig på MSN?
Avatar billede jakobdo Ekspert
17. oktober 2005 - 18:05 #19
jakobdo (at) hotmail (dot) com
Avatar billede tomb3 Nybegynder
17. oktober 2005 - 18:10 #20
Har lige add' dig
Avatar billede jakobdo Ekspert
17. oktober 2005 - 18:30 #21
<?
$dir = "/pic/";
$realDir = $_SERVER["DOCUMENT_ROOT"] . $dir;
$webDir  = $_SERVER["SERVER_NAME"] . $dir;

$allowExt = array("jpg");

// Open a known directory, and proceed to read its contents
if (is_dir($realDir))
{
    if ($dh = opendir($realDir))
    {
        $fileArray = array();
        while(($file = readdir($dh)) !== false)
        {
            $arr = explode (".", $file);
            $extension = end($arr);
            if(in_array($extension,$allowExt))
            {
                $fileArray[] = $file;
            }
        }
        closedir($dh);
    }
}

$antalImages = count($fileArray)/2;
$offset = (isset($_GET["offset"]) && $_GET["offset"]>0)?$_GET["offset"]:0;
$maxPictures = 10;
$kolonner = 2;
$maxLimit = $offset+$maxPictures;

if($antalImages > 0)
{
    ksort($fileArray);

    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    if($offset == 0)
        echo "<td>Prev</td>\n";
    else
        echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset-10)."\">Prev</a></td>\n";
   
    if($maxLimit>$antalImages)
        echo "<td>Next</a></td>\n";
    else
        echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset+10)."\">Next</a></td>\n";
   
    echo "</tr>\n";
    echo "</table>\n";

    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
    $i = 0;

    for($i = $offset; $i < $offset+$maxPictures && $i < $antalImages; $i++)
    {
        if(!($i%$kolonner) && $i>0 && $i < $antalImages)
        {
            $tmp .= "</tr>\n<tr>\n";
        }
        $file = $fileArray[$i];
        $tmp .= "<td><img src=\"http://".$webDir."thumb_".$file."\"></td>\n";
    }

    for($i=0; $antalImages % $kolonner && $i<$kolonner-($antalImages % $kolonner); $i++)
    {
        $tmp .= "<td>&nbsp;</td>\n";
    }
    $tmp .= "</tr>\n</table>";
    echo $tmp;

    echo "<table id=\"centerTable\">\n";
    echo "<tr>\n";
   
    if($offset == 0)
        echo "<td>Prev</td>\n";
    else
        echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset-10)."\">Prev</a></td>\n";
       
    if($maxLimit>$antalImages)
        echo "<td>Next</a></td>\n";
    else
        echo "<td><a href=\"".$_SERVER["PHP_SELF"]."?offset=".($offset+10)."\">Next</a></td>\n";
    echo "</tr>\n";
    echo "</table>\n";
}
else
{
    echo "Vi har ikke uploadet nogle billeder endnu, de kommer...";
}

?>
Avatar billede tomb3 Nybegynder
14. januar 2006 - 17:37 #22
lukker
Avatar billede tomb3 Nybegynder
14. januar 2006 - 17:38 #23
..
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