nochmal Gallery-Script

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • nochmal Gallery-Script

    Hallo nochmal,

    ich hab mein Gallery-Script von neulich nochmal überarbeitet und es funzt jetzt -größtenteils.

    Zur Erinnerung: ich wollte auf der Galerie-Indexseite sechs Zufalls-Thumbnails anzeigen. Die Unterordner wo die zufällig auszuwählenden Thumbnails liegen sind durchlaufend numeriert, ebenso wie die jeweiligen Bilder. Thumbnails und Großbilder liegen immer im gleichen Ordner, wobei die Thumbnails gekennzeichnet sind durch Namen wie "20t.jpg" und die Großbilder mit sowas wie "20.jpg".

    Das Script wählt in seiner jetzigen Form immer sechs verschiedene Thumbnails zufällig aus, wie gewünscht. Im praktischen Einsatz zeigt sich dabei aber, dass sehr oft die sechs Bilder nur als zwei oder drei verschiedenen Ordnern stammen, ideal wäre wenn jeder existierende Ordner nur einmal "angesteuert" wird. Das habe ich auch versucht in dem folgen Script zu berücksichtigen, aber irgendwie klappt dieses eine Detail trotzdem nicht. Hier erstmal der kommentierte Code:

    PHP-Code:

    //Arrays bilden für die Zufallsbilder und Vergleiche
    //zwischen ausgewählten Directories und Bildern um
    //Doppelungen zu vermeiden
    $bilder=array();
    $directories=array();
    $bilder2=array();


    //Schleife initialisieren die sechs Zufallsbilder auswählt
    $count=0;
                                        
    for (
    $i=1$i<=6$i++)
    {

    //Zufälliges Auswählen eines Dateiordners; 
    //$dirs als Gesamtzahl der existierenden Ordner 
    //ist bereits bekannt durch ne MySQL-Query

    mt_srand((double)microtime()*1000000);
    $zahlmt_rand(1$dirs);

    //Vergleichen ob der Ordner schon in einem 
    //vorherigen Schleifen-Durchlauf benutzt wurde;
    //wenn nicht, einstellen der zufallszahl in ein Array
    //Dies ist der Punkt im Script, der 
    //offenbar nicht funzt!!!
                            
    if(in_array($zahl$directories) ==false)
    {
    array_push($directories$zahl);

    //Zählen der Thumbnails in dem zufällig 
    //ausgewählten Ordner
    $verz=opendir ("$zahl");
    while (
    $zaehlen readdir ($verz))
    {
    if(
    $zaehlen != "." && $zaehlen != "..")
    {


    //Thumbnails des Ordners werden mit ihrem Pfad in das Array 
    //"$bilder" gepusht

    if (strstr($zaehlen"t.jpg") == true)
    {
    $pfad"$zahl/$zaehlen";
    array_push($bilder$pfad);
    }
    }
    }
    // Zufälliges Auswählen eines Thumbnail-
    //Pfades aus dem Array "$bilder"

    $count=count($bilder);
    mt_srand((double)microtime()*1000000);
    $zahlimgmt_rand(0$count);
    $thumb=$bilder[$zahlimg];
    $grossbild=str_replace("t.jpg"".jpg"$thumb);
                                        
    $imga=strstr($grossbild"/");
    $imgb=str_replace(".jpg"""$imga);
    $img=str_replace("/"""$imgb);
    $id=substr($thumb0strpos($thumb"/"));

    //Vergleich ob das zufällig ausgewählte Thumbnail schon einmal 
    //ausgewählt wurde; wenn nicht, Ablegen im Array "$bilder""
                                
    if (in_array($thumb$bilder2) == false 
    && empty($thumb)==false &&file_exists("$grossbild") )
    {
    array_push($bilder2$thumb);

    //Ausgabe des ausgewählten Thumbnails falls noch nicht benutzt
                                
    echo"<tr><td bgcolor=\"#f0f8ff\" align=\"center\"
     valign=\"middle\"><a hef=\"einzelbild.php?id=
    $id&img=$img\">
    <img src=\"
    $thumb\" alt=\"Bild $img aus Galerie $id\"></a></td></tr>";

    closedir("$zahl");
    }    

    //Wurde das Bild schon einmal verwendet, muss die Schleife ein
    //zusätzliches Mal durchlaufen werden:

    else
    {
    $i--;
    closedir($zahl);
    }
    }
    else

    //Diese Else-Bedingung soll sein für den Fall dass auch der
    //Dateiordner (s.o.) schon einmal benutzt wurde. Falls ja,
    //dann soll die Schleife nocheinmal durchlaufen werden
    {
    $i--;
    }

    Mir ist klar dass dies ein ziemliches Code-Monster ist und dass man vielleicht einiges optimieren könnte was redundant ist (bin halt Newbie, sorry!), aber hat nach Durchsicht dieses codes jemand ne Idee warum das zufällige Auswählen eines Ordners, der jedesmal ein anderer sein soll, nicht klappt?

    vielen Dank, der Parse_error
    Zuletzt geändert von Parse_error; 25.02.2005, 16:00.

  • #2
    ich lese den code jetzt bewusst nicht.

    aber es sollte doch möglich sein, den bereits ausgewählten ordner in einem array zu speichern, wenn der nächste ordner gewählt wird, prüfst du halt, dass der noch nicht im array gespeichert ist. das ist alles.

    Kommentar

    Lädt...
    X