Dateien sortieren, mit link wiedergeben und bei Klick im Zielframe anzeigen
Thomas
- php
Hallo,
ich habe leider keine Ahnung von php, hatte aber für die Homepage meiner Schule einen kleinen Code zusammengesucht, der soweit auch funktioniert.
Hierbei werden die Dateien eines Verzeichnisses aufgelistet und mit Hyperlinks versehen. Beim Anklicken werden diese im Zielframe angezeigt.
<?php
$verzeichnis = "./vertretungsplaene/";
$inhalt = scandir($verzeichnis);
foreach ($inhalt as $datei)
{if($datei != "." and $datei != "..")
{echo "<h1><a href=\"".$verzeichnis."/".$datei."\" target=\"vertretungsplaene\">".$datei."</a><br>\n";}
}
?>
Nun hätte ich gerne noch, dass die angezeigten Dateien nach Datum sortiert werden.
Ist das ohne viel Umstände möglich?
Hallo Thomas,
Ist das ohne viel Umstände möglich?
Kommt darauf an.™
filemtime liefert dir den Zeitpunkt der letzten Änderung. Dann könntest du die Ausgabe in einer sortierbaren Tabelle vornehmen und die Spalte mit dem timestamp über CSS ausblenden.
Zugegeben, es ist ein bisschen von hinten durch die Brust ins Auge.
Bis demnächst
Matthias
@@Thomas
Willst du uns noch die Zugangsdaten dafür verraten?
Von deinem Sortierungsproblem abgesehen ist dein HTML nicht in Ordnung. h1
sollte nur einmal auf einer Webseite vorkommen und den Seitentitel angeben, also nicht in einer Schleife mehrmals generiert werden.
Für die Auflistung der Pläne bietet sich eine Liste an. (Wer hätte das gedacht?) Die Frage nach der Sortierung legt nahe, dass es eine geordnete ist: ol
.
Markup sollte nicht mit PHP echo
generiert werden. Nicht HTML in PHP schachteln, sondern PHP in HTML – mit der alternativen Syntax für Kontrollstrukturen.
So gut wie alle Ausgaben müssen mit htmlspecialchars()
behandelt werden.
Dein Code sollte so aussehen:
<?php
$verzeichnis = './vertretungsplaene/';
$inhalt = scandir($verzeichnis);
?>
<h1>Vertretungspläne</h1>
<ol>
<?php foreach ($inhalt as $datei): ?>
<?php if($datei != '.' and $datei != '..'): ?>
<li>
<a href="<?= htmlspecialchars($verzeichnis) ?>/<?= htmlspecialchars($datei) ?>" target="vertretungsplaene">
<?= htmlspecialchars($datei) ?>
</a>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ol>
<?=
ist die Kurzform für <?php echo
, was du natürlich auch schreiben kannst.
😷 LLAP
Hallo Gunnar Bittersmann,
@@Thomas
Willst du uns noch die Zugangsdaten dafür verraten?
Das solltest du nicht tun, @Thomas. Vertretungspläne enthalten persönliche Daten (auch durch Nichtnennung) und sollen deshalb nicht veröffentlicht werden.
Bis demnächst
Matthias
Willst du uns noch die Zugangsdaten dafür verraten?
Das solltest du nicht tun, @Thomas.
Natürlich nicht. Ich hoffe doch, Thomas hat die Frage so verstanden wie sie gemeint war: Welchen Sinn macht es, hier eine Webseite zu verlinken, die niemand sehen kann?
Oder ist sich Thomas gar nicht bewusst, dass wir sie nicht sehen können und auch nicht sehen können sollten?
Die nächste Frage ist dann: Wäre es möglich, die (bzw. eine entsprechende) Seite mit Testdaten zu zeigen?
😷 LLAP
Vielen Dank für die Mühe.
wie gesagt, ich habe bislang überhaupt keine Ahnung von PHP und nur ansatzweise etwas HTML und CSS. Angefangen hab ich mit Magix Web Designer. Dadurch, dass ich aber einiges mehr wollte (z.B. ein Akkordion), hatte ich begonnen mit HTML rumzutüfteln.
Ich habe den Code entsprechend korrigiert. h1 hatte ich auch nur genommen, weil ich sonst ständig (trotz <font size=...> </font> ) eine sehr kleine Schrift hatte. Irgendwie hab ich das nun gelöst.
Aber, um das Sortieren hinzubekommen, müsste ich wohl erstmal einen ordentlichen Programmierkurs belegen. Also werd ich die einfachste Variante wählen und meiner Cheffin sagen, sie solle die Dateien im Format yyyy-mm-dd speichern. So sind sie zumindest chronologisch sortiert, auch wenn andersherum besser wäre.
Sicherlich ist mir klar, dass ich die Zugangsdaten nicht verraten darf. Es sei denn, hier ist jemand ein Elternteil eines unserer Schüler.
Vielen Dank also noch einmal für eure Mühe. Ich bewundere euer Know How und vor allem euer Engagement hier im Forum.
Hallo Thomas,
erstmal einen ordentlichen Programmierkurs belegen
Kann nie schaden, aber unterschätze den Zeitaufwand nicht. Und beachte, dass eine aktive Seite im Web mindestens 3 Sprachen braucht: HTML, CSS und PHP. JavaScript und SQL sind optional, aber sobald Du über Dateien hinausgehst und eine Datenbank bestücken willst, brauchst Du auch SQL.
Rolf
@@Thomas
ich habe leider keine Ahnung von php
(Nicht nur) dann ist die PHP-Doku was für dich. In dem Fall die Beschreibung von scandir()
.
Nun hätte ich gerne noch, dass die angezeigten Dateien nach Datum sortiert werden.
Schau dir da mal den Kommentar von Stan P. van de Burgt an.
😷 LLAP
Hallo,
In dem Fall die Beschreibung von
scandir()
.
kannte ich noch nicht, aber ich kann da auch keinen Mehrwert gegenüber glob() erkennen. Eine Sortierung nach einem anderen Kriterium als dem Namen bietet weder glob() noch scandir().
Nun hätte ich gerne noch, dass die angezeigten Dateien nach Datum sortiert werden.
Man müsste also in beiden Fällen die gefundenen Einträge durchgehen und nach ihrem Timestamp umsortieren. Das heißt, erstmal für jeden Eintrag den Timestamp ermitteln.
Schau dir da mal den Kommentar von Stan P. van de Burgt an.
Sag ich doch. 😉
Live long and pros healthy,
Martin