Ordner auslesen und sortiert ausgeben

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

  • Ordner auslesen und sortiert ausgeben

    Hallo!

    Gleich vorweg habe google und Boartdsuche benutzt, leider ohne erfolg.

    Ich habe folgende Ausgangspostion:
    in dem ordner fotos sind ordner mit jahreszahlen z.b. 2005 2006
    ind diesen Ordnern sind jeweils Ordner mit den Namen Januar Februar März usw. In diesen Ordnern sind wiederum Fotos aus dem jeweiligen Monat

    Folgendes soll funktionieren:
    Wenn die Seite aufgeht sollen die Ordner mit den Jahren ausgelesen und als Link angezeigt werden.
    Klicke ich auf z.b. 2005 soll wie ein menue aufklappen und die darin sich befindlichen monatsordner sollen als link und sortiert nach monat(mit bilderanzahl z.b. Januar(8)) angezeigt werden.
    Klicke ich auf einen Monat sollen die Bilder zu sehen sein, immer einzeln.

    Zum anzeigen der Bilder habe ich folgendes Script
    PHP-Code:
    <?php
    global $ordner$verz;
    $pfad "fotos/".$verz."";    // Pfad
    echo $pfad;

    $filehandle opendir($pfad);    // Dateien auslesen Anfang

    $x 1;

    while (
    $file readdir($filehandle)) {

        if (
    $file != "." && $file != "..") {

          if(
    preg_match("/.(jpg|gif|png)$/i"$file)){
            
    // Ausgelesene Bilder in ein Array laden
            
    $bild[$x] = $file;
            
    $x++;
          }
       }
    }


    // Wieviele Bilder befinden sich im Verzeichnis
    $anzbilder count($bild);

    // Hier wird geprüft, ob eine ID übergeben wurde
    if(!isset($_GET['b'])) $_GET['b'] = 1;  else echo "no";


    // Bildnummer wird hier ausgegeben
    $bildausgabe '<p class="text">Bild '.$_GET['b'].' / '.$anzbilder.' &nbsp;</p>

    <p><img src="'
    .$pfad.$bild[$_GET['b']].'" width="350px" title="Bild '.$_GET['b'].' /
     '
    .$anzbilder.'" alt="Bild '.$_GET['b'].' / '.$anzbilder.'"></p>';

    // Der Zurück- und Weiter-Button
    $linkausgabe1 '<p>';
    if ((
    $anzbilder $anzbilder) +!= $_GET['b'])
    $linkausgabe2 '<a href="'.$_SERVER['PHP_SELF'].'?b='.($_GET['b']-1).'">Zurück</a>&nbsp;&nbsp;';

    if(
    $anzbilder != $_GET['b'])

    $linkausgabe3 '<a href="'.$_SERVER['PHP_SELF'].'?b='.($_GET['b']+1).'">Weiter</a></p>';

    closedir($filehandle);    // Dateien auslesen Ende

    ?>
    Ich hoffe das mir jemand helfen kann.
    Zuletzt geändert von upc-online.de; 03.10.2006, 19:36.

  • #2
    Hallo,

    bitte unsere Regeln beachten. (Siehe der Link ganz unten in meiner Signatur)

    Wo liegt genau dein Problem?
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      öh, gut, ich weiß, was du willst, aber sag doch mal, was jetzt gerade passiert, wenn du dein script laufen lässt?
      **********
      arkos
      **********

      Kommentar


      • #4
        Sorry für das Fehlposting,

        Ich weis nicht wie ich am besten die Baumstruktur aufbaue.

        Mit dem Script was ich hier gepostet habe ist alles in Ordnung war nur mit zur veranschaulichung wie ich die Bilder anzeigen lasse.

        Kommentar


        • #5
          Ich poste mal wie ich angefangen habe, das Script funktioniert aber wie ich dann eine Sortierung nach Monat hin bekomme ist mir noch völlig schleierhaft.

          PHP-Code:
          <?
          $interno = opendir('fotos/');
              while ($file = readdir ($interno))
                  {
                    if ($file != "." && $file != "..")
                               {
                        echo '<p><a href="test.php?send=on&klickfile='.$file.'">'.$file.'</a></p>';
                                   if($send=="on" && $file == $klickfile)
                                           {
                                           $interno2 = opendir('fotos/'.$klickfile.'/');
                                           while ($file2 = readdir ($interno2))
                                                   {
                                                   if ($file2 != "." && $file2 != "..")
                                                   echo '<p><a href="test.php?send=on&klickfile2='.$file2.'">'.$file2.'</a></p>';
                                                   }
                                           }}

                       }
          ?>
          Zuletzt geändert von upc-online.de; 02.10.2006, 13:59.

          Kommentar


          • #6
            in dem ordner fotos sind ordner mit jahreszahlen z.b. 2005 2006

            das scheint mir also nur dein problem zu sein? du willst die chronologisch nicht alphabetisch sortiert haben? also nach januar, februar, etc?

            dann benenne die ordner so, dass php sie mit zb. der date-funktion sortieren, bzw nacheinander einlesen kann - oder bau ein array in dein mainscipt $sort = array ("Januar 2005", "Februar 2005" etc...);

            würde für erstes plädieren, da du den aufwand der arraypflege dann nicht hast.
            **********
            arkos
            **********

            Kommentar


            • #7
              Könntest Du mir bitte noch mal ein Denkanstoß geben wie ich das machen soll?

              So gehts ni:
              PHP-Code:
              <?
              function datumsvergleich( $a, $b )
                  {
                   if ( $a[datum] == $b[datum] )
                       return 0;
                   if ( $a[datum] < $b[datum] )
                       return 1;
                   return -1;
                   }


              $interno = opendir('fotos/');
                  while ($file = readdir ($interno))
                      {
                        if ($file != "." && $file != "..")
                                   {
                            echo '<p><a href="test.php?send=on&klickfile='.$file.'">'.$file.'</a></p>';
                                       if($send=="on" && $file == $klickfile)
                                               {
                                               $sort = array ("Januar", "Februar", "März", "April", "Mai");
                                               $interno2 = opendir('fotos/'.$klickfile.'/');
                                               while ($file2 = readdir ($interno2))
                                                       {
                                                       $file2 = sort($file2, $sort);
                                                       if ($file2 != "." && $file2 != "..")
                                                       echo '<p>&nbsp;<img src="images/menuefaden.gif">&nbsp;
              <a href="test.php?send=on&klickfile2='.$file2.'">'.$file2.'</a></p>';
                                                       }
                                               }}

                           }
              ?>
              Zuletzt geändert von upc-online.de; 03.10.2006, 19:35.

              Kommentar


              • #8
                Original geschrieben von upc-online.de
                Ich poste mal ....
                aber wie ich dann eine Sortierung nach Monat hin bekomme ist mir noch völlig schleierhaft.
                dafür packtman die alle Dateinamen erst in ein Array, dann sortieren es nach gewünschte kriterium und danach laufst du dein array durch und triffst andere entscheidungen.
                was würdest du z.b.s zum
                glob sagen?
                http://de2.php.net/manual/de/function.glob.php
                oder
                usort mit
                PHP-Code:
                function monatsort($a,$b){
                $mon=array('januar','februar',.....u.s.w);
                $a_a=array_keys($mon$a);
                $b_a=array_keys($mon$b);
                if(isset(
                $a_a[0] ,$b_a[0])
                 return (
                $a_a[0] < $b_a[0]) ? -1;
                 echo 
                "selbst schuld";

                Slava
                bituniverse.com

                Kommentar


                • #9
                  Bin ich so blöd ich bekomme es einfach nicht hin.

                  PHP-Code:
                  <?
                  function monatsort($a,$b)
                      {
                      $mon=array('Januar','Februar', 'März', 'April', 
                  'Mai', 'Juni', 'Juli', 'August', 'September');
                      $a_a=array_keys($mon, $a);
                      $b_a=array_keys($mon, $b);
                      if(isset($a_a[0], $b_a[0]))
                               {
                               return ($a_a[0] < $b_a[0]) ? -1 : 1;
                                   }
                                   else
                                   {
                           echo "selbst schuld";
                                   }
                      }

                  $interno = opendir('fotos/');
                      while ($file = readdir ($interno))
                          {
                            if ($file != "." && $file != "..")
                                       {
                                echo '<p><a href="test.php?send=on&klickfile='.$file.'">'.$file.'</a></p>';
                                           if($send=="on" && $file == $klickfile)
                                                   {
                                                   $interno2 = opendir('fotos/'.$klickfile.'/');
                                                   while ($file2 = readdir ($interno2))
                                                           {
                                                           $file2 = usort($file2, "monatsort");
                                                           if ($file2 != "." && $file2 != "..")
                                                           echo '<p>&nbsp;<img src="images/menuefaden.gif">&nbsp;
                  <a href="test.php?send=on&klickfile='.$file.'&klickfile2='.$file2.'">'.$file2.'</a></p>';
                                                           }
                                                   }
                                           }

                               }
                  ?>
                  Warum geht das nicht? Habe es mit verschiedenen sortanweisungen versucht und auch mal hin und her verschoben. Bekomme immer folgende Meldung

                  Warning: usort() [function.usort]: The argument should be an array in D:\Server\www\tobias\test.php on line 28
                  Zuletzt geändert von upc-online.de; 03.10.2006, 19:35.

                  Kommentar


                  • #10
                    steht doch da - usort() erwartet ein array. du übergibst ihm aber _einen_ dateinamen zum sortieren. nicht sinnvoll.

                    sinnvoller ist es, die ordnernamen in ein array einzulesen (mit glob() ein kinderspiel) und dieses dann zu "monatsort()'ieren".

                    Kommentar

                    Lädt...
                    X