ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
398
398
EMPFEHLEN
-
Hallo Leute
Ich möchte gerne eine normale Textdatei ("test.txt") auf dem Bildschirm darstellen. Die Datei enthält kommagetrennte Werte (3 Werte pro Eintrag --- Datum,Name,Ja/Nein) welche ich gerne nach Datum sortiert ausgeben möchte.
Meine Idee war nun die Datei perzu zerlegen, in einen Array zu schreiben und den Array danach nach Datum zu sortieren und danach auf der Page auszugeben.PHP-Code:explode(",", "test.txt");
Da ich für dies leider keine Datenbank zur Verfügung habe wusste ich ja schon von Anfang an, dass es etwas kompliziert wird, aber ich bin langsam am Ende meines PHP-Lateins.
Weiss jemand Rat? Ich habe jetzt schon etliche Versuche durch aber keiner klappt so recht.
-
Hi,
zeig doch mal genau, wie deine Textdatei aufgebaut ist.
Ist in der Datei nur eine Zeile, oder mehrere?
schiese
-
Hallo
also meine Textdatei ist wie folgt aufgebaut:
14.10.2006,Fritz Müller,Ja[ZEILENENDEZEICHEN]
28.10.2006,Hans Meier,Ja[ZEILENENDEZEICHEN]
14.10.2006,Hans Meier,Ja[ZEILENENDEZEICHEN]
28.10.2006,Herbert Huber,Ja[ZEILENENDEZEICHEN]
12.12.2006,Fritz Müller,Ja[ZEILENENDEZEICHEN]
Reicht dir das für den Moment?
In die Datei werden einfach immer neue Einträge hinzugeschrieben. Die Ausgabe soll nach Datum sortiert erfolgen.
-
Hi
http://de2.php.net/file
http://de2.php.net/fgets
Ein Blick in die Doku hätte dir sofort weiter geholfen.
Mfg Akkie
-
Hallo Akie
Naja, diese Seiten hab ich mir schon angeschaut, früher schon bei dem Problem um mir Inputs zu holen.
Leider sehe ich da jetzt die Lösung meines Problems nicht ganz...
Meine Schwierigkeit ist, dass ich es nicht gebacken kriege die einzelnen Arrayelemente die explode() erzeugt in einen Array zu verpacken, so dass jedes Element in seinem eigenen Arrayfeld steht.
Mir schwebt da sowas wie ein zweidimensionaler Array vor. Jede Arrayzeile enthält jeweils Datum, Name und den Wert Ja oder Nein. Aber ich krieg das nicht hin diesen zu füllen
-
Hi
Die Einträge in deiner Textdatei sind ja schon nach datum sortiert. Kommt jetzt drauf an ob du die Neusten oder die Ältesten zuerst anzeigen willst.
Mfg AkkiePHP-Code:
$array = file('file.txt');
$array = array_reverse($array); //die neusten zuerst
foreach ($array as $value) {
$data = explode(',', $value);
$datum = $data[0];
$name = $data[1];
$status = $data[2];
}
-
hallo akkie
du übersiehst leider noch etwas. ich kann den array nicht einfach umgekehrt ausgeben. es kann durchaus auch sein, dass es ein datum gibt das nicht genau in reihenfolge steht. die "datümer" können beliebig in die textdatei geschriben werden.
und genau an diesem detail scheitere ich. sonste hätte ich das problem gelöst.
gruss
freihsve
-
Achso. Ich dachte das Datum währ das Datum des Eintrages.
Dann musst du array_multisort nehmen.
Ich glaube so oder so ähnlich müßte das hinhauen.PHP-Code:$array = file('file.txt');
$date = array();
$name = array();
$state = array();
foreach ($array as $value) {
$data = explode(',', $value);
$index[] = array(
'date' => $data[0],
'name' => $data[1],
'state' => $data[2]
);
$date[] = $data[0];
$name[] = $data[1];
$state[] = $data[2];
}
array_multisort($date, SORT_ASC, $name, SORT_ASC, $state, SORT_ASC, $index);
Du musst das Datum als timestamp speichern sonst sortiert er es nicht richtig.
Mfg AkkieGeändert von akkie (26.09.06 um 20:49 Uhr)
-
Hallo an alle
Dank Akkie habe ich das Problem erfolgreich gelöst. Darum poste ich selbstverständlich auch den fertigen PHP-Code für alle die mit dem gleichen bzw. einem ähnlichen Problem zu kämpfen haben.
Wie ich erwähnte habe ich ein Formular, welches in eine normale Textdatei Einträge schreibt. Diese müssen jedoch nicht nach Datum geordnet sein. Daher muss man diese ganzen Formatierungen durchführen.
Hier der Code um die Daten wieder aus der Textdatei auszulesen und sauber darzustellen:
So, ich hoffe ich konnte heute nach all meinen Fragen auch noch meinen Teil zum Forum beitragen.PHP-Code:function zeige_Daten(){
// Anzahl Zeilen ermitteln
$file = file("training.txt");
$anzahl_zeilen = count($file);
// Daten in Array einlesen
$array = file('training.txt');
$date = array();
$name = array();
$state = array();
foreach ($array as $value) {
$data = explode(',', $value);
$date[] = $data[0];
$name[] = $data[1];
$state[] = $data[2];
}
// Array sortieren
array_multisort($date, SORT_ASC, $name, SORT_ASC, $state);
// Ausgabe
echo "<table cellspacing=\"0\">";
for($i = 0; $i < $anzahl_zeilen; $i++){
if(($i % 2) == 0){
echo "<tr bgcolor=\"#CCCCCC\"><td>".$date[$i]."</td><td> </td><td>".$name[$i]."</td><td> </td><td>".$state[$i]."</td></tr>";
}
else{
echo "<tr bgcolor=\"#EEEEEE\"><td>".$date[$i]."</td><td> </td><td>".$name[$i]."</td><td> </td><td>".$state[$i]."</td></tr>";
}
}
echo "<table>";
} // Ende function
Danke an alle die mir geholfen haben.
-
Sorry, dass ich meine Antwort mehrfach eingetragen habe. Gestern abend während ich den Text schrieb gabs wohl Serverprobleme. Ich erhielt nur Fehlermeldungen beim Einfügen. Dachte eigentlich der Server hätte den Text gar nicht akzeptiert.
Sorry Leute
Ähnliche Themen
-
Array von je einem String und einem Double
Von Jellysheep im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 5Letzter Beitrag: 06.01.10, 11:37 -
[C++] String einem nummerisches Array zuweisen
Von crazy_root im Forum C/C++Antworten: 4Letzter Beitrag: 28.09.08, 11:17 -
String in einem Array speichern
Von untread im Forum VisualStudio & MFCAntworten: 7Letzter Beitrag: 28.12.05, 19:50 -
Array und String in einem?
Von Azamur im Forum PHPAntworten: 0Letzter Beitrag: 24.03.05, 18:08 -
Prüfung auf Leerzeichen in einem String Array
Von orchid im Forum JavaAntworten: 3Letzter Beitrag: 04.11.04, 14:31





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren