okidoki
Goto Top

Php: Verzeichnis mit Datum, Zeit und sortiert auflisten

Hallo,

bin seit einigen Tagen dabei oben genannte Lösung zu suchen. Eine Auflistung gelingt mir, allerdings bekomme ich es einfach nicht hin, zur jeweiligen Datei auch den Zeitstempel anzeigen zu lassen. Ich habe einzelne Anzeigeblöcke, hier im vorderen Dateinamen "123*", d.h., die Datei sollen nach ihrem Dateinamen, NICHT nach dem Erstellungsdatum sortiert sein!
Btw: Klasse wäre, wenn ich eine Nummerierung der Datein ein- und ausschalten könnte ... also, wüsste, was ich einbauen müsste!

<?php
foreach (glob("123*.php") as $filename) {  
    echo "<a href=\"$filename\" target=\"_blank\">$filename</a><br>\n";  
}
?>


Wäre über einen Tipp dankbar face-smile

Gruß
okidoki

Content-Key: 665508

Url: https://administrator.de/contentid/665508

Printed on: April 16, 2024 at 22:04 o'clock

Mitglied: 148121
Solution 148121 Apr 07, 2021 updated at 20:16:55 (UTC)
Goto Top
$files = glob('123*.php');  
asort($files);
$cnt = 1;
foreach($files as $file){
    echo "$cnt|$file|" . date('Y-m-d H:i:s',filemtime($file)) . "<br />";  
    $cnt++;
}
bin seit einigen Tagen dabei oben genannte Lösung zu suchen
Autsch. Wieso noch suchen?! Selbst ist die/der Frau/Mann face-smile! Alles was du dafür brauchst steht hier, man müsste es einfach nur mal lesen!

Gruß w.
Member: OKIDOKI
OKIDOKI Apr 07, 2021 updated at 18:38:18 (UTC)
Goto Top
Oh klasse!
Ich danke dir face-smile
Nun habe ich noch einen Zeilenumbruch eingefügt, dann sieht es gleich noch schicker aus ...

<?php
$files = glob('123*.php');  
asort($files);
$cnt = 1;
foreach($files as $file){
    echo "$cnt|$file|" . date('Y-m-d H:i:s',filemtime($file)) . '<br>';  
    $cnt++;
}
?>

Zur Abrundung hatte ich gedacht, ich lese jetzt einfach noch die Datei aus (besteht aus einem Wort, Semikolon, eine Zahl). Nun merke ich aber, dass ein einfaches Einsetzen nicht reicht, zudem benötige ich nur das Wort:

<?php
$files = glob('123*.php');  
asort($files);
inhalt =  file_get_content ($files as $file);
$cnt = 1;
foreach($files as $file){
    echo "$cnt|$file|" . date('Y-m-d H:i:s',filemtime($file)) . $inhalt . '<br>';  
    $cnt++;
}
?>


Hast du dazu noch eine Idee?
Bei den einstelligen Zahlen ist durch die fehlende Null ein Versatz, gibt es dazu auch eine Lösung?

1 |1230.php | 22:03:2021 | 14:38:10
2 |1231.php | 22:03:2021 | 14:38:11
3 |1232.php | 22:03:2021 | 14:38:11
4 |1233.php | 22:03:2021 | 14:38:12
5 |1234.php | 22:03:2021 | 14:38:12
6 |1235.php | 22:03:2021 | 14:38:13
7 |1236.php | 22:03:2021 | 14:38:13
8 |1237.php | 22:03:2021 | 14:38:14
9 |1238.php | 22:03:2021 | 14:38:14
10 |1239.php | 22:03:2021 | 14:38:15
Member: wiesi200
wiesi200 Apr 07, 2021 at 18:48:26 (UTC)
Goto Top
Hallo,

findet man auch auf der schon angegebenen Seite.
https://www.php.net/manual/de/function.str-pad.php
Member: OKIDOKI
OKIDOKI Apr 07, 2021 at 21:19:00 (UTC)
Goto Top
... dann benötige ich eigentlich gar kein Forum mehr ...
da ich totaler Anfänger bin steige ich - trotz mehrfachen Lesens - einfach nicht durch ...

Aber trotzdem danke für deinen Tipp wiesi200!

Insbesondere gilt mein Dank noch einmal warranty! Vielen Dank für deine Mühe 👌
Member: wiesi200
Solution wiesi200 Apr 08, 2021 at 04:02:48 (UTC)
Goto Top
Naja PHP ist eigentlich wirklich gut dokumentiert mit sehr vielen Beispielen und wirklich anfängerfreundlich. Dein Wunsch steht sogar fast 1 zu 1 nur eben mit 4 Stellen relativ weit unten im Kommentarbereich

Wenn du dir mal c++ oder son nen Spaß ansieht wirst du das schnell feststellen.

Bei Zeile 7 beim "echo" anstelle von $cnt kommt der spaß
str_pad($cnt,2,'0',STR_PAD_LEFT)

Somit füllst du auf 2 Stellen mit dem Wert 0 auf der Linken Seite des Strings auf.
Member: OKIDOKI
OKIDOKI Apr 08, 2021 updated at 07:19:15 (UTC)
Goto Top
Moin,
so, habe alles soweit hinbekommen face-smile!
Mein Problem war, dass ich versucht habe Text einzubinden, allerdings ohne "", was immer wieder zum Absturz führte - ich glaube zu wissen, was ihr denkt ... jetzt aber face-smile

<?php
$files = glob('123*.csv');  
asort($files);
$cnt = 1;
foreach($files as $file){
echo str_pad($cnt, 2, "0", STR_PAD_LEFT) . ". " . $file . date('d:m:Y | H:i:s',filemtime($file)) ; readfile("$file", "r"). '<br>';  
    $cnt++;
}
?>

Leider erzeugt das Öffnen des files die Meldung "Resource id #6", der Dateiinhalt wird aber nicht angezeigt ...

Readfile ist wohl die bessere Alternative face-smile face-smile face-smile
Member: wiesi200
wiesi200 Apr 08, 2021 at 07:00:38 (UTC)
Goto Top
Member: OKIDOKI
OKIDOKI Apr 08, 2021 updated at 07:18:36 (UTC)
Goto Top
yep, readfile wars ...
oben geändert, nur, warum steht der Inhalt jetzt am Anfang vor der Aufzählung?
Weil es vor den Punkt mit Semi eingebunden werden muss - schlag vor'n Kopf!


Also, noch einmal vielen Dank für eure Hilfe face-smile
Mitglied: 148121
148121 Apr 08, 2021 updated at 08:03:45 (UTC)
Goto Top
Zitat von @OKIDOKI:

yep, readfile wars ...
oben geändert, nur, warum steht der Inhalt jetzt am Anfang vor der Aufzählung?
Falsche Funktion genommen, readfile ist für die alleinige Auslieferung von Dateien an den Client, nicht zum Auslesen und gleichzeitigen Verarbeiten des Inhalts, dafür gibt's file_get_contents
Member: OKIDOKI
OKIDOKI Apr 08, 2021 updated at 12:55:28 (UTC)
Goto Top
Jetzt hast du mich neugierig gemacht face-smile

Wenn diese Funktion zum Verarbeiten ist, wäre es doch möglich, die Ausgabe in einer bestimmten Farbe zu erzeugen, oder?

1. Mein Vorhaben listet die Ergebnisse von Schulaufgaben verschiedener Klassen auf. In den ausgelesenen Dateien steht nur "vollständig" bzw. "unvollständig". Nun würde ich gerne unvollständig in rot und vollständig in grün ausgeben.
Ich hatte mich gerade mit Highlighting beschäftigt, wobei ich glaube, dass es eine Nummer zu groß ist ... und vermutlich mit php einfacher geht, wenn es gleich um das Auslesen und Verarbeiten der Variable geht.


ok, ich denke die Tabelle habe ich im Griff. Ich baue die Tabelle um den php herum, das geht ganz gut!

Es bleiben also Fragen face-smile face-smile
Mitglied: 148121
Solution 148121 Apr 08, 2021 updated at 13:39:15 (UTC)
Goto Top
Zitat von @OKIDOKI:

Jetzt hast du mich neugierig gemacht face-smile
Körner hin werf'
Wenn diese Funktion zum Verarbeiten ist, wäre es doch möglich, die Ausgabe in einer bestimmten Farbe zu erzeugen, oder?
Alles möglich.
1. Mein Vorhaben listet die Ergebnisse von Schulaufgaben verschiedener Klassen auf. In den ausgelesenen Dateien steht nur "vollständig" bzw. "unvollständig". Nun würde ich gerne unvollständig in rot und vollständig in grün ausgeben.
Ich hatte mich gerade mit Highlighting beschäftigt, wobei ich glaube, dass es eine Nummer zu groß ist ... und vermutlich mit php einfacher geht, wenn es gleich um das Auslesen und Verarbeiten der Variable geht.
Es bleiben also Fragen face-smile face-smile
Ah ja never ending Thread mal wieder ...
<?php
$files = glob('123*.php');  
asort($files);
$cnt = 1;
$tbl = '<table class="mytable"><tbody><tr><th>No.</th><th>Name</th><th>Datum/Zeit</th></tr>';  
foreach($files as $file){
	$content = file_get_contents($file);
	$class = preg_match('/^vollständig/im',$content) ? 'complete' : 'incomplete';  
	$tbl .= "<tr class=\"" . $class . "\"><td>" . $cnt . "</td><td>" . $file . "</td><td>" . date('Y-m-d H:i:s',filemtime($file)) . "</td></tr>";  
    $cnt++;
}
$tbl .= '</tbody></table>';  
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">  
<title>Demo</title>
</head>
<style>
body {font-family:sans-serif; font-size:0.9em;}
.mytable {border-collapse:collapse}
.mytable th {background-color:rgba(238,238,238,1); padding:5px}
.mytable td {
	border: 0px;
	padding: 5px;
	text-align:right;
}
.complete {background-color:rgba(102,255,102,1);}
.incomplete {background-color:rgba(255,102,51,1);}
</style>
<body>
<?php echo $tbl;?>
</body>
</html>
Isch bin dann wech ...
Member: OKIDOKI
OKIDOKI Apr 08, 2021 updated at 14:37:28 (UTC)
Goto Top
Isch schwöre: KEIN never ending ...

SUPER, vielen, vielen Dank!!! Genau so!

Ich hatte ja schon geschlossen, dann kam die Idee mit file_get_contents face-smile face-smile face-smile

Im Ernst: So is fertisch!

Ich bin sprachlos, dankbar und WUNSCHLOS (so kann es nämlich ab morgen laufen, vorletzter Ferientag)

Dieses Forum ist Mega, dank dir warranty!
okidoki
Member: wiesi200
wiesi200 Apr 08, 2021 at 18:12:20 (UTC)
Goto Top
Bei uns gibt's viele gute Leute. In der Regel wird nur in der Regel eigenleistung erwartet und wir geben meist nur Hilfe zu Selbsthilfe.
Vor allem wenn's nach Hausaufgaben aussieht.
So wie ein guter Lehrer 😉
Member: OKIDOKI
OKIDOKI Apr 08, 2021 at 20:22:03 (UTC)
Goto Top
Gute Lehrer face-smile ... und natürlich wiesi200 nicht zu vergessen face-smile!!!

Das ist natürlich manchmal verzwickt, wenn man sich mithilfe des Forums (Selbsthilfe, was ich total gut finde) einerseits eine Lösung erarbeitet hat und dann ein neues Problem auftaucht, das man gar nicht erwartet hätte ...

Ich bin z.B. gerade dabei den Code umzumodellieren, weil ich bei einem funktionierenden auch richtig Spaß dran haben kann! Die Frustration anfänglich ist, weil ich (vielleicht auch andere) gar nicht wissen, wie sie einsteigen sollen.
Insofern hat mir eine fertige Lösung noch nie etwas gebracht, sondern die Selbsthilfe ist ein großes Geschenk dieses Forums!
Member: OKIDOKI
OKIDOKI Apr 10, 2021 at 09:07:03 (UTC)
Goto Top
Ich weiß, es soll kein never ... werden! Eine Bitte habe dennoch zum ersten Code von warranty, den ich gerne (zusätzlich zum neuen unten) weiter nutzen würde:
Wie lässt sich die Ausgabe als Link anzeigen?
Mein Versuch scheitert leider:
<?php
$files = glob('123*.php');  
asort($files);
$cnt = 1;
foreach($files as $file){
<li><a href= echo "$cnt|$file|" . date('Y-m-d H:i:s',filemtime($file)) . '<br>'; </a></li>  
    $cnt++;
}
?>
Mitglied: 148121
Solution 148121 Apr 10, 2021 updated at 09:42:26 (UTC)
Goto Top
Ich weiß, es soll kein never ... werden!
Hat schon angefangen ...
Autsch ... face-confused
echo "<li><a href=\"$file\">$cnt|$file|" . date('Y-m-d H:i:s',filemtime($file)) . "</a></li>";  
You have a looooong way to go min jung.

thread notification for my side = off

w.
Member: OKIDOKI
OKIDOKI Apr 10, 2021 at 09:53:30 (UTC)
Goto Top
Jetzt bist DU doch der Beste!

Ich danke dir von Herzen -
Thread - closed -