SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11.08.2004, 09:56:58
muxe muxe ist offline
Anfänger
 
Registriert seit: Aug 2004
Ort: oberbayern
Beiträge: 20
muxe eine Nachricht über ICQ schicken muxe eine Nachricht über AIM schicken
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($ausgabe20,$abziehen);

$timestamp=substr($file0,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.
Mit Zitat antworten
  #2  
Alt 11.08.2004, 10:21:00
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 52
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], 64).substr($temp1[0], 32).substr($temp1[0], 02)]=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.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #3  
Alt 11.08.2004, 10:36:10
muxe muxe ist offline
Anfänger
 
Registriert seit: Aug 2004
Ort: oberbayern
Beiträge: 20
muxe eine Nachricht über ICQ schicken muxe eine Nachricht über AIM schicken
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], 64).substr($temp1[0], 32).substr($temp1[0], 02)]=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
Mit Zitat antworten
  #4  
Alt 11.08.2004, 10:40:48
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 52
Beiträge: 4.748
Mich verwirrt etwas in Deinem Skript. Darum: Zeige mir mal einen Beispieldateinamen.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #5  
Alt 11.08.2004, 10:49:09
muxe muxe ist offline
Anfänger
 
Registriert seit: Aug 2004
Ort: oberbayern
Beiträge: 20
muxe eine Nachricht über ICQ schicken muxe eine Nachricht über AIM schicken
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
Mit Zitat antworten
  #6  
Alt 11.08.2004, 10:58:22
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 52
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($filename010)]=array(
            
'filename'  => $filename,
            
'timestamp' => substr($filename010),
            
'title'     => substr($filename11, -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? :)
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #7  
Alt 11.08.2004, 11:01:00
muxe muxe ist offline
Anfänger
 
Registriert seit: Aug 2004
Ort: oberbayern
Beiträge: 20
muxe eine Nachricht über ICQ schicken muxe eine Nachricht über AIM schicken
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>&nbsp;</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>&nbsp;</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>&nbsp;</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>
Mit Zitat antworten
  #8  
Alt 11.08.2004, 11:02:25
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 52
Beiträge: 4.748
Sieht eigentlich gut aus, ja.

Wie hast Du die Daten dann richtig gespeichert?
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #9  
Alt 11.08.2004, 11:04:15
muxe muxe ist offline
Anfänger
 
Registriert seit: Aug 2004
Ort: oberbayern
Beiträge: 20
muxe eine Nachricht über ICQ schicken muxe eine Nachricht über AIM schicken
was meinst du mit 'richtig' gespeichert?!
Mit Zitat antworten
  #10  
Alt 11.08.2004, 11:05:50
c4 c4 ist offline
SELFPHP Guru
 
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 52
Beiträge: 4.748
Irgendwo wird es doch auch ein fopen() und fwrite() oder fput() und fclose() geben. Das meinte ich mit richtig.
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:25:32 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.


© 2001-2022 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt