Alex: Zufallsbild aus mehreren Ordnern

Hallo,

ich habe - u.a. mit eurer Hilfe - folgendes Skript erstellt, um ein
Zufallsbild aus meinem Ordner: "Bilder/Fotos/Web_klein" auszulesen.
Da ich nun aber mittlerweile eine Menge Bilder habe, will ich
diese in Unterverzeichnisse aufteilen ("Galerie_001", "Galerie_002"
usw.).
Leider weiß ich nicht, wie ich dies mache, ohne extra jedes
einzelne Verzeichnis in das Skript einzufügen. Ist es nicht möglich,
dass ich zunächst sage, lese eine Galerie zufällig aus und
dann daraus ein Zufallsbild?
Folgendes Skript habe ich bisher verwendet, um das Zufallsbild
auszuwählen:

<?php
//Script für das Zufallsbild
$bilder = array();
//Ordner öffnen
$dir = opendir ("../Bilder/Fotos/Web_klein");
//Datei lesen ohne die Verzeichnisse darüber
while ($bild = readdir ($dir)){
 if ($bild != "." && $bild != "..")
 array_push($bilder,$bild);
}
closedir($dir);
$max = count($bilder)-1;
$zufall = rand(0,$max);
$bild = $bilder[$zufall];
?>

Und dies um es einzufügen (inkl. Verlinkung auf die Großansicht):

<a href="../Bilder/Fotos/Web_gross/<?php echo $bild ?>" ><img src="../Bilder/Fotos/Web_klein/<?php echo $bild ?>" /></a>

Ich habe jetzt schon etliches Selbstversuche gestartet, die
jedoch allesamt gescheitert sind.

Übrigens habe ich am 16.07.06 eine ähnliche Anfrage gestartet,
aber da sich die Frage unter einem anderen Thema erst gestellt
hat, wage ich diese nochmal zu wiederholen. Ich bitte dies
zu verzeihen.

Über eine etwas auführlichere Antwort, wie "Ja, das ist möglich"
wäre ich dankbar, weil ich absoluter Anfänger bin. Danke schonmal
im Voraus.

  1. Hey,
    meine Idee wäre zuerst das verzeichnis in dem sich deine Ordner Galerie_001 Galerie_002 .. befinden in ein array zu lesen. Dafür readdir und opendir sinnvoll anwenden. Dann einfach das max von rand auf das count des arrays mit den galerien setzen-> so kriegst du dein zufallsverzeichnis... mit dem machst du dann weiter wir oben...

    MFG Hagen

    1. Meine Idee war, dass ich das Skript für das Zufallsbild einfach
      kopiere und an ein Skript für ein Zufallsverzeichnis anpasse
      (bild = verz und bilder = verze).

      Etwa so:

      <?php
      //Script für das Zufallsbild
      $verze = array();
      //Ordner öffnen
      $dir = opendir ("../Bilder/Fotos/Web_klein");
      //Datei lesen ohne die Verzeichnisse darüber
      while ($verz = readdir ($dir)){
       if ($verz != "." && $verz != "..")
       array_push($verz,$verz);
      }
      closedir($dir);
      $max = count($verze)-1;
      $zufall = rand(0,$max);
      $verz = $verze[$zufall];
      ?>

      <?php
      //Script für das Zufallsbild
      $bilder = array();
      //Ordner öffnen
      $dir = opendir ("../Bilder/Fotos/Web_klein");
      //Datei lesen ohne die Verzeichnisse darüber
      while ($bild = readdir ($dir)){
       if ($bild != "." && $bild != "..")
       array_push($bilder,$bild);
      }
      closedir($dir);
      $max = count($bilder)-1;
      $zufall = rand(0,$max);
      $bild = $bilder[$zufall];
      ?>

      Bin ich da kompett auf dem Holzweg?

      Wenn nein:
      Wie mache ich ihm im Skript für das Zufallsbild klar, dass
      er den gerade zufällig ausgewählten Unterordner (Galerie)
      nimmt?

      Wenn ich auf dem Holzweg bin:
      Beschreibe mir doch bitte genauer, wie du das meintest.

      1. Hallo.

        Wie mache ich ihm im Skript für das Zufallsbild klar, dass
        er den gerade zufällig ausgewählten Unterordner (Galerie)
        nimmt?

        Indem Du es dem Skript auch sagst. D.h. an das "Web_klein" noch einen Slash und $verz anhängst.
        Bisher ist Dein Bild-Wahl-Teil ja noch unverändert, d.h. dort wird noch in Web_lein gesucht und nicht in Unterordnern davon.
        Sollte dann passen.

        Grüße aus Würzburg
        Julian

        1. Hallo!

          Indem Du es dem Skript auch sagst. D.h. an das "Web_klein" noch einen Slash und $verz anhängst.

          Hab ich gemacht; so:

          <?php
          //Script für das Zufallsbild
          $verze = array();
          //Ordner öffnen
          $dir = opendir ("../Bilder/Fotos/Web_klein");
          //Datei lesen ohne die Verzeichnisse darüber
          while ($verz = readdir ($dir)){
           if ($verz != "." && $bild != "..")
           array_push($verze,$verz);
          }
          closedir($dir);
          $max = count($verze)-1;
          $zufall = rand(0,$max);
          $verz = $verze[$zufall];
          ?>

          <?php
          //Script für das Zufallsbild
          $bilder = array();
          //Ordner öffnen
          $dir = opendir ("../Bilder/Fotos/Web_klein/$verz");
          //Datei lesen ohne die Verzeichnisse darüber
          while ($bild = readdir ($dir)){
           if ($bild != "." && $bild != "..")
           array_push($bilder,$bild);
          }
          closedir($dir);
          $max = count($bilder)-1;
          $zufall = rand(0,$max);
          $bild = $bilder[$zufall];
          ?>

          Und beim einfügen so:

          <a  href="../Bilder/Fotos/Web_gross/<?php echo $verz ?>/<?php echo $bild ?>" target="_blank"><img width="160" src="../Bilder/Fotos/Web_klein/<?php echo $verz ?>/<?php echo $bild ?>" /></a>

          Klappt aber net. Kann mir jmd. sagen, wo da mein Fehler liegt?

          1. Sorry! Hatte noch einen Flüchtigkeitsfehler entdeckt.
            Klappt jetzt; aber leider net immer.
            Zwischendurch zeigt er mir den Alternativtext an.

            1. Zwischendurch bekomme ich noch diese Fehlermeldung:

              Warning: opendir(../Bilder/Fotos/Web_klein/Thumbs.db) [function.opendir]: failed to open dir: Invalid argument in D:\Programme\xampp\htdocs\Include\head2.php on line 21

              Warning: readdir(): supplied argument is not a valid Directory resource in D:\Programme\xampp\htdocs\Include\head2.php on line 23

              Warning: closedir(): supplied argument is not a valid Directory resource in D:\Programme\xampp\htdocs\Include\head2.php on line 27

              Aber obwohl ich die Ansicht "alle Ordner anzeigen" gewählt
              habe, zeigt der mit in WinXP keine Thumbs.db an.

              Weiß jmd. Rat, wie ich die Ansicht ändere, dass er mir die
              anzeigt, damit ich die löschen kann oder liegt der Fehler
              noch ganz woanders?
              Kann man eigentlich abstellen, dass die Thumbs.db
              automatisch anlegt wird?

              1. Sollte mir echt mal angewöhnen erst zu denken und dann zu
                schreiben. Aber manchmal fällt mir während des Schreibens
                die Lösung ein.
                Also für alle die es noch interessiert:
                Ich habe das Problem jetzt so gelöst, indem ich
                "Thumbs.db" bei der Auswahl des Verzeichnisses und
                des Bildes ausgeschlossen hab:

                if ($verz != "." && $verz != ".." && $verz != "Thumbs.db")
                if ($bild != "." && $bild != ".." && $bild != "Thumbs.db")

                Danke an alle, die sich mit meinem Problem beschäftigt
                haben.

                Jetzt kann ich wieder ruhig schlafen und geh ins Bett.

                Gute N8

                1. hi,

                  Ich habe das Problem jetzt so gelöst, indem ich
                  "Thumbs.db" bei der Auswahl des Verzeichnisses und
                  des Bildes ausgeschlossen hab:

                  Suboptimal.
                  Was, wenn dir mal irgendeine andere Datei in das Verzeichnis "rutscht" - eine aus Versehen dort abgelegte Textdatei oder sonstwas? Schon hättest du dein Problem wieder.

                  Nutze doch einfach is_dir() um zu prüfen, ob es sich bei dem aktuell ausgelesenen Verzeichniseintrag seinerseits um ein Verzeichnis handelt - und nur, falls dem so ist, nimmst du es in dein Array auf.

                  gruß,
                  wahsaga

                  --
                  /voodoo.css:
                  #GeorgeWBush { position:absolute; bottom:-6ft; }
                  1. Hi Wahsaga,

                    erstmal danke für den Tip mit den Thumbs. Habe die jetzt
                    erstmal gelöscht, aber sicherheitshalber, den "Ausschluss"
                    beibehalten, weil der öfter mal wieder (wann genau weiß
                    ich net) von Win angelegt wird.

                    Suboptimal.
                    Was, wenn dir mal irgendeine andere Datei in das Verzeichnis "rutscht" - eine aus Versehen dort abgelegte Textdatei oder sonstwas? Schon hättest du dein Problem wieder.

                    Naja, sollte eigentlich net passieren, aber deinen Tipp:

                    Nutze doch einfach is_dir() um zu prüfen, ob es sich bei dem aktuell ausgelesenen Verzeichniseintrag seinerseits um ein Verzeichnis handelt - und nur, falls dem so ist, nimmst du es in dein Array auf.

                    werde ich trotzdem mal aufgreifen. Erstens lerne ich mal wieder
                    was neues und zweitens scheint mir das wirklich die bessere
                    Lösung zu sein; wenn ich damit prüfen kann, ob ein Verzeichnis
                    vorliegt, kann ich bei der Bilderauswahl sicher auch prüfen,
                    ob ein ".jpg" vorliegt.

                    Schönen Abend noch und ein schönes Wochenende.

                    Gruß
                    Alex

                    1. Habe mal noch eine Frage zu meinem Script.
                      Ist es auch möglich anstatt auf das Zufallsbild
                      in Großansicht (z.B. "016_001.jpg") auf eine
                      HTML-Seite (z.B. "016_001.html") zu verlinken?
                      Habe die Bilder in einer HTML-Datei eingefügt,
                      weil das so schöner aussieht und ich so auch
                      eine Art Galerie ohne JS habe.
                      Kann ich das "jpg" durch ein "html" mit
                      einem Befehl ersetzen?
                      Oder kann ich evtl. auch einfach die HTML-Datei
                      in "016_001.jpg.html" umbenennen und das ".html"
                      dann in dem Zufallsskript hinzufügen?

                      1. hi,

                        Kann ich das "jpg" durch ein "html" mit
                        einem Befehl ersetzen?

                        http://de.selfhtml.org/javascript/objekte/string.htm#replace
                        (Es muss kein regulärer Ausdruck verwendet werden, eine einfache Zeichenkette, nach der zu suchen ist, geht auch.)

                        Oder kann ich evtl. auch einfach die HTML-Datei
                        in "016_001.jpg.html" umbenennen und das ".html"
                        dann in dem Zufallsskript hinzufügen?

                        Geht auch, per simpler Zeichenkettenverknüpfung.

                        gruß,
                        wahsaga

                        --
                        /voodoo.css:
                        #GeorgeWBush { position:absolute; bottom:-6ft; }
                        1. Hi Wahsaga,

                          http://de.selfhtml.org/javascript/objekte/string.htm#replace
                          (Es muss kein regulärer Ausdruck verwendet werden, eine einfache Zeichenkette, nach der zu suchen ist, geht auch.)

                          Will möglichst auf JavaScript verzichten, deswegen mache ich mir
                          ja die Mühe und füge jedes von in eine HTML Seite mit Navigation
                          und Bildinfo ein.

                          Oder kann ich evtl. auch einfach die HTML-Datei
                          in "016_001.jpg.html" umbenennen und das ".html"
                          dann in dem Zufallsskript hinzufügen?

                          Damit meinte ich, dass ich mein Skript für das Zufallsbild einfach
                          wie folgt anpasse:

                          <a href="../Galerien/<?php echo $verz ?>/<?php echo $bild ?>.html" target="_blank"><img width="160" src="../Bilder/Fotos/Web_klein/<?php echo $verz ?>/<?php echo $bild ?>" /></a></td>

                          Das habe ich mittlerweile ausprobiert und funktioniert. Frage
                          mich nur, ob jeder Server damit klarkommt, dass ich einen
                          "." im Dateinamen hab und dann noch ein "."-html folgt.
                          Also verständlicher: Ordner/Unterordner/Datei.jpg.html.
                          (So heißt dann meine HTML-Seite, die ich über den obigen
                          Link aufrufe).

                          Also wär nett, wenn mir das noch mal jmd. bestätigt oder
                          mitteilt, wenn das net auf jeden Server läuft. Denn bei
                          mittlerweile so knapp über 500 Fotos macht das einfügen
                          in HTML schon ein wenig Arbeit.

                          Gruß
                          Alex

                          1. hi,

                            Will möglichst auf JavaScript verzichten

                            Ach so ja, wir hatten ja auch bisher nur mit PHP gearbeitet - da war ich auf dem falschen Boot ...

                            Das habe ich mittlerweile ausprobiert und funktioniert. Frage
                            mich nur, ob jeder Server damit klarkommt, dass ich einen
                            "." im Dateinamen hab und dann noch ein "."-html folgt.
                            Also verständlicher: Ordner/Unterordner/Datei.jpg.html.

                            Es muss ja eigentlich nicht jeder Server damit klarkommen, sondern erst mal deiner :-)
                            Aber wenn's dir um die Portierbarkeit auf andere Server geht: Sollte kein Problem darstellen.

                            gruß,
                            wahsaga

                            --
                            /voodoo.css:
                            #GeorgeWBush { position:absolute; bottom:-6ft; }
                            1. Hi Wahsaga,

                              Es muss ja eigentlich nicht jeder Server damit klarkommen, sondern erst mal deiner :-)

                              Ja, dass würde mir ja auch schon reichen. Zur Zeit habe ich aber
                              noch keinen Webhoster, sondern teste erstmal nur lokal mit Xampp.

                              Aber wenn's dir um die Portierbarkeit auf andere Server geht: Sollte kein Problem darstellen.

                              Danke, dass wollte ich wissen. Nicht, dass ich jetzt hier alles
                              mühsam erstelle und dann nach dem Umzug zum Webhoster nichts mehr
                              läuft.

                              Gruß
                              Alex

                              1. Hallo nochmal,

                                konnte mir jetzt erstmal selbst weiterhelfen und
                                bedanke mich bei allen, die sich vlt. schon
                                Gedanken um meine Fragen gemacht haben.

                                Falls es noch jmd. interessiert, wie ich das
                                jetzt gelöst habe, kann er sich ja hier im
                                Forum melden, dann stelle ich mein Skript hierrein.

                                Wünsche Allen eine angenehme Nachtruhe.

                                Gruß
                                zwerg Alex

                          2. Hi,

                            Will möglichst auf JavaScript verzichten, deswegen mache ich mir
                            ja die Mühe und füge jedes von in eine HTML Seite mit Navigation
                            und Bildinfo ein.

                            warum denn nur? Du nutzt doch PHP - da reicht eine Seite, die Du mit entsprechenden Parametern aufrufst, wie z.B. hier: http://ingo-webdesign.de/foto/?gallery=Test&nr=31.

                            freundliche Grüße
                            Ingo

                            1. Hi Ingo,

                              danke für deine Antwort und Kompliment für dein Fotoalbum.

                              warum denn nur? Du nutzt doch PHP - da reicht eine Seite, die Du mit entsprechenden Parametern aufrufst, wie z.B. hier: http://ingo-webdesign.de/foto/?gallery=Test&nr=31.

                              Du hast Recht, ich nutze PHP. Aber ich fahre auch ´nen Auto und
                              kann es trotzdem nicht reparieren ;-) Das Skript für mein Zufalls-
                              bild habe ich mir mehr oder weniger abgeschrieben und mit der
                              Hilfe des Forums auf meine Bedürfnisse angepasst.
                              Ich versuche mich in PHP einzulesen, aber mir fehlt bei vielen
                              Dingen einfach das Grundverständnis und ehrlich gesagt öfters
                              auch mal die Geduld.
                              Ist es mit PHP und ohne Javascript möglich, eine Maske (HTML-/PHP-
                              Seite) zu erstellen und hier immer das Bild einzufügen, welches
                              gerade angeklickt wurde? Außerdem sollte es die Funktionen vor und
                              zurück (in der jeweiligen Galerie) haben und die Anzeige Bild ...
                              von ....
                              So sieht hierzu meine HTML-Seite aus:

                              <body>
                              <table width="100%" align="center">
                               <tr>
                               <td align="center">
                               <table align="center">
                                 <tr>
                                 <td align="left">&nbsp;</td>
                                 <td align="center"><a href="016.jpg.html" title="zur&uuml;ck zur &Uuml;bersicht">Sit-In bei Ali (Sommer 2004)</a></td>
                                 <td align="right"><a href="016_002.jpg.html"><img src="../../Bilder/Layout/forw.gif" width="22" height="22" style="border:solid 1px black" /></a></td>
                                 </tr>
                                 <tr>
                                 <td colspan="3" align="center"><img src="../../Bilder/Fotos/Web_gross/Galerie_016/016_001.jpg" /></td>
                                 </tr>
                                 <tr>
                                 <td align="left">&nbsp;</td>
                                 <td align="center">Bild 1 von 7</td>
                                 <td align="right"><a href="016_002.jpg.html"><img src="../../Bilder/Layout/forw.gif" width="22" height="22" style="border:solid 1px black" /></a></td>
                                 </tr>
                                </table>
                               </td>
                               </tr>
                              </table>
                              </body>

                              Das ist natürlich alles etwas aufwendig. Vor allem die Ersterfassung
                              momentan. Aber da so jedes WE um die 100 Bilder dazu kommen,
                              erscheint mir das auch langfristig, keine gute Lösung zu sein.
                              Wenn ich dies alles auch mit PHP umsetzen kann, ohne dass ich
                              das alles einzeln einfügen muss, wäre ich für Stichwörter hierzu:

                              1. Bild einfügen, welches angeklickt wurde
                              2. Bild vor und zurück des jeweiligen Albums
                              3. Anzeige Bild ... von ... der jeweiligen Galerie

                              dankbar.

                              Empfehlt ihr außerdem MySQL für die Bildverwaltung zu nutzen?

                              1. Hi,

                                Ist es mit PHP und ohne Javascript möglich, eine Maske (HTML-/PHP-
                                Seite) zu erstellen und hier immer das Bild einzufügen, welches
                                gerade angeklickt wurde? Außerdem sollte es die Funktionen vor und
                                zurück (in der jeweiligen Galerie) haben und die Anzeige Bild ...
                                von ....

                                natürlich. Und das ist gar nicht mal so kompliziert.
                                bei meiner Galerie sieht dieser Teil so aus:

                                  
                                    echo '  <a id="galleryPrev" href="', $pic,$rew, '&amp;iv=',$iv, '">&laquo;</a>', $cr;  
                                    echo '  <var>Bild ';  
                                    if($galleries[$gallery][5]<10 || $galleries[$gallery][5]>99) echo $nr;  
                                    else echo sprintf("%02d",$nr);  
                                    echo '/', $galleries[$gallery][5], '</var>', $cr;  
                                    echo '  <a id="galleryNext" href="', $pic,$fwd, '&amp;iv=',$iv, '">&raquo;</a>', $cr;  
                                
                                

                                Vielleicht hilft es Dir, das Prinzip zu verstehen...
                                Zuvor werden einige Variablen gesetzt: $pic enthält die URL bis zu "nr=", $rew die Nummer des vorigen Bildes und $iv den Bildwechsel-Intervall. $galeries ist schon etwas komplizierter - das ist ein assoziatives mehrdimensionales Array. Für diese Galerie sind mit

                                  'Test' => array(  
                                    'SELFHTML-Treffen 2005 in Bochum', 'selfhtml-bochum', 'self05-', 'thumb_', 'gallery.css'  
                                  )
                                

                                der Titel, Pfad, Anfang der Bildnamen, Anfang der Thumbnail-Namen und das zu verwendende CSS definiert. Aber so komplex brauchst Du das für eine einzelne Galerie ja gar nicht zu machen.

                                Wenn ich dies alles auch mit PHP umsetzen kann, ohne dass ich
                                das alles einzeln einfügen muss, wäre ich für Stichwörter hierzu:

                                1. Bild einfügen, welches angeklickt wurde

                                Zunächst mal ist es hilfreich, die Thumbnails ähnlich wie die Originalbilder zu benennen, d.h. BildXYZ.jpg und thumb_BildXYZ.jpg, oder gleich und in einem anderen Verzeichnis.
                                Dann wird's leider etwas komplizierter: Du brauchst eine Routine, die das Verzeichnis ausliest und die Bildnamen in einem Array speichert. Wenn Du das dann sortierst, kannst Du die Bildnamen über $DeinArray[$Nummer] herausholen und

                                1. Bild vor und zurück des jeweiligen Albums

                                naturlich auch $Nummer+1 bzw. $Nummer-1 berechnen und auch

                                1. Anzeige Bild ... von ... der jeweiligen Galerie

                                die aktuelle Bildnummer und die Anzahl der Bilder im Array ausgeben.

                                Empfehlt ihr außerdem MySQL für die Bildverwaltung zu nutzen?

                                Nein. Das ist dazu überhaupt nicht nötig. Spare Dir die begrenzte Anzahl lieber für Anendungen, die komplexe Datenbankabfragen benötigen.

                                freundliche Grüße
                                Ingo

                                1. Hi Ingo,

                                  schönen Dank für deine ausführliche Antwort.
                                  Werde mich in meinem 3-wöchigen Urlaub jetzt
                                  mal dransetzen und versuchen die Fotogalerie
                                  mit deinen Tipps umzusetzen.

                                  Beste Grüße

                                  Alex

                                2. Gruß
                                  Zwerg Alex

                                3. Hallo nochmal,

                                  ich hoffe ich gehe euch allen net zu sehr auf den Wecker,
                                  aber ich habe jetzt - u.a. dank eurer Hilfe - ein ganz gutes
                                  Fotoalbum hingekriegt (zumindest für meine Verhältnisse^^).
                                  Also zumindest habe ich es hingekriegt, das ich die Bilder
                                  in eine einmal erstellte PHP-Seite integriere und nicht
                                  jedes Bild einzeln einfügen muss.

                                  Leider habe ich noch ein paar Probleme. Hierzu vlt.
                                  erst einmal mein Skript:

                                  1. Von der Seite Fotos verlinke ich auf sämtliche Galerien,
                                    z.B.:

                                  <a href="../Galerien/Galerie_17/thumbs.php?t=Karneval in D&uuml;sseldorf&o=Galerie_17" target="_blank">

                                  1. In der jeweiligen Galerie ("thumbs.php") zeige ich die
                                    Thumbnails an.

                                  Script vor <head>:

                                  <?php
                                  // Hier wird der Titel automatisch über "GET" von "fotos.php" übergeben
                                  $titel = $_GET['t'];
                                  // Hier wird der Galerie-Ordner automatisch über "GET" von "fotos.php" übergeben
                                  $ordner = $_GET['o'];
                                  // Hier wird ein Array (Variable "galerie") angelegt
                                  $galerie = array();
                                  //Ordner öffnen
                                  $dir = opendir ("../../Bilder/Fotos/Web_klein/$ordner");
                                  //Datei lesen ohne die Verzeichnisse darüber
                                  while ($bild = readdir ($dir)){
                                   if ($bild != "." && $bild != ".." && $bild != "Thumbs.db")
                                   array_push($galerie,$bild);
                                  }
                                  closedir($dir);
                                  //Zählen der Einträge in $galerie für das spätere festlegen des Endpunktes für die for-Schleife im body
                                  $x = count($galerie);
                                  ?>

                                  Script im <body>:

                                  <?php
                                  // Bestimmen des Startpunktes und des Endpunktes der for-Schleife wenn mir, als 20 Bilder, dann "$x-1" durch "19" ersetzen

                                  for ($i = 0; $i <= $x-1; $i++)
                                  {
                                  echo "<a href="vorschau.php?t=" . $titel .  "&o=" . $ordner . "&bn=" . $galerie[$i] . ""><img src="../../Bilder/Fotos/Web_klein/" . $ordner . "/" . $galerie[$i] . "" /></a>";
                                  }
                                  ?>

                                  3)Abschließend lass ich mir in "vorschau.php" das Bild in groß
                                  anzeigen.

                                  Script vor <head>:

                                  <?php
                                  // Hier wird der Titel von "thumbs.php" übergeben
                                  $titel= $_GET['t'];
                                  // Hier wird der Bildname von "thumps.php" übergeben
                                  $bild = $_GET['bn'];
                                  // Hier wird der Galerie-Ordner automatisch über "GET" von "thumbs.php" übergeben
                                  $ordner = $_GET['o'];
                                  ?>

                                  Script im <body>:

                                  <img src="../../Bilder/Fotos/Web_gross/<?php echo $ordner . "/" . $bild ?>" />

                                  1. Das war´s so im großen und ganzen.

                                  Was ich immer noch nicht hinbekomme ist:

                                  1. Wie bekomme ich es hin, das ich in der Vorschau ein Bild
                                    zurück bzw. ein Bild vorspringen kann?

                                  Ich kann doch in "vorschau.php" ja nicht sagen, gehe in dem Array
                                  einen zurück bzw. vor, weil das ja Array ja in "thumbs.php" aus-
                                  gelesen wird. Und mit dem Bildnamen z.B. 3.jpg kann ich doch
                                  net rechnen, oder?

                                  1. Wie bekomme ich es hin, dass mir die Bildnummer des
                                    aktuellen Bildes anzeigt wird?
                                    Ich weiß, dass ich mit array_search die Position des Bildes im
                                    Array anzeigen lassen kann. Aber dann hab ich wieder das Problem,
                                    dass ich das array in "vorschau.php" ja garnicht auslese.
                                    Und per GET von "thumbs.php" übergeben lassen, stellt mich vor
                                    dem Problem, dass ich net weiß, wie ich die Position ermittle,
                                    wenn ich die for-Schleife genutzt habe.

                                  2. Verlangsamt es den Aufbau der Seite eigentlich sehr, wenn
                                    ich 3-4 Werte per GET übergebe?
                                    Kann das derzeit noch net abschätzen, weil ich lokal mit
                                    Xampp teste und noch keinen Webhoster habe.

                                  Sorry, dass ihr jetzt erstmal soviel lesen musstet, aber ich
                                  hoffe, es hat trotzdem noch jmd. etwas Zeit und die Motivation,
                                  sich mit meinen o.g. Problemen zu beschäftigen und antwortet mir.

                                  Beste Grüße
                                  Alex

                                  1. Hi,

                                    <a href="../Galerien/Galerie_17/thumbs.php?t=Karneval in D&uuml;sseldorf&o=Galerie_17" target="_blank">

                                    warum ist das Script nicht in Galerien/ ? Und warum ist Karneval in D&uuml;sseldorf nicht url-kodiert und &o maskiert?

                                    1. In der jeweiligen Galerie ("thumbs.php") zeige ich die
                                      Thumbnails an.

                                    Warum verwendest Du mehrere Scripts? Wenn Du Dich auf eines beschränkst, dann enthält dieses sämtliche Informationen, die es auch ermöglichen...

                                    1. Wie bekomme ich es hin, das ich in der Vorschau ein Bild
                                      zurück bzw. ein Bild vorspringen kann?

                                    ein bestimmtes Bild über die Nummer im Array aufzurufen und entsprechende Links zum Blättern auszugeben und natürlich auch die aktuelle Bildnummer. Rufe dazu nicht das Bild, sondern seine Nummer auf.

                                    Und mit dem Bildnamen z.B. 3.jpg kann ich doch net rechnen, oder?

                                    könntest Du zwar schon, brauchst Du aber nicht.

                                    1. Verlangsamt es den Aufbau der Seite eigentlich sehr, wenn
                                      ich 3-4 Werte per GET übergebe?

                                    Nein. Jedenfalls wirst Du es nicht bemerken.

                                    freundliche Grüße
                                    Ingo

                                    1. Hi Ingo,

                                      <a href="../Galerien/Galerie_17/thumbs.php?t=Karneval in D&uuml;sseldorf&o=Galerie_17" target="_blank">

                                      warum ist das Script nicht in Galerien/ ? Und warum ist Karneval in D&uuml;sseldorf nicht url-kodiert und &o maskiert?

                                      Hhmmm, keine Ahnung, was du damit meinst. *schäm*

                                      1. In der jeweiligen Galerie ("thumbs.php") zeige ich die
                                        Thumbnails an.

                                      Warum verwendest Du mehrere Scripts? Wenn Du Dich auf eines beschränkst, dann enthält dieses sämtliche Informationen, die es auch ermöglichen...

                                      Meinst du mit "mehrere Scripts", warum ich für jede Galerie
                                      eine einzelne Vorschau erstelle oder warum ich "thumbs.php"
                                      (Kleinansicht) und "vorschau.php" (Großansicht) nicht in einer
                                      Datei einfüge?
                                      Also ersteres mache ich für die Übersichtlichkeit. Ist ja auch
                                      kein Problem, die Datei eben von der einen Galerie in die nächste
                                      zu kopieren.
                                      Letzteres wüsste ich jetzt auf Anhieb nicht wie ich das verwirklichen
                                      sollte. Würde ich vlt. hinkriegen, aber dann würde mir das Skript
                                      wieder zu unübersichtlich.

                                      1. Wie bekomme ich es hin, das ich in der Vorschau ein Bild
                                        zurück bzw. ein Bild vorspringen kann?

                                      ein bestimmtes Bild über die Nummer im Array aufzurufen und entsprechende Links zum Blättern auszugeben und natürlich auch die aktuelle Bildnummer. Rufe dazu nicht das Bild, sondern seine Nummer auf.

                                      Danke, hab ich gestern Nacht noch hinbekommen. Habe einfach
                                      das array $galerie in Vorschau nochmal geöffnet und ausgelesen,
                                      mir die Bildnummer ($bnr)anzeigen lassen und dann, wie du mir in einer
                                      vorherigen Nachricht empfohlen hast in $rew = $galerie[$bnr-1]
                                      und in $fwd = $galerie[$bnr+1] die zu verlinkenden Bildnummern
                                      gespeichert.

                                      1. Verlangsamt es den Aufbau der Seite eigentlich sehr, wenn
                                        ich 3-4 Werte per GET übergebe?

                                      Nein. Jedenfalls wirst Du es nicht bemerken.

                                      :-)

                                      Gruß
                                      Alex

                                      P.S.
                                      Ich bin absoluter Anfänger (wie du ja bestimmt schon bemerkt hast)
                                      und bin z. Zt. froh, wenn etwas läuft. Um die Optimierung werde
                                      ich mich später kümmern. Bin aber für jeden Verbesserungsvorschlag
                                      dankbar.

                                      1. Hi,

                                        warum ist das Script nicht in Galerien/ ? Und warum ist Karneval in D&uuml;sseldorf nicht url-kodiert und &o maskiert?

                                        Hhmmm, keine Ahnung, was du damit meinst. *schäm*

                                        1. sind Leerzeichen in einer URL unzulässig (müßte als %20 kodiert werden) und 2. muß das Zeichen & im HTML-Link als &amp; angegeben werden.

                                        Meinst du mit "mehrere Scripts", warum ich für jede Galerie
                                        eine einzelne Vorschau erstelle oder warum ich "thumbs.php"
                                        (Kleinansicht) und "vorschau.php" (Großansicht) nicht in einer
                                        Datei einfüge?

                                        Beides. Aber vor allem letzteres.

                                        Also ersteres mache ich für die Übersichtlichkeit. Ist ja auch
                                        kein Problem, die Datei eben von der einen Galerie in die nächste
                                        zu kopieren.
                                        Letzteres wüsste ich jetzt auf Anhieb nicht wie ich das verwirklichen
                                        sollte. Würde ich vlt. hinkriegen, aber dann würde mir das Skript
                                        wieder zu unübersichtlich.

                                        Nö. wie schon beschrieben kannst Du am Anfang des Scripts ein Array definieren mit den erforderlichen Informationen. Schau mal:
                                        http://ingo-webdesign.de/foto/?gallery=dionysos&nr=-19
                                        http://ingo-webdesign.de/foto/?gallery=bochum
                                        http://ingo-webdesign.de/foto/?gallery=Test&nr=32&iv=60

                                        Im Script steht dazu am Anfang:

                                        $galleries = array(  
                                          'dionysos' => array( // URL-Parameter für Aufruf der Galerie  
                                            'Urlaub auf Thassos', 'dionysos', 'Dionysos', 'thumb_', 'dionysos/dionysos.css'  
                                        # Überschrift der Galerie, Pfad der Bilder, Anfang der Bildnamen [, Thumbnail [, CSS-Datei] ]  
                                          ),  
                                          'bochum' => array(  
                                            'SELFHTML-Treffen 2005 in Bochum', 'selfhtml-bochum', 'self05-', 'thumb_', 'selfhtml-bochum/selfhtml.css'  
                                          ),  
                                          'Test' => array(  
                                            'SELFHTML-Treffen 2005 in Bochum', 'selfhtml-bochum', 'self05-', 'thumb_', 'gallery.css'  
                                          )  
                                        );
                                        

                                        was leicht zu ergänzen ist.
                                        Darin wird dann z.B. der Galerieparameter so abgefragt:

                                        $gallery = (isset($_REQUEST['gallery']) && array_key_exists($_REQUEST['gallery'], $galleries)) ? $_REQUEST['gallery'] : false;

                                        Wenn also der Parameter als Schlüssel im Array ist, wird die Variavle $gallery damit definiert.

                                        freundliche Grüße
                                        Ingo

                                        1. Glück auf mal wieder!

                                          Hhmmm, keine Ahnung, was du damit meinst. *schäm*

                                          1. sind Leerzeichen in einer URL unzulässig (müßte als %20 kodiert werden) und 2. muß das Zeichen & im HTML-Link als &amp; angegeben werden.

                                          Ich dachte, die Leerzeichen werden automatisch als %20 kodiert.
                                          Zumindest ist das bei meinen Browsern IE6 und Firefox so.
                                          Das und Zeichen macht auch keine Probleme. Werde das aber dennoch
                                          aufgreifen, weil ich ja möglichst viele Browser erreichen will.

                                          Meinst du mit "mehrere Scripts", warum ich für jede Galerie
                                          eine einzelne Vorschau erstelle oder warum ich "thumbs.php"
                                          (Kleinansicht) und "vorschau.php" (Großansicht) nicht in einer
                                          Datei einfüge?

                                          Beides. Aber vor allem letzteres.

                                          Ersteres habe ich jetzt angepasst. Letzteres verzichte ich
                                          drauf, weil ich nur das Großbild und keine Thumbnails mehr
                                          in der Vorschau haben will. Habe nämlich eine ziemlich hohe
                                          Auflösung 1024x768.

                                          Also ersteres mache ich für die Übersichtlichkeit. Ist ja auch
                                          kein Problem, die Datei eben von der einen Galerie in die nächste
                                          zu kopieren.
                                          Letzteres wüsste ich jetzt auf Anhieb nicht wie ich das verwirklichen
                                          sollte. Würde ich vlt. hinkriegen, aber dann würde mir das Skript
                                          wieder zu unübersichtlich.

                                          Nö. wie schon beschrieben kannst Du am Anfang des Scripts ein Array definieren mit den erforderlichen Informationen. Schau mal:
                                          http://ingo-webdesign.de/foto/?gallery=dionysos&nr=-19
                                          http://ingo-webdesign.de/foto/?gallery=bochum
                                          http://ingo-webdesign.de/foto/?gallery=Test&nr=32&iv=60

                                          Im Script steht dazu am Anfang:

                                          $galleries = array(

                                          'dionysos' => array( // URL-Parameter für Aufruf der Galerie
                                              'Urlaub auf Thassos', 'dionysos', 'Dionysos', 'thumb_', 'dionysos/dionysos.css'

                                          Überschrift der Galerie, Pfad der Bilder, Anfang der Bildnamen [, Thumbnail [, CSS-Datei] ]

                                          ),
                                            'bochum' => array(
                                              'SELFHTML-Treffen 2005 in Bochum', 'selfhtml-bochum', 'self05-', 'thumb_', 'selfhtml-bochum/selfhtml.css'
                                            ),
                                            'Test' => array(
                                              'SELFHTML-Treffen 2005 in Bochum', 'selfhtml-bochum', 'self05-', 'thumb_', 'gallery.css'
                                            )
                                          );

                                          
                                          >   
                                          > was leicht zu ergänzen ist.  
                                          > Darin wird dann z.B. der Galerieparameter so abgefragt:  
                                          >   
                                          > `$gallery = (isset($_REQUEST['gallery']) && array_key_exists($_REQUEST['gallery'], $galleries)) ? $_REQUEST['gallery'] : false;`{:.language-php}  
                                          >   
                                          > Wenn also der Parameter als Schlüssel im Array ist, wird die Variavle $gallery damit definiert.  
                                            
                                            
                                          Jetzt weiß ich auch mal wofür die assoziativen Arrays gut  
                                          sein können ^^.  
                                            
                                          Also bis auf kleinere Probleme, habe ich  
                                          jetzt erstmal eine passable Galerie hinbekommen.  
                                          Um die Verfeinerung kümmere ich mich später nochmal,  
                                          weil ich jetzt erstmal genug davon hab und mich wieder  
                                          den leichteren Seiten (nur mit HTML und CSS und ohne PHP)  
                                          zuwende.  
                                            
                                          Ich danke vor allem Ingo für seine Hilfe, auch wenn ich  
                                          vlt. nicht alles so genau umgesetzt habe, wie er es  
                                          mir "empfohlen" hat.  
                                            
                                          Beste Grüße  
                                          zwerg
                                          
                                          1. Hi,

                                            Ich dachte, die Leerzeichen werden automatisch als %20 kodiert.
                                            Zumindest ist das bei meinen Browsern IE6 und Firefox so.

                                            nur kannst Du Dich nicht drauf verlassen. Aber dazu gibt es doch die praktische Funktion urlencode() - und für die Rückumwandlung zur Anzeige des Textes dann urldecode().

                                            Das und Zeichen macht auch keine Probleme. Werde das aber dennoch
                                            aufgreifen, weil ich ja möglichst viele Browser erreichen will.

                                            Es ist aber invalide und kann durchaus Probleme machen. Das & leitet eine Entity ein, die durch ; beendet wird. Viele Browser erkennen zwar, dass &o= keine Entity sein kann und korrigieren den angenommenen Fehler, aber wenn Du u.B. &part= angeben würdest, könnte leicht angenommen werden, dass Du das ; vergessen hast und der Fehler dahingehend korrogiert werden, dass ∂ ausgegeben wird.

                                            Darin wird dann z.B. der Galerieparameter so abgefragt:

                                            $gallery = (isset($_REQUEST['gallery']) && array_key_exists($_REQUEST['gallery'], $galleries)) ? $_REQUEST['gallery'] : false;

                                            Wenn also der Parameter als Schlüssel im Array ist, wird die Variavle $gallery damit definiert.

                                            Jetzt weiß ich auch mal wofür die assoziativen Arrays gut
                                            sein können ^^.

                                            Nicht nur dafür. Auch der Zugriff auf die Elemente kann dadurch sehr vereinfacht werden. Z.B. bekomme ich dann über $galleries[$gallery] wenn $gallery='dionysos' sofort das Array mit den Daten für die 'dionysos'-Galerie.
                                            Abgesehen davon "verschenkt" man in solchen Fällen mit einem numerischen Array den key, denn $galleries[0] sagt noch gar nichts, es sei denn, man würde die Galerie auch numerisch aufrufen, also über ?gallery=0 - ansonsten müßte der key (=Aufrufparameter) noch zusätzlich als weiteres Array-Element hinzugefügt und umständlich herausgesucht werden.

                                            Also bis auf kleinere Probleme, habe ich
                                            jetzt erstmal eine passable Galerie hinbekommen.
                                            Um die Verfeinerung kümmere ich mich später nochmal,
                                            weil ich jetzt erstmal genug davon hab und mich wieder
                                            den leichteren Seiten (nur mit HTML und CSS und ohne PHP)
                                            zuwende.

                                            Schön. freut mich.

                                            freundliche Grüße
                                            Ingo

              2. hi,

                Aber obwohl ich die Ansicht "alle Ordner anzeigen" gewählt
                habe, zeigt der mit in WinXP keine Thumbs.db an.

                In der Thumbs.db legt Win XP die Miniaturansichten der Bilder im Verzeichnis ab, wenn du mal die entsprechende Anzeigeoption im Explorer gewählt hast.

                Allerdings gilt die Thumbs.db IIRC als "Systemdatei" - also muss du in den Ordneroptionen angeben, dass du auch solche angezeigt bekommen willst.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }