Ankündigung

Einklappen
Keine Ankündigung bisher.

Ordnerinhalt auslesen (Inhalt: *.pdf & *.doc)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ordnerinhalt auslesen (Inhalt: *.pdf & *.doc)

    hallo,
    wie kann man einen ordner auslesen lassen den ich auf meinem webspace angelegt habe.
    ich will in diesem ordner pdf & doc -files ablegen die dann die leute ziehen können.

    lösung:
    ich lege die files rein und schreibe die files als links in mein php-dokument.

    da das aber sehr umständlich ist wäre es schön wenn ich die arbeit auf den upload beschränken könnte und das skript die files selbst ausliest und als klickbare links darstellt.

    jemand ne idee?

  • #2
    Klar habe ich eine Idee: Doku lesen! Warum kommst du nicht von alleine drauf?

    http://de3.php.net/manual/de/function.glob.php

    Gruß
    phpfan

    Kommentar


    • #3
      Zitat von phpfan
      Warum kommst du nicht von alleine drauf?
      weil ich absoluter newbi bin :wink:


      soo das auslesen hab ich, bekomme es aber nicht hin das er jeweils n link daraus macht

      <?
      function getFiles($path) {

      $files = array();
      $fileNames = array();
      $i = 0;

      if (is_dir($path)) {
      if ($dh = opendir($path)) {
      while (($file = readdir($dh)) !== false) {
      if ($file == "." || $file == "..") continue;
      $fullpath = $path . "/" . $file;
      $fkey = strtolower($file);
      while (array_key_exists($fkey,$fileNames)) $fkey .= " ";
      $a = stat($fullpath);
      $files[$fkey]['size'] = $a['size'];
      if ($a['size'] == 0) $files[$fkey]['sizetext'] = "-";
      else if ($a['size'] > 1024) $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " K";
      else if ($a['size'] > 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb";
      else $files[$fkey]['sizetext'] = $a['size'] . " bytes";
      $files[$fkey]['name'] = $file;
      $files[$fkey]['type'] = filetype($fullpath);
      $fileNames[$i++] = $fkey;
      }
      closedir($dh);
      } else die ("Cannot open directory: $path");
      } else die ("Path is not a directory: $path");
      sort($fileNames,SORT_STRING);
      $sortedFiles = array();
      $i = 0;
      foreach($fileNames as $f) $sortedFiles[$i++] = $files[$f];

      return $sortedFiles;
      }

      $files = getFiles("udl");
      foreach ($files as $file) print "$file[name]
      \n";
      ?>

      Kommentar


      • #4
        So eine gequirlte Kacke sehe ich mir echt nicht an. Hast du schon mal was von ordentlich einrücken gehört? Hier und da eine Leerzeile macht die Sache auch leserlicher.
        PHP-Code:
        <?
           function tuwas()
           {
               $a = 5;
               
               if ($a == 5)
               {
                   tunochwas();
                   
                   echo "Super, so kann man Quellcode gut lesen";
               }
               
               $x = $a * 5;
               
           }
        ?>
        Gruß
        phpfan

        Kommentar


        • #5
          welch "liebevolle" antwort, danke

          Kommentar


          • #6
            Zitat von @Snake@
            welch "liebevolle" antwort, danke
            Genau, sieh' dir deinen Käse doch mal an, da muss man erstmal sortieren, um zu verstehen, was da passiert. Es ist dein Job, Fragen und Quellcode verständlich zu liefern, denn du willst was wissen, nicht ich! Hier mal zum Vergleich:
            PHP-Code:
            <? 
            function getFiles($path)

              $files = array(); 
              $fileNames = array(); 
              $i = 0; 

              if (is_dir($path))
              { 
                if ($dh = opendir($path))
                { 
                   while (($file = readdir($dh)) !== false)
                   { 
                      if ($file == "." || $file == "..")
                         continue; 
                      
                      $fullpath = $path . "/" . $file; 
                      $fkey = strtolower($file); 
                      
                      while (array_key_exists($fkey,$fileNames))
                         $fkey .= " "; 
                         
                      $a = stat($fullpath); 
                      
                      $files[$fkey]['size'] = $a['size']; 
                      
                      if ($a['size'] == 0)
                         $files[$fkey]['sizetext'] = "-"; 
                      else if ($a['size'] > 1024)
                         $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " K"; 
                      else if ($a['size'] > 1024*1024)
                         $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb"; 
                      else
                         $files[$fkey]['sizetext'] = $a['size'] . " bytes"; 
                         
                      $files[$fkey]['name'] = $file; 
                      $files[$fkey]['type'] = filetype($fullpath); 
                      $fileNames[$i++] = $fkey; 
                   } 
                   
                   closedir($dh); 
                }
                else
                  die ("Cannot open directory: $path"); 
              }
              else
                die ("Path is not a directory: $path"); 
                
              sort($fileNames,SORT_STRING); 
              
              $sortedFiles = array(); 
              $i = 0; 
              
              foreach($fileNames as $f)
                 $sortedFiles[$i++] = $files[$f]; 

              return $sortedFiles; 


            $files = getFiles("udl"); 

            foreach ($files as $file)
               print "$file[name]
            \n"; 
            ?>
            Was ist denn jetzt besser zu lesen? Kopfschüttel

            Und zu deiner Frage, wie du da einen Link raus machen kannst: http://de.selfhtml.org/html/verweise/index.htm

            Gruß
            phpfan

            Kommentar


            • #7
              das das mit "a href" gemacht wird ist mir schon klar,
              wäre die sache in html hätte ich das problem ja nicht.

              die sache ist die das ich mit php nicht auskenne und daher nicht weis wo ich mein "a href=" plazieren soll

              Kommentar


              • #8
                Vor dem Dateinamen natürlich.
                PHP-Code:
                <?php
                print "<a href=\"hier_gehts_lang\">$file[name]</a>
                \n"
                ;
                ?>
                Und was macht das [name] da???

                Viele Grüße,
                karl-150

                Kommentar


                • #9
                  Zitat von karl-150
                  Vor dem Dateinamen natürlich.
                  PHP-Code:
                  <?php
                  print "<a href=\"hier_gehts_lang\">$file[name]</a>
                  \n"
                  ;
                  ?>
                  Und was macht das [name] da???

                  Viele Grüße,
                  karl-150
                  hmm, also
                  PHP-Code:
                  $file 
                  gibt ja den file aus, der name ist mir bis zu diesem zeitpunkt ja noch unbekannt,

                  theoretish muß der ja dann dort drin stehen das der link überhaupt geht, oder seh ich da was falsch?^^
                  PHP-Code:
                   <a href=\"hier_gehts_lang\"> 
                  habs auf verschiedene weise versucht, aber irgend wie funzt das nicht

                  Kommentar


                  • #10
                    Das [name] ist mir jetz klar (hatte vorhin angenommen der Name steht in $file).
                    theoretish muß der ja dann dort drin stehen das der link überhaupt geht, oder seh ich da was falsch?^^
                    Ich dachte das könntest du selbst ersetzen. In deinem Fall (Ordner = udl) sieht das dann so aus:

                    PHP-Code:
                    <?php

                    $files 
                    getFiles("udl");
                    foreach (
                    $files as $file)
                      print 
                    "<a href=\"udl/$file[name]\">$file[name]</a>
                    \n"
                    ;
                    ?>
                    Es werden übrigens auch alle Unterordner aufgelistet, wenn das nicht so sein soll, noch prüfen, obs eine Datei ist.

                    Kommentar


                    • #11
                      supi, nun funzt es THX@ all :wink:

                      Kommentar


                      • #12
                        Snake, du kannst dir auch ein paar zeilen quelltext sparen:
                        PHP-Code:
                        <?php
                        $documents
                        =glob("udl/{*.pdf,*.doc}"GLOB_BRACE);
                        foreach (
                        $documents as $filename)
                            print 
                        '[url="'.$filename.'"]'.basename($filename).'[/url]
                        '
                        ;
                        ?>

                        Kommentar

                        Lädt...
                        X