Dommy: automatisches Auslesen von Ordnern und darstellen als Links

Hallo allerseits,

ich hoffe mal, dass der Titel schon einigermaßen selbsterklärend ist :-)

Hobbymäßig gestalte ich Covers, Labels etc. zu Fernsehserien und Filmen. Nun möchte ich meine Werke nicht mehr nur noch über FTP ein paar Kollegen und Freunden anbieten, sondern auch der breiten Masse zugänglich machen und zwar mittels einer WebSite.
Da ich die Covers jeweils nach Anfangsbuchstabe und dann nach Titel geordnet habe würde ich gerne eine php-Site erstellen, die folgendes kann.

Zuerst sollte jeweils der Inhalt einer jeden Kategorie (zB Anfangsbuchstabe "S") als Klickbare Links untereinander dargestellt werden (also zB "Saber Rider, Street Hawk etc......).

Klickt man nun auf einen Link (zB Saber Rider) soll man zu einer Seite kommen, die jeweils Thumbnails der beinhalteten Bilder anzeigt und zwar in einer Tabelle mit einer festen Spaltenzahl von 3 (die Zeilen können variieren) Am Seitenende jeweils ein Back-Bottom (bekomme ich allein hin).

Nun meine Fragen:

Ist es möglich mit meiner Ordnerstruktur [(1. Level: 0-9, A, B, ..., Z) (2. Level Bsp "S": Saber Rider, Street Hawk, etc.)] dieses Projekt mittels PHP möglichst dynamisch zu gestalten, dass ich die Site nicht alle paar Tage updaten muss wenn ich neue Covers hochlade ?

Die Bilder sind alle mit dem gleichen System benannt (Ordner_back.jpg, Ordner_cd.jpg, Ordner_front.jpg also zB Saber_Rider_front.jpg)! Die Bilder-Anzeige sollte man doch so leichter und dynamisch gestalten können oder?  Hab aus dem folgenden Thread mal etwas in dieser gelesen [http://forum.de.selfhtml.org/archiv/2001/11/232/] und würde so etwas gerne realisieren.

Was ist die beste Möglichkeit die Thumbnails schnell und unkompliziert zu erstellen ? GD, NetPM oder andere Lösung ? Mein SiteHoster unterstützt PHP 4.3.x, MySQL, und auch GD, NetPM! Also sollten die jewieligen Anforderungen kein Problem sein.
Wäre supi, wenn ihr mir da irgendwie helfen könnten und mal zumindest mit der Navigation helfen könntet!

  1. Schau Dir mal http://www.4homepages.de an. ist nicht ganz das was du suchst aber damit lassen sich aufwendige Bilddatenbanken mit ordnerstrukturen generieren. feine sache.

    jan

    1. Schau Dir mal http://www.4homepages.de an. ist nicht ganz das was du suchst aber damit lassen sich aufwendige Bilddatenbanken mit ordnerstrukturen generieren. feine sache.

      jan

      Die Gallery ist ja wirklich fein und echt ok. Hab sie selber mal getestet und weiss auch, dass sie vor nicht all zu langer Zeit die Grundlage für eine sehr großer Cover-Site war, aber sie ist echt nicht dass was ich suche. Zwar ist eine Datenbank-Lösung etwas feines, aber für meine Zwecke wohl etwas überdimensioniert. Ich will ja keine Beschreibung, Details etc angeben, sondern lediglich die Covers anzeigen lassen und dass eben in der genannten Hierarchie.
      Zudem möchte ich keine User-Verwaltung drinnen haben, es reicht wenn ich der einzige bin, der die Covers hochlädt und somit Zugriff auf den FTP-Server hat, so habe ich wenigstens unter Kontrolle was da drauf liegt (obwohl man das mit der 4u gallery auch beschränken kann)!

      Trotzdem danke für den Hinweis

      1. ok, ordner auslesen geht mit php. schau dir mal htmlarea 3.0 beta an. darin befindet sich ein image-editor, der listet alle bilder eines ordners. sortieren kannst du ja dann selbst (kategorie...).

        http://www.interactivetools.com/products/htmlarea/reviews.html

  2. Hallo,

    Ist es möglich mit meiner Ordnerstruktur [(1. Level: 0-9, A, B, ..., Z) (2. Level Bsp "S": Saber Rider, Street Hawk, etc.)] dieses Projekt mittels PHP möglichst dynamisch zu gestalten, dass ich die Site nicht alle paar Tage updaten muss wenn ich neue Covers hochlade ?

    Als Grundlage koennte Dir die dclp-FAQ weiterhelfen:
    "Wie kann ich den Inhalt eines Verzeichnisses
    samt dem Inhalt aller Unterverzeichnisse ausgeben?"
    http://www.dclp-faq.de/q/q-code-verzeichnis.html

    Was ist die beste Möglichkeit die Thumbnails schnell und unkompliziert zu erstellen?

    Fuer optimale Ergebnisse (Bildqualitaet und Dateigroesse)
    sowie um die Ressourcen des Servers zu schonen wuerde ich
    die Thumbnails eher offline erstellen (z.B. mit IrfanView)
    und dann hochladen.
    Die Dateien kannst Du "Saber_Rider_thumb.jpg" u.s.w. nennen.
    Dateien mit "_thumb" drin werden dann vom Auflister-Skript
    speziell behandelt (d.h. nicht aufgelistet).

    ---

    Eine sehr simple, aber effiziente Alternative zu PHP
    waere mod_autoindex von Apache.
    Das koennte z.B. so aussehen:
    http://hsi-202.bloomer.k12.wi.us/images/

    Natuerlich kannst Du damit Deine Idee mit den Tabellen
    nicht verwirklichen, aber da Du "sprechende" Dateinamen
    verwendest koennte doch schon eine huebsch formatierte
    Liste IMHO reichen...

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
    1. Als Grundlage koennte Dir die dclp-FAQ weiterhelfen:
      http://www.dclp-faq.de/q/q-code-verzeichnis.html

      Jo, die ist schon mal gut. Habs gleich mal versucht aber da wird leider kein Verzeichnis angezeigt (habe den Code mal so übernommen)
      http://dommysviertel.de/covers

      Fuer optimale Ergebnisse (Bildqualitaet und Dateigroesse)
      sowie um die Ressourcen des Servers zu schonen wuerde ich
      die Thumbnails eher offline erstellen (z.B. mit IrfanView)
      und dann hochladen.
      Die Dateien kannst Du "Saber_Rider_thumb.jpg" u.s.w. nennen.
      Dateien mit "_thumb" drin werden dann vom Auflister-Skript
      speziell behandelt (d.h. nicht aufgelistet).

      OK, manuelles Erstellen wäre noch zu verkraften, allerdings wäre mir eine andere Lösung lieber gewesen, aber wenn das zu Lasten der Quali geht, dann ok. Um die Ressourcen und um den Traffic mache ich mir allerdings noch keine Gedanken. Vielleicht käme das Problem später auf, wenn sich die Site herumspricht!

      Eine sehr simple, aber effiziente Alternative zu PHP
      waere mod_autoindex von Apache.
      Das koennte z.B. so aussehen:
      http://hsi-202.bloomer.k12.wi.us/images/

      Das sieht einem FTP-Browser sehr ähnlich. Liese sich das mittels Templates noch anpassen? Sieht sonst nämlich sehr trocken aus !

      Natuerlich kannst Du damit Deine Idee mit den Tabellen
      nicht verwirklichen, aber da Du "sprechende" Dateinamen
      verwendest koennte doch schon eine huebsch formatierte
      Liste IMHO reichen...

      Du das wäre super, wenn du da etwas für mich hättest!

      1. Hallo,

        Habs gleich mal versucht aber da wird leider kein Verzeichnis angezeigt (habe den Code mal so übernommen)
        http://dommysviertel.de/covers

        </faq/#Q-19> => http://dommysviertel.de/covers

        Da wird also gar nichts aufgelistet.

        Ich vermute ein Problem mit dem Pfad bzw. Verzeichnisnamen.
        Was hast Du denn als Parameter fuer die Funktion angegeben?
        Wo steht das Script, wo steht das Verzeichnis?

        Mach mal alle @ weg, damit allfaellige Fehlermeldungen
        angezeigt werden:
        $handle = opendir($dir);
        u.s.w.

        [Thumbnails] aber wenn das zu Lasten der Quali geht, dann ok.

        Es ist meine Erfahrung, dass man manche Bilder staerker,
        manche weniger stark komprimieren kann (bei JPEG).
        Natuerlich koenntest Du Thumbnails auch automatisch
        generieren lassen, z.B. mit der Einstellung "hoechste
        Qualitaet" bzw. "minimale Kompression", dann kriegst Du
        wohl auch akzeptable Ergebnisse, aber eben auch entsprechend
        grosse Dateien.
        Ich denke einfach, es ist sinnvoller, "von Hand" fuer
        jedes Bild ein eigenes Thumbnail zu machen.

        Um die Ressourcen und um den Traffic mache ich mir allerdings noch keine Gedanken. Vielleicht käme das Problem später auf, wenn sich die Site herumspricht!

        Also wenn schon serverseitige Thumbnail-Erzeugung, solltest
        Du die generierten Thumbnails dann auf dem Server speichern,
        damit sie nicht bei jedem Aufruf neu erzeugt werden muessen.
        Lies auch die dclp-FAQ dazu:
        Wie kann ich Bilder verkleinern?
        http://www.dclp-faq.de/q/q-grafik-verkleinern.html

        [mod_autoindex von Apache]
        http://hsi-202.bloomer.k12.wi.us/images/

        Das sieht einem FTP-Browser sehr ähnlich. Liese sich das mittels Templates noch anpassen? Sieht sonst nämlich sehr trocken aus !

        Ja, Du kannst eine "Kopfzeile" (Anfang eines HTML-Dokuments)
        und eine "Fusszeile" (Ende eines HTML-Dokuments) erstellen,
        die dann vor bzw. nach der Auflistung eingefuegt werden.
        Damit lassen sich auch diese automatischen Auflistungen
        optisch recht huebsch gestalten...
        Sehr einfache Beispiele, die vermutlich mit dieser Methode
        erzeugt wurden, sind einige Seiten von apache.org:
        http://www.apache.org/dist/httpd/
        http://www.apache.org/dist/httpd/binaries/win32/
        u.s.w.

        Genaueres siehe Apache-Manual zu mod_autoindex,
        Abschnitte zu HeaderName bzw. ReadmeName:
        http://httpd.apache.org/docs/mod/mod_autoindex.html (Apache 1.3)
        http://httpd.apache.org/docs-2.0/mod/mod_autoindex.html (Apache 2.0)

        Gruesse,

        Thomas

        --
        Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
        Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
        1. Ich vermute ein Problem mit dem Pfad bzw. Verzeichnisnamen.
          Was hast Du denn als Parameter fuer die Funktion angegeben?
          Wo steht das Script, wo steht das Verzeichnis?

          das Skript steht in: http://dommysviertel.de/covers

          Dort liegen die auch die Ordner 0-9, A, B, ..., Z

          Mach mal alle @ weg, damit allfaellige Fehlermeldungen
          angezeigt werden:
          $handle = opendir($dir);
          u.s.w.

          Wurden entfernt, sieht nun so aus [CODE]

          <?PHP

          function show_dir($dir, $pos=2)
          {
              if($pos == 2)
              {
                  echo "<hr><pre>";
              }

          $handle = opendir($dir);
              while ($file = readdir ($handle))
              {
                  if (eregi("^.{1,2}$",$file))
                  {
                      continue;
                  }

          if(is_dir($dir.$file))
                  {
                      printf ("% ".$pos."s <b>%s</b>\n", "|-", $file);
                      show_dir($dir.$file."/", $pos + 3);
                  }
                  else
                  {
                      printf ("% ".$pos."s %s\n", "|-", $file);
                  }
              }
              closedir($handle);

          if($pos == 2)
              {
                  echo "</pre><hr>";
              }

          }

          show_dir("");

          ?>
          [/CODE]

          Ist doch richtig, dass ich bei show_dir(""); den Verzeichnis-Namen rausgenommen habe weil doch innerhalb dieses Verzeichnisses alle Ordner angezeigt werden sollen, oder ?

          Es ist meine Erfahrung, dass man manche Bilder staerker,
          manche weniger stark komprimieren kann (bei JPEG).
          Natuerlich koenntest Du Thumbnails auch automatisch
          generieren lassen, z.B. mit der Einstellung "hoechste
          Qualitaet" bzw. "minimale Kompression", dann kriegst Du
          wohl auch akzeptable Ergebnisse, aber eben auch entsprechend
          grosse Dateien.
          Ich denke einfach, es ist sinnvoller, "von Hand" fuer
          jedes Bild ein eigenes Thumbnail zu machen.

          Ist zwar anfänglich für die bereits erstellten Covers etwas mühsam aber ich werde es verkraften! Vielleicht finde ich ja noch ein Batch-Progrämmchen für Photoshop welches mir diese Arbeit abnimmt :-)

          Also wenn schon serverseitige Thumbnail-Erzeugung, solltest
          Du die generierten Thumbnails dann auf dem Server speichern,
          damit sie nicht bei jedem Aufruf neu erzeugt werden muessen.

          So wars auch gedacht !!

          1. Hallo,

            das Skript steht in: http://dommysviertel.de/covers

            Bitte durch abschliessenden Slash klarmachen,
            dass es sich um ein Verzeichnis handelt:
            http://dommysviertel.de/covers/
            Das Skript ist also vermutlich
            http://dommysviertel.de/covers/index.php

            Dort liegen die auch die Ordner 0-9, A, B, ..., Z

            ... also
            http://dommysviertel.de/covers/A/
            http://dommysviertel.de/covers/B/
            u.s.w. ?

            show_dir("");

            fuehrt wohl zu der Fehlermeldung.
            opendir() erwartet einen Verzeichnisnamen.

            Von http://dommysviertel.de/covers/index.php aus gesehen
            waere der Pfad fuer /covers/ AFAIK:
            "../covers/"
            Versuch's mal mit:
            show_dir("../covers/");

            [Thumbnails generieren] Vielleicht finde ich ja noch ein Batch-Progrämmchen für Photoshop welches mir diese Arbeit abnimmt :-)

            Sonst kannst Du es auch mit IrfanView machen.
            Qualitaet 60 - 80% gibt meist brauchbare Resultate fuer JPEG.
            (Bei Logos u.s.w. ist vielleicht GIF oder PNG besser
            geeignet als JPEG).

            Gruesse,

            Thomas

            --
            Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
            Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
            Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/
            1. Das Skript ist also vermutlich
              http://dommysviertel.de/covers/index.php

              Korrekt :-)

              Dort liegen die auch die Ordner 0-9, A, B, ..., Z
              http://dommysviertel.de/covers/A/
              http://dommysviertel.de/covers/B/
              u.s.w. ?

              Wieder korrekt!

              Versuch's mal mit:
              show_dir("../covers/");

              Gesagt, getan! Resultat ist nun das Folgende!

              <a href="http://dommysvierteld.e/covers"> http://dommysviertel.de/covers</a>

              Mein Wunsch wäre nun, dass die jeweiligen Ordner auch anklickbar wären, und die darin enthaltenen Dateien in der Gesamtübersicht nicht angezeigt werden. Sprich eine Übersicht die sich auf eine Ebene beschränkt!
              Prinzipiell könnte ich ja die Anfangsbuchstaben als feste Navigationsleiste (Frame) einbinden und durch Klick auf den jeweiligen Buchstaben kommt man zu obigen Skript welches alle verfügbaren Unterkategorien (in diesem Fall alle Filme mit dem jeweiligen Anfangsbuchstaben) als Hyperlink anzeigt!

              Wenn da so weit realisiert wäre würde ich dann mal das Problem der Thumbnails in Angriff nehmen!

              Jetzt schon mal 1000 Dank für deine bisherige Unterstützung und Ratschläge!

              1. Hallo,

                <a href="http://dommysvierteld.e/covers"> http://dommysviertel.de/covers</a>

                Du meinst: http://dommysviertel.de/covers/
                Bitte lies endlich die FAQ. Danke.

                Mein Wunsch wäre nun, dass die jeweiligen Ordner auch anklickbar wären, und die darin enthaltenen Dateien in der Gesamtübersicht nicht angezeigt werden. Sprich eine Übersicht die sich auf eine Ebene beschränkt!

                Ich hatte Dir dieses Skript als Ausgangspunkt vorgeschlagen.
                Versuch, es zu begreifen, dann kannst Du es auch
                fuer Deine Beduerfnisse anpassen.

                Um nur eine Ebene anzuzeigen, lass den rekursiven
                Aufruf der Funktion show_dir innerhalb der Schleife weg:
                show_dir($dir.$file."/", $pos + 3);

                Prinzipiell könnte ich ja die Anfangsbuchstaben als feste Navigationsleiste (Frame) einbinden und durch Klick auf den jeweiligen Buchstaben kommt man zu obigen Skript welches alle verfügbaren Unterkategorien (in diesem Fall alle Filme mit dem jeweiligen Anfangsbuchstaben) als Hyperlink anzeigt!

                Frames sind hier IMHO voellig ueberfluessig.
                Obwohl sie fuer einmal nicht extrem stoerend
                waeren, waeren sie dennoch ueberfluessig.

                Den Rest der Idee finde ich OK.

                Du koenntest ein Skript fuer alles verwenden:

                • ohne Parameter, also index.php
                    => Auflistung der Inhalte von "../covers/"
                       als Links in der Form <a href="index.php?verz=M">M</a>
                • mit gueltigem Parameter, also z.B. index.php?verz=M
                    => Auflistung des jeweiligen Unterverzeichnisses,
                    z.B. "../covers/M/"
                • mit ungueltigem Parameter, z.B. index.php?verz=/etc/passwd
                    => Fehlermeldung ausgeben

                Achte auf die Sicherheit - lass Dir nicht einen beliebigen
                Pfad unterjubeln, sondern nur die erlaubten Pfade.
                Entferne z.B. saemtliche Slashes ("/") und Backslashes ("")
                aus dem uebergebenen Pfad. Lies die dclp-FAQ
                http://www.dclp-faq.de/q/q-security-variablen.html
                und die andern Seiten zum Thema "Sicherheit".

                Gruesse,

                Thomas

                --
                Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
                Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
                Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/