CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
11.08.2004, 09:56:58
|
Anfänger
|
|
Registriert seit: Aug 2004
Ort: oberbayern
Beiträge: 20
|
|
verzeichnis auslesen und dateien nach erstellungsdatum sortieren
der titel sagt ja schon, was ich vorhabe.
ich möchte ein verzeichnis, in dem sich .php und .txt dateien befinden auslesen lassen und die titel der dateien nach erstellungsdatum sortiert auflisten lassen. mit 'titel der dateien' meine ich folgendes:
die dateien werde folgendermaßen angelegt:
[timestamp]-[titel].txt
die ausleseroutine filtert jetzt nur den titel heraus, zeigt ihn und das durch den timestamp erzeugte erstellungsdatum an und verlinkt auf die jeweilige datei.
das ganze sieht dann so aus:
11.08.2004 :: datei1
11.08.2004 :: datei2
12.08.2004 :: datei3
12.08.2004 :: datei4
13.08.2004 :: datei5
14.08.2004 :: datei6
wie ihr unten an meinem code sehen könnt, lese ich das verzeichnis mittels schleife ein, wie üblich, allerdings nicht in ein array.
meine frage ist nun, ob mir jemand bei diesem beispiel helfen kann, die erstellung des arrays vorzunehmen.
denn wenn ich das verzeichnis in ein array eingelesen habe, kann ich es aufgrund der timestamps nach datum sortieren.
hier ist der bereits erstellte code:
(ich weiß, die 'if-zeilen' sind zu ausgeprägt, aber das ist zweitrangig und war nur zum testen wichtig')
PHP-Code:
<body background="grafiken/bgtabelle.bmp"><font face="tahoma" size="1" text="#000000" link="#000000" vlink="#000000" alink="#000000">
<?php
$folder="events"; // Verzeichnis indem die dateien sind !
echo '<center><table width="90%" border="0" cellspacing="0" cellpadding="0"><tr><td>';
echo ("<strong><font color="#000000" face="tahoma" size="1">es liegen folgende artikel vor:</strong></font><br><br>");
$open=opendir ($folder);
while ($file = readdir ($open)) {
if($file != "." && $file != ".." && $file!="sch-download.php" && $file!="testen" && $file!="eventsschreiben.php" && $file!="timestamp.php" && $file!="testen.php" && $file!="eventsiframe.php" && $file!="sch-download.php" && $file!="eveintragen.php" && $file!="eveintragen.php" && $file!="sch-download.php")
$länge=strlen($file);
$abziehen2=$länge-11;
$ausgabe2=substr($file, -$abziehen2);
$länge2=strlen($ausgabe2);
$abziehen=$länge2-4;
$ausgabe=substr($ausgabe2, 0,$abziehen);
$timestamp=substr($file, 0,10);
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
if ($ausgabe != "eventsschreiben" && $ausgabe != "eveintragen" && $ausgabe != "." && $ausgabe != ".." && $ausgabe != "timestamp" && $ausgabe != "sch-download" && $ausgabe != "d" && $ausgabe != "e " && $ausgabe != "" && $ausgabe != "evlesen" && $ausgabe != "iben" && $ausgabe != "eventsschreiben" && $ausgabe != "sch-downloa" && $ausgabe != "sch-dow" && $ausgabe!="eveintragen.php" && $ausgabe!="sch-download.php" && $ausgabe!="testen")
echo '<font color=#000000 face="tahoma" size=1><a href="events/evlesen.php?url='.$file.'">'.$datum.' :: </font></a><a href="events/evlesen.php?url='.$file.'"><font color="#000000" face="tahoma" size=2>'.$ausgabe.'</a></font><br>';
}
closedir($open);
echo "<br><font size="1" color=#000000><a href="http://schuelgy.st-ursula.net/smv/admin.php?action=adminlogin" target="_top">[admin]</a></font>";
echo '</td></tr></table></center>';?>
</font>
</body>
der code funzt soweit, wie gesagt möchte ich das verzeichnis nun noch per array einlesen lassen.
|
11.08.2004, 10:21:00
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Normalerweise würde ich sagen 'Nutze die Suchfunktion!'. Heute nicht. Hab nix zu tun...
Das Beispiel erstellt 6 Dateien mit unterschiedlicher Datumsangabe. Der Inhalt des aktuellen Verzeichnisses wird eingelesen und dargestellt. Ich gehe mal davon aus, dass diese Dateien bei Dir in einem gesonderten Verzeichnis liegen, so dass es keine Fehlermeldungen geben wird, aufgrund 'falscher' Dateinamen, also solchen ohne - und/oder .
PHP-Code:
<?php
$fh=fopen('01.02.2005-Titel1.txt', 'w'); fwrite($fh, ''); fclose($fh);
$fh=fopen('02.02.2005-Titel2.txt', 'w'); fwrite($fh, ''); fclose($fh);
$fh=fopen('03.03.2006-Titel3.txt', 'w'); fwrite($fh, ''); fclose($fh);
$fh=fopen('01.03.2006-Titel4.txt', 'w'); fwrite($fh, ''); fclose($fh);
$fh=fopen('02.04.2004-Titel5.txt', 'w'); fwrite($fh, ''); fclose($fh);
$fh=fopen('03.04.2004-Titel6.txt', 'w'); fwrite($fh, ''); fclose($fh);
$bad_filenames=array('.', '..', 'testen', '.htaccess', 'sna', 'blubb', 'foo', 'bar');
$dh=opendir('./');
while (false !== $filename=readdir($dh)) {
if (!in_array($filename, $bad_filenames)) {
$temp1=explode('-', $filename);
$temp2=explode('.', $temp1[1]);
$files[$timestamp=substr($temp1[0], 6, 4).substr($temp1[0], 3, 2).substr($temp1[0], 0, 2)]=array(
'filename' => $filename,
'timestamp' => $temp1[0],
'title' => $temp2[0]);
}
}
closedir($dh);
ksort($files);
foreach ($files as $k => $v) {
echo "<a href='{$files[$k]['filename']}'>{$files[$k]['timestamp']} :: {$files[$k]['title']}</a><br />n";
}
exit;
?>
Naja, wird Dir vermutlich helfen das bisschen Code.
|
11.08.2004, 10:36:10
|
Anfänger
|
|
Registriert seit: Aug 2004
Ort: oberbayern
Beiträge: 20
|
|
ok....
erstmal sorry, ich sitz echt schon länger an dem problem und hab auch im net gesucht, aber net viel gefunden.
sodala, hab den code noch bisserl umgeändert:
PHP-Code:
<?php
$bad_filenames=array('.', '..', 'testen', '.htaccess', 'sna', 'blubb', 'foo', 'bar', ' ');
$dh=opendir('./');
while (false !== $filename=readdir($dh)) {
if (!in_array($filename, $bad_filenames)) {
$temp1=explode('-', $filename);
$temp2=explode('.', $temp1[1]);
$files[$timestamp=substr($temp1[0], 6, 4).substr($temp1[0], 3, 2).substr($temp1[0], 0, 2)]=array(
'filename' => $filename,
'timestamp' => $temp1[0],
'title' => $temp2[0]);
}
}
closedir($dh);
ksort($files);
foreach ($files as $k => $v) {
$datum = date("d.m.Y",$files[$k]['timestamp']);
echo "<a href='{$files[$k]['filename']}'>$datum :: {$files[$k]['title']}</a><br />n";
}
exit;
?>
das komische ist nur, dass er hier zwei der insgesamt 8 dateien auflistet und dann stoppt.
10.08.2004 :: Datei1
10.08.2004 :: Datei2
|
11.08.2004, 10:40:48
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Mich verwirrt etwas in Deinem Skript. Darum: Zeige mir mal einen Beispieldateinamen.
|
11.08.2004, 10:49:09
|
Anfänger
|
|
Registriert seit: Aug 2004
Ort: oberbayern
Beiträge: 20
|
|
angezeigt werden:
1092164253-Der Unterstufenfasching.txt
1092164083-Der erste Schultag.txt
nicht angezeigt werden:
1092164253-2. Klassensprecherseminar.txt
1092164083-1. Klassensprecherseminar 11.12.2003 - 12.12.2003.txt
1092164253-Advent-Event 22.12.2003.txt
1092164253-Schülersprecherinnenwahl 16.10.2003.txt
|
11.08.2004, 10:58:22
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Entschuldige, Du gehörst nicht zu denen, die z. B. 10.08.2004 als Zeitstempel bezeichnen. Ist mir in Deinem ersten Skript entgangen.
Das Problem ist, dass Du nur zwei unterschiedliche Zeitstempel hast! Dadurch werden die Einträge im Array jedesmal überschrieben.
Bevor man sich bei der Ausgabe Gedanken macht, wie man da was rettet, solltest Du eher beim Eintragen der Datensätze dafür sorgen, dass sie unterschiedliche Zeitstempel tragen. Eigentlich sollte das automatisch der Fall sein, schließlich fügst Du nie 2 Einträge in einer Sekunde hinzu.
Der aktuelle Code:
PHP-Code:
<?php
$fh=fopen('1092164253-Der Unterstufenfasching.txt', 'w'); fclose($fh);
$fh=fopen('1092164083-Der erste Schultag.txt', 'w'); fclose($fh);
$fh=fopen('1092164253-2. Klassensprecherseminar.txt', 'w'); fclose($fh);
$fh=fopen('1092164083-1. Klassensprecherseminar 11.12.2003 - 12.12.2003.txt', 'w'); fclose($fh);
$fh=fopen('1092164253-Advent-Event 22.12.2003.txt', 'w'); fclose($fh);
$fh=fopen('1092164253-Schülersprecherinnenwahl 16.10.2003.txt', 'w'); fclose($fh);
$dh=opendir('./');
while (false !== $filename=readdir($dh)) {
if (substr($filename, -4)=='.txt') {
$files[substr($filename, 0, 10)]=array(
'filename' => $filename,
'timestamp' => substr($filename, 0, 10),
'title' => substr($filename, 11, -4));
}
}
closedir($dh);
ksort($files);
foreach ($files as $k => $v) {
echo "<a href='".rawurlencode($files[$k]['filename'])."'>".date('d.m.Y', $files[$k]['timestamp'])." :: {$files[$k]['title']}</a><br />n";
}
exit;
?>
Fragen, Sorgen, Nöte? :)
|
11.08.2004, 11:01:00
|
Anfänger
|
|
Registriert seit: Aug 2004
Ort: oberbayern
Beiträge: 20
|
|
komisch
ja ok, das verstehe ich. ich habe nur zwei timestamps und deswegen wird halt jedem timestamp eine datei zugeordnet, die dann angezeigt wird...
komisch ist nur, dass ich die dateien gestern abend mit folgendem script wirklich erstellt habe:
PHP-Code:
<html>
<head>
<meta http-equiv="Content-Language" content="de">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>smv // admin - events eintragen</title>
</head>
<body>
<form method="POST" action="eventsschreiben.php">
<div align="center">
<center>
<table border="0" width="100%">
<tr>
<td width="100%"><font face="Tahoma" size="2"><b><u>EVENTS</u></b></font></td>
</tr>
<tr>
<td width="100%"><font face="Tahoma" size="2">trage hier berichte über
bereits geschehene aktionen ein. </font></td>
</tr>
</table>
</center>
</div>
<p> </p>
<p><font face="Tahoma" size="2">gib hier den titel deines eintrages ein:</font></p>
<p><font face="Tahoma" size="2"><input type="text" name="titel" size="66"></font></p>
<p> </p>
<p><font face="Tahoma" size="2">gib hier den artikel ein:</font></p>
<p><font face="Tahoma" size="2"><textarea rows="12" name="inhalt" cols="57"></textarea></font></p>
<p>
<?
$timestamp = time();
echo"<input type="text" name="timestamp" size="20" value="".$timestamp."" readonly>";
?>
</p>
<p><font face="Tahoma" size="2"><input type="submit" value="speichern" name="B1"><input type="reset" value="formular löschen" name="B2"></font></p>
<p> </p>
</form>
<p><font face="Tahoma" size="2"><a href="javascript:history.back()">zurück</a></p><br><br>html ist in allen feldern erlaubt!<br><br><font face="Tahoma" size="2"><a href="../events.php">zu den events</a></font>
</body>
</html>
|
11.08.2004, 11:02:25
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Sieht eigentlich gut aus, ja.
Wie hast Du die Daten dann richtig gespeichert?
|
11.08.2004, 11:04:15
|
Anfänger
|
|
Registriert seit: Aug 2004
Ort: oberbayern
Beiträge: 20
|
|
was meinst du mit 'richtig' gespeichert?!
|
11.08.2004, 11:05:50
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Irgendwo wird es doch auch ein fopen() und fwrite() oder fput() und fclose() geben. Das meinte ich mit richtig.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 15:14:32 Uhr.
|