Flexible Bildergalerie + Zufall

a*new*found*flo

Erfahrenes Mitglied
Hi!

Ich habe nun nach Jahren mal wieder Dennis Wronka's Code Schnipsel zur flexiblen Bildergalerie mit Blätterfunktion ausgepackt und bin noch immer begeistert.

Nun möchte ich eine extra Seite anlegen, auf der mir zufällig ausgewählte Thumbnails aus verschiedensten Ordnern der Galerie angezeigt werden, die auch gleich richtig in die Tiefe auf die Großansicht verlinkt sind.

Leider sind meine Ansätze dabei im Sand verlaufen. Hat jemand eine Idee, wie man das anstellen kann? Das knifflige ist dabei auch das Bilder nur einmal vorkommen sollen.

Einer meiner Ansätze war der Versuch mit mehrdimensionalen Array's an das Problem heran zu treten, aber da bin ich sehr schnell in Teufels Küche gekommen.

Vielen Dank, mit freundlichen Grüßen, Flo
 
wie liegen deine Bilder vor? Hast du die Namen zu den Bilder in der Datenbank, oder werden die direkt aus dem Ordner gelesen ?
 
Zuletzt bearbeitet:
Hi!
Die Bilder werden exakt wie im Code-Schnipsel direkt aus Ordnern ausgelesen. Mit ner Datenbank wär es sicherlich einfacher, aber eine Datenbankanbindung ist in diesem Fall leider nicht möglich.
 
Wollte es mir anschauen aber diese Directory Klasse ist leider nicht mehr online. Dieses Script dort dient ja nur zur Ausgabe, d.h. am Ende wird es darauf hinauslaufen der directoy Klasse eine Methode zu verleihen, die zufällige Dateien aus einer Reihe von gegebenen Ordnern ausliest.
 
Oh, ok, hier ist die gesamte Klasse:
PHP:
<?php
class directorylist
{
    var $name;
    var $subdirs;
    var $files;
  
   function datesort($val1,$val2)
{
 $time1=filemtime($val1);
 $time2=filemtime($val2);
 if ($time1==$time2)
 {
  return 0;
 }
 elseif ($time1<$time2)
 {
  return -1;
 }
 elseif ($time1>$time2)
 {
  return 1;
 }
}   
    function directorylist($dirname,$sort=false,$limitrecursion=false,$recursiondepth=0)
    {
        $this->name=$dirname;
        $this->subdirs=array();
        $this->files=array();
        $dir=opendir($dirname);
        while ($file=readdir($dir))
            {
                if (($file!=".") && ($file!=".."))
                    {
                        if (is_dir($dirname."/".$file))
                            {
                                if (($limitrecursion==false) || ($recursiondepth>-1))
                                    {
                                        $this->subdirs[]=new directorylist($dirname."/".$file,$sort,$limitrecursion,$recursiondepth-1);
                                    }
                            }
                        else
                            {
                                if (($limitrecursion==false) || ($recursiondepth>-1))
                                    {
                                        $this->files[]=$file;
                                    }
                            }
                    }
            }
        closedir($dir);
       if ($sort==true)
            {
			$subdirs = substr($subdirs, 1,3);
         $this->subdirs = array_reverse($this->subdirs,FALSE); 

  
  }
    }

    function findsubdirbyobject($needle)
    {
        for ($x=0;$x<count($this->subdirs);$x++)
            {
                if ($this->subdirs[$x]==$needle)
                    {
                        return $x;
                    }
                else
                    {
                        $val=$this->subdirs[$x]->findsubdirbyobject($needle);
                        if ($val!=-1)
                            {
                                return $x.','.$val;
                            }
                    }
            }
        return -1;
    }

    function findsubdirbyname($needle)
    {
        for ($x=0;$x<count($this->subdirs);$x++)
            {
                if ($this->subdirs[$x]->name==$needle)
                    {
                        return $x;
                    }
                else
                    {
                        $val=$this->subdirs[$x]->findsubdirbyname($needle);
                        if ($val!=-1)
                            {
                                return $x.','.$val;
                            }
                    }
            }
        return -1;
    }

    function findsubdir($needle)
    {
        $vartype=gettype($needle);
        if ($vartype=="string")
            {
                return $this->findsubdirbyname($needle);
            }
        elseif ($vartype=="object")
            {
                return $this->findsubdirbyobject($needle);
            }
        else
            {
                return -1;
            }
    }
}

?>

Daran habe ich noch gar nicht gedacht, direkt in der Klasse etwas zu erweitern.
 
Zurück