Anna: Galleryproblem...

Hallo Leute,

ich bastle jetzt schon ne ganze Weile an ner einfachen gallery, komm aber einfach nicht weiter bei meinem Problem...

Also, kurz die Idee:
Ich hab ein Galleryfile gemacht, welches mir alle Thumbs aus nem Ordner ausliest und in ner Tabelle ausgibt, das funktioniert soweit. Es funktioniert auch weitergehend der Link auf ein Bild, sprich wenn ich das grosse Bild direkt verlinke, funktioniert es auch...
Jetzt möcht ich aber beim Klick auf das Bild nicht nur das Bild in gross öffnen, sondern ne PhPDatei, das krieg ich nicht hin, dass dort fortlaufend der richtige Dateiname gewählt wird...

Ich hab im Moment die Datei fotoview01.php manuell reingeschrieben, kann mir jemand helfen und erkären, wie ich es hinkriegen, dass dort beim ersten Bild der Link auf fotoview01.php geht, beim zweiten Bild auf fotoview02.php, etc...

Wär verdammt lieb

Küsschen Anna

Hier der Code

<title>javascript:OpenWindow('gallery/fotoview1.php','Pictures','width=500,height=600,scrollbars=no,resizable=no,screenX=20,screenY=20,toolbar=no')</title><SCRIPT language="JavaScript">

function OpenWindow(theURL,winName,features)

{ window.open(theURL,winName,features);  }

</SCRIPT>
  <?php
// #####################################################################################################
$subdir = "gallery/allgemein/pics/"; // Verzeichnis
$spalten = 4; // Spaltenanzahl
$suffix = "_th."; // Suffix der Thumbs
// #####################################################################################################
$verzeichnis = opendir("./".$subdir.$gal);
 while($img = readdir($verzeichnis)){
  $parts = explode(".", $img);
  if(($parts[1] == "gif") OR ($parts[1] == "jpg") OR ($parts[1] == "png")){
   $images[] = $img;
  }
 }
 closedir($verzeichnis);
 sort($images);
 reset($images);
 if (count($images) > 0){
  echo "<table border="0" cellpadding="5" cellspacing="0" width="627"><tr align="center">
 <td colspan="5" class="leer"><img src="../images/platzhalter.jpg" border="1" width="468" height="60">
 </td></tr><tr>\n";
  $i = 0; // zählt die anzahl bilder pro zeile
  $c = 0; // zählt die gesammte anzahl bilder welche schon ausgegeben wurden
  // ".$c.".php
  foreach ( $images as $image )
  {
   $parts = explode(".", $image);
   $imageSmall = $parts[0].$suffix.$parts[1];

echo "<td class="text"><div align="center">\n";
   echo "<a href="javascript:OpenWindow('gallery/allgemein/fotoview01.php','Pictures','width=500,height=600,scrollbars=no,resizable=no,screenX=20,screenY=20,toolbar=no')">\n";
   echo "<img width="92" src="".$subdir.$gal."thumbs/".$imageSmall."" alt="$image" border="0"></a></td>\n";
   echo "</div></td>\n";
   $i++;
   $c++;

if ( $i%$spalten == 0 && $i > 0 && $c < count($images) )
   {
    echo "</tr><tr>\n";
    $i = 0;
   }
  }
  for ($i = $i; $i < $spalten ; $i++ )
  {
   echo "<td>&nbsp;</td>\n";
   $c++;
  }
  if ( $c%$spalten == 0 ) // gibt den tabellenschluss aus
  {
   echo "</tr>\n";
   echo "<tr><td colspan="4" class="titel">Gallerien&uuml;bersicht:</td></tr>\n";
   echo "<tr><td colspan="3" class="texttitel">Beispiel <br></td>\n";
   echo "<td class="text"><a href="\n";
   echo ("$PHP_Self");
   echo "?content=gallery">--&gt; Bilder&uuml;bersicht &lt;--</a></td></tr>\n";
   echo "<tr><td colspan="4" class="leer">&nbsp;</td>\n";
   echo "<tr><td colspan="3" class="texttitel">Beispiel <br></td>\n";
   echo "<td class="text"><a href="\n";
   echo ("$PHP_Self");
   echo "?content=gallery">--&gt; Bilder&uuml;bersicht &lt;--</a></td></tr>\n";
   echo "</tr></table>\n";
  }

}
 else
 {
  print "<b> Die Gallery: ".$subdir.$gal." enthält keine Dateien!<b>\n";
 }
?>

  1. Hello Anna,

    das Problem ist doch in Wirklichkeit gar keins.
    Leider fangen die Meisten immer gleich an, mit PHP rumzucoden, bevor sie sich einen Plan gemalt und ein paar statische HTML-Dateien gebaut haben.

    Diese statischen HTML-Dateien müssen immer genau das leisten, was in einem Schritt zu zun ist.

    Also

    - Tabelle mit 9 Thumbs aufbauen
        Die Thumbs stehen in einem Link
        Der Link enthält sowohl eine reine HTML-Anweisung al auch eine JavaScriptanweseiung
        für das öffen eines neuen Fensters.

    - Die Datei, die dann über den Link aufgerufen werden soll

    Und anschließend überlegst Du nun, wie man diese statischen HTML-Dateien mit PHP generieren könnte.
    Da muss man bestimmt nur ein paar Paramter in der URL übergeben, und schon klappt das, oder?

    Die Einzige Gefahr dabei ist nur, dass Du den übergebenen Filenamen innerhalb des Scriptes sicherheitstechnisch behandeln musst, also z.B. mit basename() ggf. mitgesendete Pfade beseitigen und einen passenden wieder ergänzen und eine Endung anhängen. Sonst könnte man Dir ggf. die ganze Platte leerräumen. Wenn Du nur JPGs verlinkst, dann kannst Du ja immer JPG hinten anhängen.

    Du musst also gar nicht unbedingt das Bild mit einem PHP-Script ausliefern, sondern nur dem <img>-Tag in der aufgerufenen Datei (für die Großanzeige) mit PHP generieren. Ausnahme: Du willst wissen, wer wann welches Bild angefordert hat.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. Leider bin ich nicht wirklich ein PhP Genie und daher komm ich bei deinen Worten nicht wirklich mit...

      Wenn ich also nur das grosse Bild aufrufe, dann wüsste ich zb nicht, wie ich den Zurück und weiter Button einbinden könnte...

      daher den verweis auf eine datei...

      Hast du mir einen lösungsvorschlag, wie ich das mit der datei hinkriege? Ich steh irgendwie an und hoffe, php anhand von "learning by doing" besser lernen und verstehen kann, aber dass ich die datei aufrufen kann, das übersteigt meinen verstand...*schäm*

      gruss zurück...

  2. $y = "1";

    echo "<a href="javascript:OpenWindow('gallery/allgemein/fotoview0".$y++.".php','Pictures','width=500,height=600,scrollbars=no,resizable=no,screenX=20,screenY=20,toolbar=no')">\n";

    Ich hab da mal was gebastelt und es funktioniert soweit, das problem ist aber, wenn ich zu bild 10 (oder höher) komme, dass heisst die datei fotoview010.php und sollte aber fotoview10.php heissen..

    kann mir jemand helfen?

    1. $y = "1";

      echo "<a href="javascript:OpenWindow('gallery/allgemein/fotoview0".$y++.".php','Pictures','width=500,height=600,scrollbars=no,resizable=no,screenX=20,screenY=20,toolbar=no')">\n";

      Ich hab da mal was gebastelt und es funktioniert soweit, das problem ist aber, wenn ich zu bild 10 (oder höher) komme, dass heisst die datei fotoview010.php und sollte aber fotoview10.php heissen..

      kann mir jemand helfen?

      Hallo,
      also,wenn Du das mit fotoview0 macht, muss ja 010 rauskommen. Versuche doch vorher abzufragen (mit einer if-Abfrage), ob $y<10 ist und lasse nur dann eine 2. Variable z.B. $z = 0 sein. Das sähe dann so aus:
      ...fotoview".$z.$y++...
      und vorher
      if ($y<10){
        $z="0";
      }
      else{
       $z="" ;
      }
      Tschüß

      Alex