Archiv verlassen und diese Seite im Standarddesign anzeigen : neuste datei aus verzeichnis auslesen
brauche DRINGEND ein script, welches nur das jeweils neueste File (wecam image) aus einem Verzeichnis ausließt, da die alten images nicht überschrieben werden dürfen, weil diese später noch gebraucht werden. die images erhalten von der webcam jeweils einen namen, der datum und uhrzeit beihaltet. hast ihr sowas? thank you, james
Thread aus Code-Schnipsel (Nur für Code - Keine Fragen) verschoben.
in $pfad mußt du latürnich den Pfad zu deinen Webcambildern speichern.
$pfad = 'webcam/bilder';
$dir = opendir ($pfad);
while ($file=readdir($dir)) $bild = "$pfad/$file";
echo '<img src="'. $bild. '">';
Das sollte eigentlich schon reichen, falls die neueste Datei auch wirklich immer als letztes im Verzeichnis steht.
Um auf Nummer sicher zugehen, bietet sich das hier an:
$pfad = 'webcam/bilder';
$bild = '';
$dir = opendir ($pfad);
while ($file=readdir($dir))
if (strcmp($bild, $file)<0) $bild = $file;
echo '<img src="'. "$pfad/$bild". '">';
Das funktioniert aber auch nur, wenn sich die Namen einfach über Stringvergleich sortieren lassen. Sonst mußt du halt anders vergleichen.
Du kannst aber auch gleich das Datum der Datei benutzen:
$pfad = 'webcam/bilder';
$bild = '';
$dir = opendir ($pfad);
while ($file=readdir($dir))
if (!$bild || filemtime($bild)<filemtime("$pfad/$file"))
$bild = "$pfad/$file";
echo '<img src="'. $bild. '">';
hallo,
suche nach einer möglichkeit,
alle bilder aus einem verzeichnis so auszugeben, dass das neuste ganz oben steht - das älteste ganz unten.
irgendwelche ideen?
gruss
b.
eine Variante von dem da oben:
$pfad = 'webcam/bilder';
$files = array();
// Verzeichnis einlesen in $files
$dir = opendir ($pfad);
while ($file=readdir($dir))
if (ereg('\\.(jpg|gif|png|jpeg)$', $file))
$files[] = array (
'name'=>$file,
'mtime'=>filemtime("$pfad/$file")
);
// $files nach mtime absteigend sortieren
function mycmp($a,$b)
{
return ($a['mtime']==$b['mtime'] ? 0
:($a['mtime']<$b['mtime'] ? +1:-1)
);
}
usort ($files, 'mycmp');
// ausgeben
foreach($files as $file)
echo '<img src="'. "$pfad/$file[name]". '">';
hallo titus,
parse error in zeile 9
$files[] = array (
haste ne idee was daran falsch sein könnte. kenn mich leider null aus. ist bestimmt nur ne ganze kleinigkeit....
gruss
b.
schreib es mal alles in eine Zeile
$files[] = array (
'name'=>$file,
'mtime'=>filemtime("$pfad/$file")
);
$files[] = array ('name'=>$file, 'mtime'=>filemtime("$pfad/$file"));
könnte daran liegen...probier mal aus....
hallo Aroree,
leider hatte das keinen effekt,
parse error in zeile 9
:-(
sonst noch ne idee?
b.
In Zeile 8 fehlte eine schließende Klammer.
Ich hab´s im Original-Post korrigiert.
parse error in zeile 17...
return ($a['mtime']==$b['mtime'] ? return 0
sorry das ich nur die fehlermeldungen hier aufliste und nicht selber konstruktiv bin, hab - wie schon gesagt - keinen plan von php....
:(
b.
das zweite return ist zuviel.
Das sollte es nu aber sein mit parse-Fehlern.
hallo titus,
hast recht, das wars mit den parse-fehlern.
aber leider werden jetzt platzhalter-bilder dargestellt,
als eigenschaft steht anstatt der url+bildname nur
die url+array
b.
logisch ... ich doof ... letzte Zeile ändern:
echo '<img src="'. "$pfad/$file[name]". '">';
genial, nicht doof :-)
danke titus - du hast mir sehr geholfen!
hab da noch ne frage:
<?
$path = "bilder";
$dir = dir($path);
while($datei=$dir->read()){
if(eregi("\.jpg$", $datei))
if(!is_dir($path."/".$dir)) { ?>
<a href="<?=$path."/".$datei?>">
<?=$datei ?>
</a><br>
<? }
}
?>
gibt mir die dateinamen als link zum jeweiligen bild aus.
ersetz ich jetzt einfach in deinem script den image-tag durch den link-tag?
b.
genau so! (allerdings nicht Text für den Link und </a> vergessen!)
grummel*grummel
habs so ausprobiert,
kommen aber immer nur ">">">">">">">" bei raus...
was hab ich falsch gemacht?
<?
$pfad = 'bilder';
$files = array();
// Verzeichnis einlesen in $files
$dir = opendir ($pfad);
while ($file=readdir($dir))
if (ereg('.(jpg|gif|png|jpeg)$', $file))
$files[] = array (
'name'=>$file,
'mtime'=>filemtime("$pfad/$file")
);
// $files nach mtime absteigend sortieren
function mycmp($a,$b)
{
return ($a['mtime']==$b['mtime'] ? 0
:($a['mtime']<$b['mtime'] ? +1:-1)
);
}
usort ($files, 'mycmp');
// ausgeben
foreach($files as $file)
echo '<a href="<?=$path."/".$datei?>">';
?>
Es war noch ein Bug im Skript ... vor den Punkt im ereg gehört ein backslash, das vom Forum leider verschluckt wurde. Nun wird´s angezeigt:
if (ereg('\.(jpg|gif|png|jpeg)$', $file))
------
Was willst du mit dem echo bezwecken?
echo '<a href="<?=$path."/".$datei?>">';
das gibt folgendes aus:
<a href="<?=$path."/".$datei?>">
du willst aber das hier haben:
<a href="bilder/bild1.jpg">bild1.jpg</a>
ergo:
echo '<a href="'. "$path/$file[name]". '">'. $file['name']. '</a>';
------
- <?=$variable?> funktioniert nur im HTML-Modus, der Schnipsel ist aber komplett im PHP-Mode.
- Variablen werden nur in doppelten Anführungszeichen (Gänsefüßchen) ersetzt, ich benutze hier aber einfache Hochkommata.
super!
jetzt läuft es einwandfrei...
nochmals vielen dank!
grüsse aus essen
bastain
Titus und jetzt den code bitte noch mal fehlerfrei hierhin posten!!!
<?
$pfad = 'bilder';
$files = array();
// Verzeichnis einlesen in $files
$dir = opendir ($pfad);
while ($file=readdir($dir))
if (ereg('\.(jpg|gif|png|jpeg)$', $file))
$files[] = array (
'name'=>$file,
'mtime'=>filemtime("$pfad/$file")
);
// $files nach mtime absteigend sortieren
function mycmp($a,$b)
{
return ($a['mtime']==$b['mtime'] ? 0
:($a['mtime']<$b['mtime'] ? +1:-1)
);
}
usort ($files, 'mycmp');
// ausgeben
foreach($files as $file)
echo '<a href="'. "$path/$file[name]". '">'. $file['name']. '</a><br>';
?>
Original geschrieben von Aroree
Titus und jetzt den code bitte noch mal fehlerfrei hierhin posten!!!
Der Code ist fehlerdrei auf der ersten Seite. Jeder Bug den ich finde, wird zusätzlich zum Post da oben behoben.
hallo titus,
hab noch ne bitte:
mit dem ersten php-skript kann ich variabeln in flash übergeben und anzeigen lassen.
nun möchte ich (wie in deinem skript) die variabeln noch nach datum ausgeben, d.h. wie gehabt die neuste ganz oben.
hab schon allerlei ausprobiert, kommt aber leider nichts bei raus.
könntest du mir nocheinmal helfen?
________________________________________________
<?
// das verzeichnis könnte man auch aus flash übergeben:
// ladeVars("download.php?verz=./bilder", this);
// dann die nächste zeile hier ($verz="./bilder";) löschen
// verzeichnis mit den download dateien
$verz="bilder";
// verzeichnishandle öffnen
$handle=opendir($verz);
// dateinamen in array schaufeln, nur .zip-dateien
while ($file = readdir ($handle)) {
if ($file != "." && $file != ".." && ereg(".jpg",$file)) {
$dirs[] = $file;
}
}
// verzeichnishandle schließen
closedir($handle);
// arraylänge
$laenge=count($dirs);
// wenn dateien im verzeichnis sind
if($laenge>0){
sort($dirs);
// alles in flashform ausgeben
echo"&files=";
for($i=0;$i<$laenge;$i++){
if($i<$laenge-1){
echo $dirs[$i].",";
}else{
echo $dirs[$i]."&";
}
}
// wenn keine dateien im verzeichnis sind
}else{
echo"&files=0&";
}
?>
__________________________________________________
hier dein skript nocheinmal:
<?
$pfad = 'bilder';
$files = array();
// Verzeichnis einlesen in $files
$dir = opendir ($pfad);
while ($file=readdir($dir))
if (ereg('\.(jpg|gif|png|jpeg)$', $file))
$files[] = array (
'name'=>$file,
'mtime'=>filemtime("$pfad/$file")
);
// $files nach mtime absteigend sortieren
function mycmp($a,$b)
{
return ($a['mtime']==$b['mtime'] ? 0
:($a['mtime']<$b['mtime'] ? +1:-1)
);
}
usort ($files, 'mycmp');
// ausgeben
foreach($files as $file)
echo '<a href="'. "$pfad/$file[name]". '">'. $file['name']. '</a><br>';
?>
danke
b.
Andre_Krumb 29-07-2002, 13:01 Sorry gehört hier net rein aber ich verzweifel langsam. Bastian irgendwie kann ich dich per Mail nicht erreichen. Ich hab im Out of Order was gepostet. Mail mir mal deine Telefonnummer weil deine Mails hab ich ja teils bekommen aber du meine net :(
|
-
- |