tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
375
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Reseter Reseter ist offline Rookie
    Registriert seit
    Sep 2009
    Beiträge
    5
    Hallo,

    folgendes möchte ich auf meiner Homepage realisieren.

    Ich habe vor meinem Meerwasseraquarium eine Webcam stehen. Alle 5 Minuten wird ein Bild per ftp auf meinen Webspace gespeichert.

    Die Struktur der Bilder sieht so aus.

    Es wird automatisch jeden Tag ein Ordner mit dem Format JJJJMMTT (20090912) erstelt. Darunter sind die Bilder mit dem Format HHMMSS.x.jpg (105222.3.jpg) abgelegt.

    Nun möchte ich immer das aktuellste Bild auf meiner Hompage zeigen.

    Für eure Hilfe möchte ich mich jetzt schon bedanken.

    Gruß Reseter
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Hallo,

    zunächst müsstest du mittels der dir-Klasse die Verzeichnisse in ein Array einlesen:

    PHP-Code:
    $ordner = array();
    $d dir("/pfad/wo/die/Ordner/mit/dem/Namen/Datum/liegen");
    while(
    $e $d->read())
    {
        if(
    is_dir($e) && $e != '.' && $e != '..')
        {
             
    $ordner[] = $e;
        }
    }
    $d->close(); 
    Anschließend das Array absteigend sortieren:

    PHP-Code:
    arsort($ordner); 
    Nun kannst du das erste Element aus dem Array heranziehen um die Bilder darin zu lesen, um diese wiederum in ein Array zu packen:

    PHP-Code:
    $neuester_bilder_ordner $ordner[0];
    $bilder = array();
    $d dir($neuester_bilder_ordner);
    while(
    $e $d->read())
    {
        if(
    is_file($e) && preg_match('/jpg$/'$e))
        {
             
    $bilder[] = $e;
        }

    Auch das Bilder-Array musst du umgekehrt sortieren, das Bild im Array mit dem ersten Index ist das gewünschte:

    PHP-Code:
    arsort($bilder);
    $neuestes_bild $bilder[0];
    echo 
    '<img src="/' $neuester_bilder_ordner .'/' $neuestes_bild '"/>'
    So könnte es funktionieren.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    Reseter Reseter ist offline Rookie
    Registriert seit
    Sep 2009
    Beiträge
    5
    Hallo,

    leider kommt beim lesen des neuesten Ordner folgender Fehler.

    Fatal error: Call to a member function read() on a non-object

    PHP-Code:
    $neuester_bilder_ordner $ordner[0];
    $bilder = array();
    $d dir($neuester_bilder_ordner);
    while(
    $e $d->read())                                      "Hier kommt der Fehler
    {
        if(is_file(
    $e) && preg_match('/jpg$/', $e))
        {
             
    $bilder[] = $e;
        }

    Gruß
    Reseter
    Geändert von Maik (13.09.09 um 17:18 Uhr) Grund: Quellcode in Syntax-Highlighter [ php] ... [ /php] gepackt
     

  4. #4
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Mach mal vor die Zeile

    PHP-Code:
    $neuester_bilder_ordner $ordner[0]; 
    diese Zeile und poste das Ergebnis:

    PHP-Code:
    echo "<pre>"var_dump($ordner); echo "</pre>"
    PS: Bitte PHP-Code-Tags verwenden. Danke.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  5. #5
    Reseter Reseter ist offline Rookie
    Registriert seit
    Sep 2009
    Beiträge
    5
    Hier das Ergebnis.

    array(0) {
    }


    Gruß
     

  6. #6
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Ich denke, ich hab den Fehler gefunden, den ich bereits im Script verursacht habe:

    PHP-Code:
    error_reporting(E_ALL E_STRICT);
    ini_set('display_errors'true);
    $path "/pfad/wo/die/Ordner/mit/dem/Namen/Datum/liegen";
    $ordner = array();
    $d dir($path);
    while(
    $e $d->read())
    {
        if(
    is_dir($path DIRECTORY_SEPARATOR $e) && $e != '.' && $e != '..')
        {
             
    $ordner[] = $e;
        }
    }
    $d->close();  

    arsort($ordner); 

    $neuester_bilder_ordner $ordner[0];
    $bilder = array();
    $d dir($path DIRECTORY_SEPARATOR $neuester_bilder_ordner);
    while(
    $e $d->read())
    {
        if(
    is_file($path DIRECTORY_SEPARATOR $neuester_bilder_ordner DIRECTORY_SEPARATOR $e) && preg_match('/jpg$/'$e))
        {
             
    $bilder[] = $e;
        }


    arsort($bilder);
    $neuestes_bild $bilder[0];
    echo 
    '<img src="/' $neuester_bilder_ordner .'/' $neuestes_bild '"/>'
    Schau mal, ob es damit geht.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  7. #7
    Avatar von chmee
    chmee chmee ist offline mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Zur "effizienteren" Abarbeitung könnte man auch -anstatt erstmal den Dateibaum komplett einzulesen- einfach nach dem neuesten Ordner gesucht werden, dann nach der neuesten Bilddatei. (filectime() oder filemtime())

    Noch einfacher wäre es, wenn man nicht neue Bilder erstellt, sondern den Bildnamen statisch lässt. Somit bleibt die ganze HTML-Datei statisch. Um den Cache zu überlisten, müsste man beim Reload vielleicht noch eine zufällige GET-Variable (zB Timestamp) anhängen.

    mfg chmee
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  8. #8
    Reseter Reseter ist offline Rookie
    Registriert seit
    Sep 2009
    Beiträge
    5
    Hallo,

    mit einer kleinen änderung der sortierung funktionierts.

    Geändert habe ich von

    PHP-Code:

    arsort
    ($ordner);

    arsort($bilder); 
    auf
    PHP-Code:

    rsort
    ($ordner);

    rsort($bilder); 
    Hier nocheinmal den ganzen Code
    PHP-Code:
    error_reporting(E_ALL E_STRICT);
    ini_set('display_errors'true);
    $path "cam/";
    $ordner = array();
    $d dir($path);
    while(
    $e $d->read())
    {
        if(
    is_dir($path DIRECTORY_SEPARATOR $e) && $e != '.' && $e != '..')
        {
             
    $ordner[] = $e;
        }
    }
    $d->close();  

    rsort($ordner);
    //print_r($ordner);

    $neuester_bilder_ordner $ordner[0];
    $bilder = array();
    $d dir($path DIRECTORY_SEPARATOR $neuester_bilder_ordner);
    while(
    $e $d->read())
    {
        if(
    is_file($path DIRECTORY_SEPARATOR $neuester_bilder_ordner DIRECTORY_SEPARATOR $e) && preg_match('/jpg$/'$e))
        {
             
    $bilder[] = $e;
        }


    rsort($bilder);
    //print_r($bilder);
    $neuestes_bild $bilder[0];
    echo 
    '<img src="/' $neuester_bilder_ordner .'/' $neuestes_bild '"/>'
    Danke für Deine Hilfe!

    Gruß
     

  9. #9
    Reseter Reseter ist offline Rookie
    Registriert seit
    Sep 2009
    Beiträge
    5
    Hallo,

    was noch nicht geht ist das Bild anzeigen.

    Es wird statt dem Bild ein rotes Kreuz angezeigt.

    Gruß
     

Ähnliche Themen

  1. Checkboxen dynamisch darstellen
    Von chill0r55555 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 13.02.09, 15:24
  2. Bilder im Vordergrund darstellen
    Von -André- im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 14.07.08, 16:41
  3. bilder kleiner darstellen
    Von coolerouny im Forum PHP
    Antworten: 2
    Letzter Beitrag: 21.10.05, 21:52
  4. Bilder darstellen
    Von StefanLausL im Forum HTML & XHTML
    Antworten: 1
    Letzter Beitrag: 16.09.04, 15:32
  5. Bilder darstellen
    Von disear im Forum PHP
    Antworten: 1
    Letzter Beitrag: 12.06.02, 15:56