kostenloser Webspace werbefrei: lima-city


Bilder nach Dateinamen sortieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    php-oop

    php-oop hat kostenlosen Webspace.

    Hallo,

    hier habe ich ein Script, womit ich Bilder im gleichen Ordner, wo das Script liegt, ausgeben kann:

    <?php
    
    $bilderliste = array();
    $verzeichnis = "./";
    $handle = openDir($verzeichnis);
    while ($datei = readDir($handle)) {
     $verzeichnis_datei = $verzeichnis . $datei;
     if ($datei != "." && $datei != ".." && !is_dir($datei)) {
      if (strstr($datei, ".gif") || strstr($datei, ".png") || strstr($datei, ".jpg") || strstr($datei, ".JPG")) {
       $info = getimagesize($verzeichnis_datei);
       array_push($bilderliste, array(filemtime($verzeichnis_datei) , $verzeichnis_datei , $info[0] , $info[1]));
      }
     }
    }
    closeDir($handle);
    
    rsort($bilderliste);
    
    foreach ($bilderliste as $zaehler => $element) {
    
    $filepath = $bilderliste[$zaehler][1];
    
    echo '<tr><td><img src="' . $bilderliste[$zaehler][1] . '" width="150" alt=""></td>';
        $counter++;
        if (($counter % 3) == 0)
         {
         echo "</tr><tr>";
         }
        }
        echo "</table></td>
                  </tr>";
    
    ?>


    Zurzeit werden die Bilder nach dem Änderungsdatum sortiert, d.h. die Bilder, die ich zuletzt hoichgeladen habe, sind auch am Anfang der Seite. Ich will die Bilder aber nach Ihrem Dateinamen sortieren, in meinem Fall Nummern von 1 - 36. Wie passe ich das Script dementsprechend um?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    php-oop schrieb:
    Wie passe ich das Script dementsprechend um?
    "umpassen"? das sollte "anpassen" heißen (oder "umändern") ;-)

    Zum Script: da ist relativ viel umständliches Zeug drin, ich hab mir die Mühe gemacht dein Script etwas zu verbessern und vereinfachen...
    <?php
    // Ordner $dir einlesen
    $images = array();
    $dir = './'; // Pfad zu den Bildern
    $handle = opendir($dir);
    
    while(($file = readdir($handle)) !== false) {
    	if(!is_dir($dir . $file) && preg_match('/\.(jpe?g|gif|png)$/i', $file)) {
    		$path = $dir . $file;
    		$images[$file] = array(
    			'mtime' => filemtime($path),
    			'path' => $path,
    			'size' => getimagesize($path)
    		);
    	}
    }
    closedir($handle);
    
    ksort($images); // nach Schlüsseln sortieren
    
    // Tabelle ausgeben; 3 Spalten
    echo("<table>\n");
    $counter = 0;
    foreach($images as $name => $info) {
    	if(!($counter % 3))
    		echo('<tr>');
    	echo("<td><img src=\"{$info['path']}\" width=\"150\" alt=\"{$name}\"></td>");
    	$counter++;
    	if(!($counter %3))
    		echo("</tr>\n");
    	$counter %= 3;
    }
    echo('</table>');
    ?>
    Schau obs dir so gefällt...
    Das Array $images hat einen neuen Aufbau... der sollte das ganze etwas sinnvoller und leichter verständlich machen ;-)

    Beitrag zuletzt geändert: 16.5.2012 19:57:01 von hackyourlife
  4. Autor dieses Themas

    php-oop

    php-oop hat kostenlosen Webspace.

    hackyourlife schrieb:
    php-oop schrieb:
    Wie passe ich das Script dementsprechend um?
    "umpassen"? das sollte "anpassen" heißen (oder "umändern") ;-)

    Zum Script: da ist relativ viel umständliches Zeug drin, ich hab mir die Mühe gemacht dein Script etwas zu verbessern und vereinfachen...
    <?php
    // Ordner $dir einlesen
    $images = array();
    $dir = './'; // Pfad zu den Bildern
    $handle = opendir($dir);
    
    while(($file = readdir($handle)) !== false) {
    	if(!is_dir($dir . $file) && preg_match('/\.(jpe?g|gif|png)$/i', $file)) {
    		$path = $dir . $file;
    		$images[$file] = array(
    			'mtime' => filemtime($path),
    			'path' => $path,
    			'size' => getimagesize($path)
    		);
    	}
    }
    closedir($handle);
    
    ksort($images); // nach Schlüsseln sortieren
    
    // Tabelle ausgeben; 3 Spalten
    echo("<table>\n");
    $counter = 0;
    foreach($images as $name => $info) {
    	if(!($counter % 3))
    		echo('<tr>');
    	echo("<td><img src=\"{$info['path']}\" width=\"150\" alt=\"{$name}\"></td>");
    	$counter++;
    	if(!($counter %3))
    		echo("</tr>\n");
    	$counter %= 3;
    }
    echo('</table>');
    ?>
    Schau obs dir so gefällt...
    Das Array $images hat einen neuen Aufbau... der sollte das ganze etwas sinnvoller und leichter verständlich machen ;-)


    Danke dir! Das klappt perfekt ;)

    Geht es auch, dass, wie vorher, 6 Bilder in einer Reihe angezeigt werden? Statt 3.
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    php-oop schrieb:
    Geht es auch, dass, wie vorher, 6 Bilder in einer Reihe angezeigt werden? Statt 3.
    Irgendwie steht in deinem Code nur was von
    $count % 3
    und ansonsten wird einfach ungültiger HTML-Code erstellt (pro Bild
    <tr>
    und alle 3 Bilder ein
    </tr>
    )... dass das 6 sein sollen war irgendwie nicht erkennbar...
    Bei mir hat das einfach alle Bilder untereinander dargestellt.

    Der ausgebesserte Code:
    <?php
    // Ordner $dir einlesen
    $images = array();
    $dir = './'; // Pfad zu den Bildern
    $handle = opendir($dir);
    
    while(($file = readdir($handle)) !== false) {
    	if(!is_dir($dir . $file) && preg_match('/\.(jpe?g|gif|png)$/i', $file)) {
    		$path = $dir . $file;
    		$images[$file] = array(
    			'mtime' => filemtime($path),
    			'path' => $path,
    			'size' => getimagesize($path)
    		);
    	}
    }
    closedir($handle);
    
    ksort($images); // nach Schlüsseln sortieren
    
    // Tabelle ausgeben; $cols Spalten
    echo("<table>\n");
    $counter = 0;
    $cols = 6; // 6 Spalten
    foreach($images as $name => $info) {
    	if(!($counter % $cols))
    		echo('<tr>');
    	echo("<td><img src=\"{$info['path']}\" width=\"150\" alt=\"{$name}\"></td>");
    	$counter++;
    	if(!($counter % $cols))
    		echo("</tr>\n");
    	$counter %= $cols;
    }
    if($counter % $cols)
    	echo('</tr>');
    echo('</table>');
    ?>
  6. Autor dieses Themas

    php-oop

    php-oop hat kostenlosen Webspace.

    hackyourlife schrieb:
    php-oop schrieb:
    Geht es auch, dass, wie vorher, 6 Bilder in einer Reihe angezeigt werden? Statt 3.
    Irgendwie steht in deinem Code nur was von
    $count % 3
    und ansonsten wird einfach ungültiger HTML-Code erstellt (pro Bild
    <tr>
    und alle 3 Bilder ein
    </tr>
    )... dass das 6 sein sollen war irgendwie nicht erkennbar...
    Bei mir hat das einfach alle Bilder untereinander dargestellt.

    Der ausgebesserte Code:
    <?php
    // Ordner $dir einlesen
    $images = array();
    $dir = './'; // Pfad zu den Bildern
    $handle = opendir($dir);
    
    while(($file = readdir($handle)) !== false) {
    	if(!is_dir($dir . $file) && preg_match('/\.(jpe?g|gif|png)$/i', $file)) {
    		$path = $dir . $file;
    		$images[$file] = array(
    			'mtime' => filemtime($path),
    			'path' => $path,
    			'size' => getimagesize($path)
    		);
    	}
    }
    closedir($handle);
    
    ksort($images); // nach Schlüsseln sortieren
    
    // Tabelle ausgeben; $cols Spalten
    echo("<table>\n");
    $counter = 0;
    $cols = 6; // 6 Spalten
    foreach($images as $name => $info) {
    	if(!($counter % $cols))
    		echo('<tr>');
    	echo("<td><img src=\"{$info['path']}\" width=\"150\" alt=\"{$name}\"></td>");
    	$counter++;
    	if(!($counter % $cols))
    		echo("</tr>\n");
    	$counter %= $cols;
    }
    if($counter % $cols)
    	echo('</tr>');
    echo('</table>');
    ?>


    Danke, jetzt gehts!
    Vielen lieben Dank für deine Hilfe! :thumb:
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!