Avatar billede dktekno Nybegynder
06. marts 2007 - 21:14 Der er 5 kommentarer og
1 løsning

Hvordan viser jeg liste over filer i mappen - med beskrivelse?

Først vil jeg lige sige: Ja, jeg har ledt på nettet efter file-managers, men de er alle alt for komplicerede/avancerede, og jeg har brug for et simpelt script, hvilket jeg ikke kan finde.

---------
Jeg har en mappe, kaldet "/filmetadata"

Inde i den har jeg en række filer, f.eks. html, jpg etc.

Jeg har også en index.php

I index.php har jeg et script der finder en liste over alle filer og mapper.

Dette gør jeg med nedenstående script:

<?php
$path = "/filmetadata";
$dh = opendir($path);
print "Directories <br>************************* <br>";
  while (($dir = readdir($dh)) !== false) {
      if ( $dir != "." && $dir != ".." ){
          $file = @fopen("$path/$dir", "r");
                if (!$file){
                    print "<a href='$dir'>$dir</a><br>";
                }
      }
  }
closedir($dh);

$path = getcwd();
$dh = opendir($path);
print "<br>Files <br>************************* <br>";
  while (($dir = readdir($dh)) !== false) {
      if ( $dir != "." && $dir != ".." ){
          $file = @fopen("$path/$dir", "r");
                if ($file){
               
                    print "<a href='$dir'>$dir</a><br>";


                }
      }
  }
closedir($dh);
?>


-------

Som i kan se bliver filer og mapper listet op.

Og her kommer så opgaven:

Jeg har så en MySQL database, og tabellen "filmetadata" hvori jeg har TEXT-felter eller VARCHAR(100) (eller derover, det er ligegyldigt i denne sammenhæng) kaldet "filnavn", "beskrivelse" etc.

Det er ikke alle filer der har en beskrivelse vedlagt i en database. Men de filer der har, er skrevet op i databasen.

I feltet "filnavn" kan der f.eks. stå "c:\filmetadata\minfil.exe"

Den har så en vedlagt beskrivelse, som ligger i feltet "beskrivelse".

Det jeg så vil have programmet til er, at den under filnavnet, som mit nævnte script lister op, kommer en filbeskrivelse, hvis dette filnavn (altså hele filens sti) forekommer i tabellen "filmetadata" i feltet "filnavn".

Hvordan gør jeg det?


Sådan skal det færdige resultat se ud:

([ og ] angiver at det er et link til en fil eller mappe).
-----

Directories
*************************
[mappe_med_filer]

Files
*************************
[index.php]
Her har jeg en beskrivelse.

[en_php_fil.php]
Her har jeg en anden beskrivelse.

[Ny Tekstdokument.txt]
Avatar billede coderdk Praktikant
06. marts 2007 - 22:10 #1
// connect til db
$sql = "SELECT filnavn, beskrivelse FROM filmetadata ORDER BY filnavn";
$qh = mysql_query( $sql ) or die( mysql_error() );
$files = array();
while ( $row = mysql_fetch_assoc( $qh ) )
{
  $files[$row['filnavn']] = $row['beskrivelse'];
}

og I dit files loop kan så se sådan ud:

$path = getcwd();
$dh = opendir($path);
print "<br>Files <br>************************* <br>";
  while (($dir = readdir($dh)) !== false) {
      if ( $dir != "." && $dir != ".." ){
          $file = @fopen("$path/$dir", "r");
                if ($file){
             
                    print "<a href='$dir'>$dir</a><br>";
                    if ( array_key_exists( $dir, $files ) )
                    {
                        print "<p>" . $files[$dir] . "</p>";
                    }


                }
      }
  }
closedir($dh);
Avatar billede dktekno Nybegynder
06. marts 2007 - 23:16 #2
Takker :D

Læg svar for point.
Avatar billede tachoo Nybegynder
07. marts 2007 - 13:49 #3
kan man gøre således at man kun kan se filerne men ikke downloade dem?
Avatar billede coderdk Praktikant
07. marts 2007 - 15:07 #4
Ok :)

tachoo, Du kan vel fjerne linket? :P
Avatar billede tachoo Nybegynder
07. marts 2007 - 15:27 #5
jamen man skal kunne se linket unden at kunne downloade det.
Avatar billede coderdk Praktikant
07. marts 2007 - 15:35 #6
Så er det ikke et link.

Udskift

print "<a href='$dir'>$dir</a><br>";

med

print "$dir<br>";

Som jeg sagde - Fjern linket.
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