ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
375
375
EMPFEHLEN
-
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
-
12.09.09 12:53 #2
- 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:
Anschließend das Array absteigend sortieren: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();
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:arsort($ordner);
Auch das Bilder-Array musst du umgekehrt sortieren, das Bild im Array mit dem ersten Index ist das gewünschte: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;
}
}
So könnte es funktionieren.PHP-Code:arsort($bilder);
$neuestes_bild = $bilder[0];
echo '<img src="/' . $neuester_bilder_ordner .'/' . $neuestes_bild . '"/>';
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Hallo,
leider kommt beim lesen des neuesten Ordner folgender Fehler.
Fatal error: Call to a member function read() on a non-object
Gruß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;
}
}
ReseterGeändert von Maik (13.09.09 um 17:18 Uhr) Grund: Quellcode in Syntax-Highlighter [ php] ... [ /php] gepackt
-
13.09.09 15:32 #4
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Mach mal vor die Zeile
diese Zeile und poste das Ergebnis:PHP-Code:$neuester_bilder_ordner = $ordner[0];
PS: Bitte PHP-Code-Tags verwenden. Danke.PHP-Code:echo "<pre>"; var_dump($ordner); echo "</pre>";
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Hier das Ergebnis.
array(0) {
}
Gruß
-
13.09.09 17:44 #6
- 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:
Schau mal, ob es damit geht.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 . '"/>';
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
13.09.09 18:00 #7
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 chmeeMein 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 <-
-
Hallo,
mit einer kleinen änderung der sortierung funktionierts.
Geändert habe ich von
aufPHP-Code:
arsort($ordner);
arsort($bilder);
Hier nocheinmal den ganzen CodePHP-Code:
rsort($ordner);
rsort($bilder);
Danke für Deine Hilfe!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 . '"/>';
Gruß
-
Hallo,
was noch nicht geht ist das Bild anzeigen.
Es wird statt dem Bild ein rotes Kreuz angezeigt.
Gruß
Ähnliche Themen
-
Checkboxen dynamisch darstellen
Von chill0r55555 im Forum PHPAntworten: 5Letzter Beitrag: 13.02.09, 15:24 -
Bilder im Vordergrund darstellen
Von -André- im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 14.07.08, 16:41 -
bilder kleiner darstellen
Von coolerouny im Forum PHPAntworten: 2Letzter Beitrag: 21.10.05, 21:52 -
Bilder darstellen
Von StefanLausL im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 16.09.04, 15:32 -
Bilder darstellen
Von disear im Forum PHPAntworten: 1Letzter Beitrag: 12.06.02, 15:56





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren