PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Allgemeine-Frage: Daten von einer TXT-Datei einlesen?


BenjaminG
26.02.2005, 12:27:21
Ich möchte Daten von einer TXT-Datei auf einem Webserver einlesen lassen. Ich habe noch ein paar allgemeine Fragen, ob man das so umsetzen kann wie ich mir das gedacht habe (habe noch nichts programmiert dazu!):

1. Kann ich mit PHP ein Fenster von den Laufwerken (auf dem PC des Benutzers) öffnen, um die TXT-Datei auszuwählen zu können?

2. In der TXT-Datei sind sehr viele Datensätze drin, also was ist einfacher auszulesen? Das am Ende jedes Datensatzes ein ; (Strichpunkt) oder eine neue Zeile dran ist, also Absatz?

3. Wenn ich die Daten einlese, dann wird es wahrscheinlich am einfachsten sein, die Daten zu erst in ein Array einzulesen, bevor man die Daten in die Datenbank reinschreibt?

Ich hoffe, ihr könnt mir diese Sachen mal soweit beantworten!

Danke schon mal für die Antworten!

wolles
26.02.2005, 12:59:34
Du kannst nicht mit PHP auf Dateien des Benutzers zugreifen (Du hättest ja auch nicht gerne, daß einer auf Deinem PC rumschnüffelt)
Wenn Du an eine Datei des Users rankommen willst, kannst du Ihm höchstens die Möglichkeit bieten, die Datei hochzuladen, und diese dann verarbeiten (Du solltest natürlich ein paar Sicherheitschecks mit der Datei machen, damit du keinen bösen Code auf Deinen Server bekommst)
Was das Auslesen betrifft, kommt es sich sicher auf die genaue Struktur der Datensätze an. Hast Du Dir schon die Dateisystemfunktionen in Selfphp angeschaut (fgetc, fgets ...)
Das mit dem Array ist auf jeden Fall sinnvoll.
Was willst Du denn für Datensätze auslesen?

volti
26.02.2005, 13:12:11
Hallo,
anknüpfend an Wolles Ausführungen hier noch eine Ergänzung:
Als Textdatei verstehe ich zunächst grundsätzlich eine mit ASCII-Daten gefüllte Datei, deren Datensätze (hier Zeilen) mit CR,LF enden, auch als Zeilenumbruch oder in php n zu verstehen. Diese Dateien können leicht mit jedem Editor bearbeitet werden.


Und hier bietet sich die Syntax: $meindatenarray=file("meinetextdatei.txt"); an, um die Daten mit einem Befehl in ein Array zu lesen.

Sind hier noch Felder enthalten, z.B. mit Tab oder ; getrennt, kannst Du die dann mit dem explode-Befehl zeilenweise zerlegen und weiterverarbeiten.

BenjaminG
26.02.2005, 14:01:12
Ich muss oder will mal probieren, Datensätze von einer TXT-Datei einzulesen. Ein Datensatz enthält ungefähr folgende Daten: Staffelname Heimcode Mannschaftsnr(Heim) Gastcode Mannschaftsnr(Gast) Spieldatum Spielzeit Meldungzeit

Staffelname sind mehrere Wörter
Heimcode, Gastcode können Buchstaben oder Zahlen sein
Mannschaftsnr halt Zahl (2, 3, 4, usw)
Spieldatum natürlich das Datum
Spielzeit Uhrzeit
Meldungszeit (Datum + Uhrzeit der Meldung des Spiels)

Diese Daten sollten dann in eine DB gespeichert werden, aber nur die jenigen, die auch fällig sind. Deshalb wird es da mehrere Abfragen geben.

Dann müsste ich die TXT-Datei also auf den Webserver hochladen und dann durch ein Klick auf ein Script einlesen lassen?

Das sollte normalerweise möglich sein. Um die Datei hochzuladen muss ich da zwingend ein FTP-Programm wie WS_FTP benutzen oder könnte man sowas auch mit PHP machen? Wäre einfacher, da nicht alle Benutzer, das auch können mit FTP-Programm umgehen.

Gibt es da schon fertige Codes für ein FTP-Programm für PHP, wo sehr einfach zu handhaben ist?

wolles
26.02.2005, 14:22:19
Das Hochladen selber kannst Du einfach mit HTML erledigen. (Formular mit Upload-Button), die datei wird dann mit php weiterverarbeitet.
Schau mal unter Copy (http://www.selfphp.info/funktionsreferenz/dateisystem_funktionen/copy.php) nach, da ist ein kleines Beispiel, wie's gemacht wird.
Danach würde ich auch mit file() weiterarbeiten, wie Volti geschrieben hat.

Mit FTP für Benutzer zum Hochladen kenn ich mich auch nicht aus.

Aber woher weißt Du, daß die Dateien, die vom User kommen, auch die richtige Struktur haben?
Die können ja egal was hochladen, Du willst ja die Daten sauber in die Datenbank bekommen und wahrscheinlich auch später irgendwo ausgeben.

Ach so, fertige Scripte findest Du leicht durch googeln

BenjaminG
26.02.2005, 21:02:32
ich muss glaube ich ein bisschen weiter ausholen.

Vielleicht hat schon jemand vom DFBnet gehört? Das ist die Datenbank wo alle Ergebnisse der Staffeln abfragen kann.

Ich bin gerade dabei, die Überwachung der zuspät gemeldeten Ergebnisse zu vereinfachen. Deshalb könnte man die Programmierer von DFBnet dazu bringen, mir die Daten als Download-Link bereitzustellen. Da wird dann eine TXT-Datei oder ein anderes Format erstellt.

Diese Datei möchte ich dann weitervearbeiten oder die anderen Nutzer, die dafür Rechte haben. Das geht schneller, als jede Partie, die zuspät gemeldete wurde, selbst einzutippen.

Deshalb möchte ich den ganzen Programmablauf vereinfachen, das man nicht mehr soviel zu tun hat.

Hoffe ich konnte jetzt mein Anliegen erklären.

Also, das heißt ich muss die TXT-Datei mit HTML auf den Server hochladen und dann mit file oder sonstigen Funktionen, die Daten auslesen?

ich habe mir das Beispiel von dem Link angeschaut, aber irgendwie werde ich aus dem Beispiel nicht schlau.

<?PHP
if(!empty($file_name)){
if(@copy($file,"tmp/$file_name")){
echo "<b>Upload beendet!</b><br>";
echo "Dateiname: $file_name";
echo "<br>";
echo "Dateigröße: $file_size Byte";
}
}
else{
?>
<html>
<head>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" enctype="multipart/form-data" method="post" action="index.php">
<p>
<input type="file" name="file">
<br>
<input type="submit" name="Abschicken" value="Download beginnen">
</p>
</form>
</body>
</html>
<?PHP
}
?>


Bei dem FORM-Tag, welcher Dateiname muss da hin? Muss ich die Datei index.php nennen, dass das funktioniert? Oder muss der Dateiname gleich dem ACTION sein?

xabbuh
26.02.2005, 21:14:36
Hier (http://php-faq.de/q/q-formular-upload-php4.html) kannst du nachlesen, wie du eine Datei mit HTML-Formularen hochladen kannst, die du dann anschließend mit den Funktionen des Dateisystems (http://de3.php.net/manual/de/ref.filesystem.php) von PHP weiterverarbeiten kannst.

wolles
26.02.2005, 21:18:18
Hm bin nicht sicher,ob ich's richtig versteh.
Also, die Leute von DFBnet stellen dir die Daten als Downloadlink zur Verfügung.
Heißt das, daß sie die txt (oder was auch immer )-Datei erstellen, die auf Ihrem Server speichern und Dir den Link zu der Datei zuschicken?
Wenn das so ist, dann könntest Du ja direkt mit Deinem Script auf die Datei zugreifen und sie entsprechend weiterverarbeiten.

BenjaminG
26.02.2005, 21:25:26
werde mich nächste Woche in die Thematik einarbeiten.

Kann euch dann erst bescheid geben, ob ich Fragen habe, da ich unter der Woche kein Internet habe im Wohnheim!

aber ich habe bestimmt fragen.

Ich kann so ein Upload auch mit XAMPP simulieren bzw. testen?

müsste doch auch funktionieren?

wolles
26.02.2005, 21:30:53
Müsste gehen, kenn zwar XAMPP nicht, dürfte aber nicht anders als bei anderen Servern funzen.

Viel Erfolg.

BenjaminG
26.02.2005, 21:36:58
@wolles

ich muss die Datei erzeugen lassen und ich kann diese dann nur Downloaden, weil diese nicht bei denen gespeichert wird. Verstanden?

wolles
26.02.2005, 21:46:24
Nee, es sei denn, Du meinst gerade uploaden statt downloaden, dann hab ich's glaub ich.
Weil, wenn Du sie irgendwo downloaden kannst, ist sie ja auch irgendwo gespeichert.

BenjaminG
26.02.2005, 21:51:40
auch wenn ich die Datei selbst erzeuge? Wusste ich gar nicht! Man lernt immer dazu!

Aber dann die richtige Datei herauszufinden, die ich benötigte wird zu schwer sein, deshalb auf seinen PC herrunterladen und dann wieder Upload auf den Server, das ist denke ich am einfachsten.

xabbuh
26.02.2005, 21:54:31
Weil, wenn Du sie irgendwo downloaden kannst, ist sie ja auch irgendwo gespeichert.
Das ist so nicht ganz richtig. Die Datei kann auch durchaus nur zum Download aus Datebankdaten erzeugt werden: http://php-faq.de/q/q-datei-download.html

wolles
26.02.2005, 22:10:53
auch wenn ich die Datei selbst erzeuge?

Hm, ich glaub, ich verstehe immer weniger.

Aber dann die richtige Datei herauszufinden, die ich benötigte wird zu schwer sein, deshalb auf seinen PC herrunterladen und dann wieder Upload auf den Server, das ist denke ich am einfachsten.

Ich glaub, ich sitz heute schon zu lange vor dem Rechner ums noch zu verstehen. Ich vermute aber mal, daß es für Dich vom Prinzip klar ist.
Die Details kommen dann ja wahrscheinlich nächste Woche.

Domi
28.02.2005, 14:01:37
Ich wollte mal anmerken, dass es mit XAMPP geht und das ich XAMPP auf jeden Fall empfehle wenn du kein Internet hast. Auch ich mache meine Scripte immer zuerst mit XAMPP bevor ich sie hochlade.

GreeTz Domi

xabbuh
28.02.2005, 14:15:05
Hier (http://www.bazzinet.info/Webserver.html) gibt es auch eine anz gute Anleitung zum Aufsetzen einer funktionierenden Arbeitsumgebung abseits von XAMPP unter Windows.