1 bild aus jeden unterordner auslesen + anzeigen

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

  • 1 bild aus jeden unterordner auslesen + anzeigen

    Hi

    Mein script sollte aus jedem unterordner 1 Bild in einer 4-spaltigen-tabelle darstellen. Für die grafik an für sich wird ein anderer script (index.php) aufgerufen - da ist alles in ordnung. Das problem ist dass seit ich den code umgeschrieben habe und jetzt, nachdem eine desc-sortierung erfolgt und antstatt einer while-, eine foreach-schleife kommt, wird nur noch 1 Bild angezeigt. Bevor ich die unterordner sortieren wollte brauchte ich noch keine arrays... da funktionnierte es noch. falls das etwas bringt poste ich den alten code.

    Ausserdem um sich besser vorstellen zu können, was ich erreichen will, schaut euch diese folgende seite an. Jedes bild kommt aus einem anderen ordner - die reihenfolge der bilder bzw. ordner stimmt aber nicht - genau das möchte ich ändern.
    hier gehts lang zum vorgängerscript


    Da es erst mein dritter script ist - ist die codierung entsprechend - das meiste hätte man eleganter schreiben können, dafür fehlt es mir aber an erfahrung... (zum stichwort objektorientiert = diesen habe ich vor lauter fingerbrecher-sonderzeichen völlig vergessen)

    Vielen Dank



    PHP-Code:
    // funktion zum unterordner nach datum sortieren (desc)
    function sortdesc($a,$b){
        return (
    $a['mtime']==$b['mtime'] ? 0
        
    : ($a['mtime']<$b['mtime'] ? +1:-1)
        );
    }
    // hier gehts los
    function preview($path$breite) {
        
    // ordner auslesen -> in array
        
    if ($dir opendir($path)) {
            while (
    false !== ($sdir readdir($dir))){
                if (
    is_dir($path."/".$sdir)) {
                    if (
    $sdir != "." && $sdir != ".."){
                        
    $folder[] = array('foldername'=>$sdir'mtime'=>filemtime("$path/$sdir"));
                    }
                }
            }
            
    // desc sortiere
            
    usort ($folder'sortdesc');
            
    reset ($folder);
            
    // ein paar variablen für später definieren
            
            
    $spalte=1;
            
    $gesamtspalten=4;
            
    // starte eine tabelle
            
    echo "
    <table cellpadding='0' cellspacing='0' border='0' align='center'>\n"
    ;
            
    // schlaufe: für jeden ordner durchlaufen
            
    foreach ($folder as $sdir) {
    $i=0;        
    //an dieser stelle können alle unter ordner mit echo
                           //aufgelistet werden - alles in ordnung.
            // echo "$sdir[foldername]<br>";
                // html zeile starten 
                  
    if($spalte==1) {echo "<tr>\n";} 
                
    // bilder auslesen
                
    $blabla opendir($sdir[foldername]);
                
    // so lang es was zum lesen gibt...
                
    while ($pic readdir($blabla)) {
                
    // ...und dateiformat ist gif oder jpg
                
    $test=@getimagesize($sdir[foldername]."/".$pic);
                    if(
    $test[2]==OR $test[2]==2){
                        
    // ? das brauchts nicht mehr, aber //stört vorerst auch nicht
                        
    if (is_file($sdir[foldername]."/".$pic)) {
                            
    // ? brauchts wahrscheinlich //auch nicht mehr...
                            
    if ($pic != "." && $pic != ".."){
                                
    // nur 1 Bild auslesen 
    //(? while $pic = readdir($blabla = schlaufe entfernen?)
                                
    while ($i<1){
                                    
    // html spalten + function für vorschaubilder (index.php)
                                    
    $id=basename($pic".jpg");
                                    
    $title strtoupper($sdir[foldername]);
                                    echo 
    "<td valign='top'>\n
    <table cellpadding='0' cellspacing='0' border='0' align='center' class='table'>\n<tr>\n"
    ;
                                    echo 
    "
    <td background='gallery.php?breit=
    $breite&bild=$sdir[foldername]/$pic'
     align='center' valign='center' class='center'>"
    ;
                                    echo 
    "
    <a href='index.php?loc=
    $sdir[foldername]&id=$pic
    onMouseOver=\"MM_swapImage('
    $id','','../navigation/overlay_A01r.gif',1)\"
     onMouseOut=\"MM_swapImgRestore()\">
    <img src='../navigation/overlay_A01.gif' name='
    $id' width='115'
     height='115' border='0' id='
    $id'></a>";
                                    echo 
    "</td>\n";
                                    echo 
    "
    </tr>\n
    <tr>\n
    <td align='center'>
    $title<br><br></td>\n
    </tr>\n</table>\n"
    ;
                                    echo 
    "</td>\n";
                                    
    $i++;
                                }
                            }
                        }
                    }
                }
            }
                
    // falls bei der 4. spalte angelangt </tr> schliessen
                
    if($spalte<$gesamtspalten){$spalte++;}
                else{
    $spalte=1; echo "</tr>\n";}
            
    // keine weiteren ordner - tabelle abschliessen
            
    echo "</table>";
         }
        
    closedir($dir);
    }
    if(!
    $br) {$breite=600;} else {$breite=$br;}
    if(!
    $sp) {$gesamtspalten=4;} else {$gesamtspalten=$sp;}
    $loc="kaserne_2004";
    $bildbreite=$breite/$gesamtspalten;
    preview('../photos'$bildbreite); 
    ---------
    hab den eintrag geändert - da hat sich beim copy/paste ein fehler eingeschlichen...

    (wenn man sich den resultierenden html anschaut, sieht man an der anzahl <tr> dass die foreach-schlaufe soviele male wie es ordner gibt durchgelaufen wird... aber nur den ersten array ausgegeben wird.)

    Zuletzt geändert von sauron343; 09.02.2004, 15:07.

  • #2
    brichst du mal deinen beitrag um? danke.

    kann es sein, daß du zum sortieren eines multi-dimensionalen arrays nicht einfach usort nehmen kannst ... ?
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Original geschrieben von derHund
      brichst du mal deinen beitrag um? danke.
      ??? Wie bitte? Sorry - Verb "umbrechen" verstehe ich nicht - weisch, in schwizerdütsch isch dr wortschatz nid eso gross - usserdäm bini nid emol schwizer... das erklärt jo au wieso ich ämigs problem zum öppis beschriibe han! Meinst Du der Beitrag ist zu lang? äh sorry ich weiss nicht was du meinst



      kann es sein, daß du zum sortieren eines multi-dimensionalen arrays nicht einfach usort nehmen kannst ... ?
      Da bin ich ebenfalls überfragt - aber ich glaube nicht dass es daran liegt, denn gleich nach der foreach schlaufe, kann ich mir mit echo die sortierte liste der ordner anzeigen lassen...
      ich hab die sortier-funktion übrigens aus einem funktionnierenden Beispiel in diesem forum übernommen.

      Kommentar


      • #4
        Fehler gefunden, und behoben.
        Manchmals hilfts wenn man zuerst ne runde schläft...
        Man sieht danach wieder viel klarer.
        Grüsse

        Kommentar

        Lädt...
        X