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)
unbestimmte anzahl von Datein einlesen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
unbestimmte anzahl von Datein einlesen


 
darktemplar
27-02-2004, 13:52 
 
Hi @all

bin seit 2 Tagen begeisterteter PHP "programmierer" :) Als erstes danke an alle die mir geholfen haben und an die Betreibern dieses Forums ! Klasse!

Nun zum "Problem":

Ich möchte gerne Datein aus einem Ordner auslesen und per Webseite Darstellen. Dies soll regelmässig (bereich 1/2 Std.) geschehen. Nebenbei :Kann ich diese Aktualisierung auch ohne CronJobs erreichen (z.B.wenn ich auf aktualisieren auf Browser drücke --> das automatisieren ??)

Die Datein im Ordner sind druchnummeriert: 1.msg, 2.msg... usw.. die nummern erhöhen sich bei jedem Neuzugang.

bis jetzt hab ich immer den exakten Dateinamen angegeben (z.B. 1.msg) und mit fopen geöffnet. Dies soll jedoch automatisiert und für alle Datein im Verzeichnis geschehen.
anmerk.
[In einem weiteren Schritt werden dann die Absenderemailadressen (plus betreff&usw) aus jeder Datei ausgelesen, und jeder Absender soll im Browser einer Zeile zugeordnet werden. Kommt eine neue mail vom gleichn absender soll diese Zeile überschrieben werden]

das sollte dan so aussehn :

pumuckl@meistereder.de --- Hallo ich bin da --- Rotes Haar
Pinochio@Holzkopf.de --- Ich lüge nie --- Lange Nase
.......

Wenn jetzt ne neue mail von pinochio kommt soll der alte content überschrieben werden. Das Problem ist jetzt einerseits: Wie les ich die Datein nacheinander aus ? Und vorallem wie mach ich den Check ob und wo der Pinochio schon einen Entrag hat , und wie überschreib ich das ?

(Pinochio's mails haben z.B. die namen : 1.msg, 13.msg, 18.msg usw...)

Ich hoffe das ist verständlich...
Greetz , bin glaub schon PHp süchtig !?!

 
dispositor
27-02-2004, 13:57 
 
Ich möchte gerne Datein aus einem Ordner auslesen und per Webseite Darstellen

Schau dir mal folgende Funktionen an:
opendir (http://www.php.net/opendir)
readdir (http://www.php.net/readdir)

 
darktemplar
27-02-2004, 14:15 
 
ok hab ich schon gemacht, aber ich seh noch nicht ganz , wie ich dann die Resultat aus readdir weiterverarbeite (das sind ja auch immer unterschiedlich viele ?)
aber ich denke der Punkt ist noch mein kleinstes Prob. Haste auch Ideen für meine weiteren Problemchen ?
danke U Gruss

 
darktemplar
01-03-2004, 09:48 
 
muss den thread mal bisschen nach vorne bringen..,. vielleicht gehts dann ja auch vorwärts !?!

Greetz

 
Wurzel
01-03-2004, 10:03 
 
ganz einfach ....
- du liest die dateien in einer schleife in ein array beispiel (http://de2.php.net/readdir) (das echo ersetzt du durch zB $array[] = $file;)
- das neue array durchläufst du in einer weiteren schleife und liest mit file()/readfile()/fopen() die dateiinhalte ein
- ausgabe

eine automatisierung "light" könntest du nur bei geöffnetem browser-fenster mit einem meta-refresh erzeugen => selfHTML

 
MaxPayne
01-03-2004, 10:12 
 
Anstatt die Zeilen im Browser einzeln zu Manipulieren wuerde ich die Ausgabe einfach komplett neu erzeugen. Dann wuerde ich den META-Refresh weglassen und einfach nen Link machen, der wieder auf das Skript zeigt. Wenn der Benutzer mehrere Mail-Dateien hat und du nur die aktuelleste Anzeigen willst solltest du dir die Funktionen filectime, filemtime und fileatime ansehen, die finden bestimmte Zeitstempel von Dateien raus und nach denen kannst du die neuste Dateien ermitteln.

Nebenbei: Wie willst du eigentlich die Dateien zuordnen? Woher willste wissen, dass Pinnochio 13.msg, 8.msg etc als Mail hat und wer anders zum Beispiel 7.msg?
Wenn du dieses Problem im Griff hast ist das Auslesen der Dateien und die Anzeige nur noch Nebensache:


$fp = opendir("verzeichnis") or die("Verzeichnis konnte nicht geoeffnet werden)";

if($fp)
{
while($datei = readdir($fp);
{
// Anweisungen
}
}

 
socket_shock
01-03-2004, 10:24 
 
Hier mal der Code wie er sein sollte...



$mydir = '/home/www/htdocs/myfiles/';


if($dh = opendir($mydir))
{
while($file = readdir($dh))
{
if( ($file != '.') AND ($file != '..') )
{
echo($file);
}
}
closedir($dh);
}else{
die('Verzeichniss konnte nicht geöffnet werden');
}

 
darktemplar
02-03-2004, 13:59 
 
Danke @all !!!
Den Rest schaff ich selber, der Einstieg ist halt immer schwer. Je mehr man aber rumprobiert, desto vorwärts :)

cu Darki

 
s.roettger
08-05-2004, 12:44 
 
das klappt gut, aber wie mach ich das, dass die ausgabe bzw. die sortierung anderes herum läuft.
momentan hab ich ein paar pdf-files mit den namen
ji 11-2003.pdf
ji 12-2003.pdf
ji 01-2004.pdf
ji 02-2004.pdf
....


in meinem ordner!
werden auch genau so ausgegeben!

jetzt möchte ich aber die reihenfolge ändern - also
ji 01-2004.pdf
ji 02-2004.pdf
ji 11-2003.pdf
ji 12-2003.pdf

geht das, oder sollte ich das lieber über ne db laufen lassen?!

danke und gruss sven
:confused:

 
TobiaZ
08-05-2004, 13:21 
 
wenn du die namen in nem array hast, kannst du das sortieren

 
s.roettger
08-05-2004, 13:25 
 
hab es mit natcasesort() probiert!
schmeisst mir jetzt alles richtig aus -->
032002.pdf
042002.pdf
052002.pdf
052003.pdf
062003.pdf

wie dreh ich denn jetzt die sortierung um?
hier mal mein script

<?php
$mydir=opendir('pdf/');
while ($file = readdir ($mydir)) {
if ($file != "." && $file != ".." && $file != "") // if(!is_dir($lesen))
{
$files_array[] = $file;
}
}
natcasesort($files_array);
foreach ($files_array as $file){
echo"$file\n <br>";
}
closedir($mydir);
?>


also es soll dann
062003.pdf
052003.pdf
052002.pdf
042002.pdf
032002.pdf
da stehen!!


danke

 
TobiaZ
08-05-2004, 13:27 
 
RTFM :motz:

guckst du manual: array_reverse

 
s.roettger
08-05-2004, 13:28 
 
uuuuuppppppppps
hab`s gefunden:

arsort!!!

void arsort (array array [, int sort_flags])
(PHP 3, PHP 4 >= 4.0b1)
Sortiert ein Array absteigend nach den Werten

 
TobiaZ
08-05-2004, 13:31 
 
oder so.

 
s.roettger
08-05-2004, 14:32 
 
noch ne frage hierzu:

wenn ich array_reverse ODER arsort() verwende schmeisst er mir das nicht sobald nicht mehr richtig raus - ist ja auch eigentlich klar .....

ich krieg dann so eine, NICHT richtig, sortierte liste:
122003.pdf
112003.pdf
062003.pdf
052003.pdf
052002.pdf
042004.pdf
042002.pdf
032002.pdf
012004.pdf

stimmt ja nicht wirklich - aber wie kann ich es "stimmend" machen? geht das überhaupt?
danke

 
TobiaZ
08-05-2004, 14:38 
 
da php nicht erkennen kann, das es sich um daten handelt. könnten schließlich auch telefon- oder bestellnummern sein und dann wärs richtig, musst du die namen erst ins richtige format bringen. sollte aber mit substr nicht das problem sein. danach kannst du dann auch sortieren, dass das erwünschte ergebnis rauskommt

- -

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