kostenloser Webspace werbefrei: lima-city


Kleine Anpassung an Album Script PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    Hallo !

    Ich habe folgendes Script zum Auslesen aller Bilder in einem Verzeichnis.

    <?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);
    
    echo "
    <table border='1'>
     <tr>
      <th>Bild</th> <th>Name</th> <th>Datum</th> <th>Pixel</th>
     </tr>
    ";
    
    foreach ($bilderliste as $zaehler => $element) {
     echo "<tr>";
     echo "<th><img src=\"" . $bilderliste[$zaehler][1] . "\" width=\"300\" alt=\"\"></th>";
     echo "<td>" . str_replace($verzeichnis, "", $bilderliste[$zaehler][1]) . "</td>";
     echo "<td>" . date("d.m.Y H:i", $bilderliste[$zaehler][0]) . "</td>";
     echo "<td>" . $bilderliste[$zaehler][2] . " x ". $bilderliste[$zaehler][3] . "</td>";
     echo "</tr>";
    }
    echo "</table>";
    ?>


    Jetzt will ich noch einbauen, dass nur die 20 neuesten Bilder angezeigt werden. Wie kann ich das machen?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Hallo,
    ich hab mir mal die Zeit genommen und das ein bisschen umgeschreiben.

    <?php
    // pfad in dem nach bildern gesucht werden soll
    $path = getcwd();
    
    $picture_list = get_newest_images($path, "{*.gif,*.png,*.jpg,*.JPG}", 20);
    
    echo "
    <table border='1'>
     <tr>
      <th>Bild</th><th>Name</th><th>Datum</th><th>Pixel</th>
     </tr>
    ";
    
    foreach($picture_list as $picture)
    {
    	echo "<tr>";
    	echo "<th><img src=\"" . $path . $picture['filename'] . "\" width=\"300\" alt=\"" . $picture['filename'] . "\"></th>";
    	echo "<td>" . $picture['filename'] . "</td>";
    	echo "<td>" . date("d.m.Y H:i", $picture['filemtime']) . "</td>";
    	echo "<td>" . $picture['image_size_width'] . " x ". $picture['image_size_height'] . "</td>";
    	echo "</tr>";
    }
    
    echo "</table>";
    
    
    function get_newest_images($path, $file_types, $limit)
    {
    	$picture_list = array();
    	$filemtimes = array();
    	
    	chdir($path);
    
    	foreach(glob($file_types, GLOB_BRACE) as $filename)
    	{
    		$image_info = getimagesize($filename);
    		$filemtime = filemtime($filename);
    		$filemtimes[] = $filemtime;
    		$picture_list[] = array("filename" => $filename, "filemtime" => $filemtime, "image_size_width" => $image_info[0] , "image_size_height" => $image_info[1]);
    	}
    	
    	array_multisort($filemtimes, SORT_DESC, $picture_list);
    	
    	return array_slice($picture_list, 0, $limit);
    }
    ?>


    Das ist ungetestet, ich garantiere für nix. :D

    Alle unbekannten Funktionen bitte im Manual nachschlagen.

    //Edit1, 2: Fehler ausgebessert ...

    Beitrag zuletzt geändert: 15.11.2011 13:09:27 von philippkern
  4. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    philippkern schrieb:
    Hallo,
    ich hab mir mal die Zeit genommen und das ein bisschen umgeschreiben.

    <?php
    // pfad in dem nach bildern gesucht werden soll
    $path = getcwd();
    
    $picture_list = get_newest_images($path, "{*.gif,*.png,*.jpg,*.JPG}", 20);
    
    echo "
    <table border='1'>
     <tr>
      <th>Bild</th><th>Name</th><th>Datum</th><th>Pixel</th>
     </tr>
    ";
    
    foreach($picture_list as $picture)
    {
    	echo "<tr>";
    	echo "<th><img src=\"" . $path . $picture['filename'] . "\" width=\"300\" alt=\"" . $picture['filename'] . "\"></th>";
    	echo "<td>" . $picture['filename'] . "</td>";
    	echo "<td>" . date("d.m.Y H:i", $picture['filemtime']) . "</td>";
    	echo "<td>" . $picture['image_size_width'] . " x ". $picture['image_size_height'] . "</td>";
    	echo "</tr>";
    }
    
    echo "</table>";
    
    
    function get_newest_images($path, $file_types, $limit)
    {
    	$picture_list = array();
    	$filemtimes = array();
    	
    	chdir($path);
    
    	foreach(glob($file_types, GLOB_BRACE) as $filename)
    	{
    		$image_info = getimagesize($filename);
    		$filemtime = filemtime($filename);
    		$filemtimes[] = $filemtime;
    		$picture_list[] = array("filename" => $filename, "filemtime" => $filemtime, "image_size_width" => $image_info[0] , "image_size_height" => $image_info[1]);
    	}
    	
    	array_multisort($filemtimes, $picture_list);
    	
    	return array_slice($picture_list, 0, $limit);
    }
    ?>


    Das ist ungetestet, ich garantiere für nix. :D

    Alle unbekannten Funktionen bitte im Manual nachschlagen.

    //Edit1: Fehler ausgebessert ...


    Hallo !

    Danke, das geht jetzt, dass nur 20 Bilder angezeigt werden. Allerdings werden nicht die 20 neuesten angezeigt.
    Die neuesten Bilder sollen immer oben sein.

    Beitrag zuletzt geändert: 15.11.2011 12:25:15 von davy
  5. Also es wird zur Errechnung der "neuesten" Bilder filemtime verwendet.
    Das gibt das Datum der letzten Dateiänderung zurück, und nicht wann es erstellt wurde.

    Ein Erstelldatum kann man glaub ich nicht bekommen.
  6. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    philippkern schrieb:
    Also es wird zur Errechnung der "neuesten" Bilder filemtime verwendet.
    Das gibt das Datum der letzten Dateiänderung zurück, und nicht wann es erstellt wurde.

    Ein Erstelldatum kann man glaub ich nicht bekommen.


    Bei meinem Script im 1. Post ging das so, dass die neusten Bilder oben waren.

    Das Script ist für eine Webcam, die in einen Ordner auf meinem Server alle 10 Sekunden ein Bild speichert.
    Und das neueste Bild soll immer oben sein. Das Änderungsdatum ist somit auch das Erstelldatum.
  7. Ok dann ist ja gut.

    In meinem Script ist ein Fehler.

    array_multisort($filemtimes, $picture_list);
    #mit
    array_multisort($filemtimes, SORT_DESC, $picture_list);
    #austauschen


    Edit:
    Script schein dann zu funktionieren:
    http://philippkern.lima-city.de/bilder/glob_test.phps
    http://philippkern.lima-city.de/bilder/glob_test.php

    Bitte beachte auch das ich ein chdir eingebaut habe. Dadurch könnte es eventuell für spätere Pfade probleme geben.

    Beitrag zuletzt geändert: 15.11.2011 13:20:04 von philippkern
  8. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    philippkern schrieb:
    Ok dann ist ja gut.

    In meinem Script ist ein Fehler.

    array_multisort($filemtimes, $picture_list);
    #mit
    array_multisort($filemtimes, SORT_DESC, $picture_list);
    #austauschen



    Vielen Dank !

    Jetzt klappt alles!
  9. 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!