tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
398
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    freihsve freihsve ist offline Mitglied
    Registriert seit
    Aug 2004
    Beiträge
    10
    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 per
    PHP-Code:
    explode(",""test.txt"); 
    zu zerlegen, in einen Array zu schreiben und den Array danach nach Datum zu sortieren und danach auf der Page auszugeben.

    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.
     

  2. #2
    Registriert seit
    Oct 2005
    Beiträge
    277
    Hi,
    zeig doch mal genau, wie deine Textdatei aufgebaut ist.
    Ist in der Datei nur eine Zeile, oder mehrere?

    schiese
     

  3. #3
    freihsve freihsve ist offline Mitglied
    Registriert seit
    Aug 2004
    Beiträge
    10
    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.
     

  4. #4
    akkie akkie ist offline Mitglied Gold
    Registriert seit
    Feb 2003
    Beiträge
    185
    Hi

    http://de2.php.net/file
    http://de2.php.net/fgets

    Ein Blick in die Doku hätte dir sofort weiter geholfen.

    Mfg Akkie
     

  5. #5
    freihsve freihsve ist offline Mitglied
    Registriert seit
    Aug 2004
    Beiträge
    10
    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
     

  6. #6
    akkie akkie ist offline Mitglied Gold
    Registriert seit
    Feb 2003
    Beiträge
    185
    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.

    PHP-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];

    Mfg Akkie
     

  7. #7
    freihsve freihsve ist offline Mitglied
    Registriert seit
    Aug 2004
    Beiträge
    10
    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
     

  8. #8
    akkie akkie ist offline Mitglied Gold
    Registriert seit
    Feb 2003
    Beiträge
    185
    Achso. Ich dachte das Datum währ das Datum des Eintrages.

    Dann musst du array_multisort nehmen.

    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($dateSORT_ASC$nameSORT_ASC$stateSORT_ASC$index); 
    Ich glaube so oder so ähnlich müßte das hinhauen.

    Du musst das Datum als timestamp speichern sonst sortiert er es nicht richtig.

    Mfg Akkie
    Geändert von akkie (26.09.06 um 20:49 Uhr)
     

  9. #9
    freihsve freihsve ist offline Mitglied
    Registriert seit
    Aug 2004
    Beiträge
    10
    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:
    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($dateSORT_ASC$nameSORT_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>&nbsp;</td><td>".$name[$i]."</td><td>&nbsp;</td><td>".$state[$i]."</td></tr>";
                }
                else{
                    echo 
    "<tr bgcolor=\"#EEEEEE\"><td>".$date[$i]."</td><td>&nbsp;</td><td>".$name[$i]."</td><td>&nbsp;</td><td>".$state[$i]."</td></tr>";
                }
            }
            echo 
    "<table>";
        } 
    // Ende function 
    So, ich hoffe ich konnte heute nach all meinen Fragen auch noch meinen Teil zum Forum beitragen.
    Danke an alle die mir geholfen haben.
     

  10. #10
    freihsve freihsve ist offline Mitglied
    Registriert seit
    Aug 2004
    Beiträge
    10
    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

  1. Array von je einem String und einem Double
    Von Jellysheep im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 5
    Letzter Beitrag: 06.01.10, 11:37
  2. [C++] String einem nummerisches Array zuweisen
    Von crazy_root im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 28.09.08, 11:17
  3. String in einem Array speichern
    Von untread im Forum VisualStudio & MFC
    Antworten: 7
    Letzter Beitrag: 28.12.05, 19:50
  4. Array und String in einem?
    Von Azamur im Forum PHP
    Antworten: 0
    Letzter Beitrag: 24.03.05, 18:08
  5. Antworten: 3
    Letzter Beitrag: 04.11.04, 14:31