Avatar billede Slettet bruger
08. november 2005 - 18:02 Der er 16 kommentarer og
1 løsning

Galleri ud fra readdir og opendir

Hey PHP freaks :o)

Jeg vil lave et galleri, det skal ligge i mappen 'galleri'
Når man laver en mappe, hvis nu vi siger den hedder 'fest hos martin' skal der i en kategori oversigt 'kategorier.php' være et link hvor der står 'fest hos martin' som link! Når man trykker der, skal man komme ind på 'kategori.php?id=id' der skal man så have en liste over alle de billeder der ligger i mappen 'fest hos martin' hvis man trykker på dem skal man kunne kommentere dem...
Jeg ved godt at jeg skal bruge readdir og opendir, men hvordan?

/rapsac
Avatar billede jakobdo Ekspert
08. november 2005 - 18:07 #1
Har du kigget på: www.php.net/opendir ?

Der er koden:
<?php
$dir = "/etc/php5/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
  if ($dh = opendir($dir)) {
      while (($file = readdir($dh)) !== false) {
          echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
      }
      closedir($dh);
  }
}
?>
Avatar billede jakobdo Ekspert
08. november 2005 - 18:08 #2
Dog slipper du nok heller ikke for en database løsning, da du vil kunne kommentere billederne.
Avatar billede hmortensen Nybegynder
08. november 2005 - 18:27 #3
Og den nemme løsning til at genneløbe en mappe:
foreach (glob("mappe/{*.jpg,*.JPG}", GLOB_BRACE) as $pic)
{
  echo $pic;
}
Avatar billede jakobdo Ekspert
08. november 2005 - 18:45 #4
Jeg glemmer den altid! :o)
Avatar billede Slettet bruger
08. november 2005 - 19:28 #5
Takker, vil kigge på det, men hvordan skal jeg lave kommenterings systemet? Da billederne jo ikke er indlagt i en database...
Avatar billede jakobdo Ekspert
08. november 2005 - 19:36 #6
Du kunne jo lave en tabel som hed kommentar
Den kunne så have:
id, filnavn (den fil som kommentaren knytter sig til), kommentar, bruger, osv..
Når så der klikkes på en fil, kan du lave en form, hvor man kan submitte en besked til den tabel.
Avatar billede Slettet bruger
08. november 2005 - 20:08 #7
Jo tak... Vender tilbage hvis jeg har flere spørgsmål!
Avatar billede Slettet bruger
10. november 2005 - 15:44 #8
Kan man også hente filstørrelse ?
Avatar billede Slettet bruger
10. november 2005 - 15:51 #9
Og når jeg laver listen skriver den:

.
..
blah.jpg
hej.php

osv. kan jeg fjerne de punktummer ?
Avatar billede jakobdo Ekspert
10. november 2005 - 16:47 #10
Inde i din while kan du teste om $file er ulig . og ..
Eller du kan teste det er lige den filtype du vil have.
$ext = end(implode(".",$file));
$ext vil så indeholde f.eks. jpg eller php
Hvis vi siger du skal vise billeder, kunne du lave et array med tilladte filtyper:
$ok = array("jpg","gif");
og så tjekke
if(in_array($ext,$ok))
echo $file . " er ok<br>";
else
echo $file . " er ikke ok<br>";
Avatar billede Slettet bruger
10. november 2005 - 16:52 #11
<?php
$dir = "/etc/php5/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
  if ($dh = opendir($dir)) {
      while (($file = readdir($dh)) !== false) {
$ext = end(implode(".",$file));
$ok = array("jpg", "gif", "bmp", "png");
if(in_array($ext,$ok)){
echo $file;
          }
      }
      closedir($dh);
  }
}
?>


Vil den vise alle JPG BMP PNG og GIF filerne i billed format ?
Avatar billede Slettet bruger
10. november 2005 - 16:53 #12
Nej, den vil skrive alle filnavnene der har JPG BMP PNG og GIF til sidst i navnene ?
Avatar billede jakobdo Ekspert
10. november 2005 - 16:54 #13
jeg ville nok lave det:
<?php
$dir = "/etc/php5/";
$ok = array("jpg", "gif", "bmp", "png");

// Open a known directory, and proceed to read its contents
if (is_dir($dir))
{
    if ($dh = opendir($dir))
    {
        while (($file = readdir($dh)) !== false)
        {
            $ext = end(implode(".",$file));
            if(in_array($ext,$ok))
            {
                echo $file;
            }
        }
        closedir($dh);
  }
}
?>

og for at vise billede, skal du jo bruge html:
<img src="ditbillede.endelse">
så måske hvis du retter: echo $file;
til:
echo "<img src=\"".$file."\">\n";
Avatar billede Slettet bruger
12. november 2005 - 14:38 #14
Ordnede det med:

if(($file == '.') || ($file == '..'){
} else {
...
}
Avatar billede Slettet bruger
24. marts 2007 - 11:23 #15
jakobdo - kommer du lige med et svar? :)
Avatar billede jakobdo Ekspert
25. marts 2007 - 10:59 #16
Svar!
Avatar billede jakobdo Ekspert
25. marts 2007 - 16:48 #17
takker for point.
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