Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
neuste datei aus verzeichnis auslesen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
neuste datei aus verzeichnis auslesen


 
james
05-11-2001, 16:29 
 
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

 
Kaffi
05-11-2001, 21:30 
 
Thread aus Code-Schnipsel (Nur für Code - Keine Fragen) verschoben.

 
Titus
05-11-2001, 23:58 
 
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. '">';

 
bastian
24-07-2002, 14:11 
 
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.

 
Titus
25-07-2002, 09:11 
 
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]". '">';

 
bastian
25-07-2002, 09:58 
 
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.

 
Aroree
25-07-2002, 10:11 
 
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....

 
bastian
25-07-2002, 10:20 
 
hallo Aroree,

leider hatte das keinen effekt,
parse error in zeile 9
:-(

sonst noch ne idee?
b.

 
Titus
25-07-2002, 12:22 
 
In Zeile 8 fehlte eine schließende Klammer.
Ich hab´s im Original-Post korrigiert.

 
bastian
25-07-2002, 12:32 
 
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.

 
Titus
25-07-2002, 12:40 
 
das zweite return ist zuviel.
Das sollte es nu aber sein mit parse-Fehlern.

 
bastian
25-07-2002, 12:49 
 
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.

 
Titus
25-07-2002, 13:08 
 
logisch ... ich doof ... letzte Zeile ändern:

echo '<img src="'. "$pfad/$file[name]". '">';

 
bastian
25-07-2002, 13:14 
 
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.

 
Titus
25-07-2002, 13:44 
 
genau so! (allerdings nicht Text für den Link und </a> vergessen!)

 
bastian
25-07-2002, 13:54 
 
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?>">';

?>

 
Titus
25-07-2002, 14:06 
 
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.

 
bastian
25-07-2002, 14:14 
 
super!
jetzt läuft es einwandfrei...
nochmals vielen dank!

grüsse aus essen
bastain

 
Aroree
25-07-2002, 14:25 
 
Titus und jetzt den code bitte noch mal fehlerfrei hierhin posten!!!

 
bastian
25-07-2002, 14:32 
 
<?
$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>';


?>

 
Titus
25-07-2002, 14:53 
 
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.

 
Aroree
25-07-2002, 15:02 
 
ok dann ist ja gut...

 
bastian
29-07-2002, 10:39 
 
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 :(

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:05 Uhr.