cyrotek: Kleine Gallery

Also, ich hab nun schon den Ordner auslesen lassen und daraus dynamische links erstellt, aber wenn es darum geht diese links dann in eine switch funktion oder ähnliches zubringen, damit sie im eigentlich content Bereich dann gross angezeigt werden, scheitere ich jedoch.

Ich lasse den Ordner small auslesen, da die Namen identisch sind, wollte ich die $file variable nutzen um damit die grossen anzeigen zu lassen, aber das geht nicht. Ich hatte einmal es geschafft das jeweils das letzte Bild aus dem Ordner korrekt angezeigt wird, alle anderen bleiben wie sie sind.

Leider, habe ich den code mittlerweile gelöscht, und es mit einem iframe probiert, das ging auch, aber leider wurde das Bild nie in der richtigen grösse angezeigt, sondern im FF im verkleinert.....

mein auslese code...

<?php
error_reporting(E_ALL);
$verzeichnis = openDir("rendering/small");
while ($file = readDir($verzeichnis)) {
 if ($file != "." && $file != "..") {
   if($file != substr_count($file,".jpg")) {
   $name = explode(".",$file);
 echo "<a href="rendering/big/$file" target="bild"><img src="rendering/small/$file"></a>&nbsp;";
  }
 }
}
closeDir($verzeichnis);
?>

Jede Idee ist willkommen. Bin übrigens ein totaler PHP newb, wie ihr wahrscheinlich auch an dem Code seht.

Gruss,
cyrotek

  1. Hello cyrotek,

    mein auslese code...

    <?php
    error_reporting(E_ALL);
    $verzeichnis = openDir("rendering/small");
    while ($file = readDir($verzeichnis)) {
    if ($file != "." && $file != "..") {
       if($file != substr_count($file,".jpg")) {
       $name = explode(".",$file);
    echo "<a href="rendering/big/$file" target="bild"><img src="rendering/small/$file"></a>&nbsp;";
      }
    }
    }
    closeDir($verzeichnis);
    ?>

    Dein Code enthält eine Zeile, bei der ich nicht weiß, was Du damit bezwecken
    wolltest:

    if($file != substr_count($file,".jpg"))

    Aber Dein Code könnte keinen Link auf ein Bild ausliefern, dass "0" heißt.
    Das wäre aber ein durchaus zulässiger Name für ein Bild.
    Genau genommen, würde die Schleife sogar abbrechen, wenn sie
    auf ein File mit dem Namen 0 stößt.

    <?php
      error_reporting(E_ALL);

    $verzeichnis = openDir("rendering/small");

    while (($file = readDir($verzeichnis)) !== false)
      {
        if ($file != "." && $file != "..")
        {
          if(substr($file,-4) == ".jpg")   ## nur vermeintliche JPG-Dateien verlinken
          {
            $name = htmlentities(substr($file,0,-4),ENT_QUOTES));
            echo "<a href="rendering/big/$file" \n".
                 "   target="bild"\n".
                 "><img src="rendering/small/$file"\n".
                 "      alt="Vorschaubild"\n".
                 "      title="$name"></a>&nbsp;\n";
          }
        }
      }

    closeDir($verzeichnis);
    ?>

    Probier es nochmal so

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

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. Hello cyrotek,

      Dein Code enthält eine Zeile, bei der ich nicht weiß, was Du damit bezwecken
      wolltest:

      if($file != substr_count($file,".jpg"))

      Aber Dein Code könnte keinen Link auf ein Bild ausliefern, dass "0" heißt.
      Das wäre aber ein durchaus zulässiger Name für ein Bild.
      Genau genommen, würde die Schleife sogar abbrechen, wenn sie
      auf ein File mit dem Namen 0 stößt.

      <?php
        error_reporting(E_ALL);

      $verzeichnis = openDir("rendering/small");

      while (($file = readDir($verzeichnis)) !== false)
        {
          if ($file != "." && $file != "..")
          {
            if(substr($file,-4) == ".jpg")   ## nur vermeintliche JPG-Dateien verlinken
            {
              $name = htmlentities(substr($file,0,-4),ENT_QUOTES));
              echo "<a href="rendering/big/$file" \n".
                   "   target="bild"\n".
                   "><img src="rendering/small/$file"\n".
                   "      alt="Vorschaubild"\n".
                   "      title="$name"></a>&nbsp;\n";
            }
          }
        }

      closeDir($verzeichnis);
      ?>

      Probier es nochmal so

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

      Tom

      Danke Tom!

      Allerdings, war dieser code nicht das problem, sondern das in eine switch-case verbindung zu bringen. Also ich hab das jetzt soweit alles angelegt, aber er wechselt nicht zu dem jeweiligen bild, clicke ich auf das letzte bild, zeigt er mir nicht das default bild an sondern nur den text "vorschaubild". Hier der geänderte code und der switch-case code

      <?php
        error_reporting(E_ALL);

      $verzeichnis = openDir("rendering/small");

      while (($file = readDir($verzeichnis)) !== false)
        {
          if ($file != "." && $file != "..")
          {
            if(substr($file,-4) == ".jpg")
            {
              $name = htmlentities(substr($file,0,-4),ENT_QUOTES);
              echo "<a href="?bild=$name" \n".
                   "><img src="rendering/small/$file"\n".
                   "      alt="Vorschaubild"\n".
                   "      title="$name"></a>&nbsp;\n";
            }
          }
        }

      closeDir($verzeichnis);
      ?>

      <?php
        error_reporting(E_ALL);

      $verzeichnis = openDir("rendering/big");

      while (($file = readDir($verzeichnis)) !== false)
        {
          if ($file != "." && $file != "..")
          {
            if(substr($file,-4) == ".jpg")   ## nur vermeintliche JPG-Dateien verlinken
            {
              $name = htmlentities(substr($file,0,-4),ENT_QUOTES);
            }
          }
        }
         if(isset($_GET['bild'])) {
         switch($_GET['bild']){
         default: echo "<img src="./rendering/big/auge-a-df.jpg"\n>";  break;
       case "$name": echo "<img src="./rendering/big/$file" alt="Vorschaubild"\n>";  break;
      }
      }
      else {
      echo "<img src="./rendering/big/alltogether0000.jpg">";
      }
      closeDir($verzeichnis);
      ?>

      Ich weiss das die doppelete funktion wahrscheinlich unnötig ist, aber es wahr halt ein versuch. ;)

      <div style="padding: 0;margin:0;">
      <?php
          switch($_GET['bild']) {
              default: include ("./rendering/content.php"); break;
          }
      ?>
      </div>
      <div class="rennav"><? include ("./rendering/_nav.php"); ?></div>

      Und damit soll der code abgerufen werden. _nav.php ist der erste abschnitt und content.php soll der zweite sein.

      Tipps oder tricks? Hab gestern schon knapp 4 stunden dran gessesen, das internet abgesucht, aber leider ohne erfolg....

      1. Ich hab noch ein biserl überlegt, und mir gedacht das ich vielleicht noch ein foreach() einbauen müsste, damit es alle auswerten kann und nicht jeweils nur eins, allerdings bin ich ein biserl überfragt wo und vor allem wie ich das dann einbauen müsste. Hab zwar ne seite gefunden die foreach() erklärt, aber anscheinend nicht genug damit ich es check.

        Sorry für double posting.

  2. echo $begrüßung;

    [Scheitern beim Programmieren]
    Jede Idee ist willkommen.

    Vermutlich das Wichtgstes beim Programmieren sind Kontrollausgaben.

    Gib dir die Werte der beteiligten Variablen aus. echo und print sind dafür geeignete Mittel, aber auch var_dump() und print_r() solltest du kennen. var_dump() klärt auch über den aktuellen Typ auf, print_r() ist für Anzeigen von Arrays geeignet.
    Und nicht nur Variablen, auch ganze Ausdrücke kann man so kontrollieren, z.B: var_dump($a != $b)

    Ebenso wichtig wie Kontrollausgaben ist das Handbuch, in dem die Funktionen beschrieben sind, die du verwenden möchtest. Was erwartet eine Funktion für Parameter? Was gibt sie als Ergebnis zurück? Ändert sich ihr Verhalten/Ergebnis im Fehlerfall?

    Und nun kannst du ja mal anhand dieser Zeile untersuchen, was der Inhalt von $file ist, was der Funktionsaufrufs substr_count() für ein Ergebnis liefert und was das Ergebnis des Gesamtausdrucks ist:

    if($file != substr_count($file,".jpg")) {

    echo "$verabschiedung $name";

    1. Hello dedlfix,

      Und nun kannst du ja mal anhand dieser Zeile untersuchen, was der Inhalt von $file ist, was der Funktionsaufrufs substr_count() für ein Ergebnis liefert und was das Ergebnis des Gesamtausdrucks ist:

      if($file != substr_count($file,".jpg")) {

      danke für die Ergänzung.
      Ich hoffe, dass cyrotec die Hinweise auch nutzt.
      Zumindest habe ich aus seinem Code geschlossen, dass er willens ist, die Dinge zu verstehen ;-))

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

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau