Probleme mit sortieren einer TXT

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme mit sortieren einer TXT

    hallo,

    ich habe ein script das das mir eine txt anlegt mit folgenden einträgen bzw. hinzufügt...

    das sieht dan so aus...


    $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4
    $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4
    $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4
    $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4

    da das script die neuen datensätze nur anfügt und nicht sortiert habe ich am ende des scriptes eine sortier funktion eingebaut...


    PHP-Code:
    ##### datei wird erweitert ###### 

    $eintrag="$eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4"

    trim($eintrag); 

    $datei fopen($db"a+"); 
    fwrite($datei,$eintrag."\n"); 
    fclose($datei); 


    ########################## 

    ### datei Sortieren ### 

    $sort file($db); 
    sort($sort); 
    $sorted implode(""$sort); 
    $datei fopen($db"w"); 
    fwrite($datei$sorted); 
    fputs($datei); 
    das problem ist jetzt das immer wenn er sortiert eine leerzeile einfügt?
    ich habe dann probiert mit trim() zuarbeiten bekomme das aber nicht hin...

    kann mir jemand helfen?

    dank

  • #2
    Re: Probleme mit sortieren einer TXT

    Original geschrieben von imhotep
    PHP-Code:
    ##### datei wird erweitert ###### 

    $datei fopen($db"a+"); 
    fwrite($datei,$eintrag."\n"); 
    fclose($datei); 
    das problem ist jetzt das immer wenn er sortiert eine leerzeile einfügt?
    PHP-Code:
    fwrite($datei"\n" $eintrag); 

    Kommentar


    • #3
      es geht nicht um die

      ##### datei wird erweitert ######

      die funktion zum erweitern geht einwandfrei aber die datei sortiere
      macht immer leerzeilen in die txt...

      PHP-Code:
      ### datei Sortieren ### 

      $sort file($db); 
      sort($sort); 
      $sorted implode(""$sort); 
      $datei fopen($db"w"); 
      fwrite($datei$sorted); 
      fputs($datei); 

      Kommentar


      • #4
        Original geschrieben von imhotep
        die funktion zum erweitern geht einwandfrei aber die datei sortiere
        macht immer leerzeilen in die txt...
        Du irrst, weil Du beim Erweitern immer eine sinnfreie Leerzeile erzeugst.

        Du mußt nach der letzten Zeile erst einen Zeilenumbruch erzeugen und danach den Text anhängen.

        Kompri?

        Kommentar


        • #5
          habe es mal so probiert...

          danach sieht die txt so aus...

          -----------------------------------------------------------------------------------------
          leer
          leer
          $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4[COLOR=darkblue]$eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4[/COLOR]
          ------------------------------------------------------------------------------------------
          ist ja auch eigendlich klar weil er vor jedem eintag eine "\n" also wollte ich die datei die so aussieht:

          auch nachdem sie erweitert wird...
          -----------------------------------------------------------------------------
          $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4
          $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4
          $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4
          $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4
          -----------------------------------------------------------------------------
          einfach nachträglich sortieren...

          mit der oben genannten funktion.

          Kommentar


          • #6
            warum willst Du sie eigentlich sortieren?
            Mit deinem Sortiervorgehen würde es mich nicht wundern, wenn Du öfters mal ne leere Datei erhälst, sollten mal meherer User darauf zugreifen.
            Sortiere den kram doch bei der Ausgabe oder verarbeitung erst. Oder ist es so wichtig eine sortierte datei zu haben?
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              der script im ersten beitag macht folgendes

              es schreibt die werte die ich über ein formular eingen zeilenweise in eine txt bzw hängt neu beiträge an.

              dadurch sind aber die zeilen nicht sortiert also wollte ich die txt immer sortiern wenn ich einen neuen beitrag dazuschreibe.

              wenn jetzt ander user auf die txt zugreifen ist das eine anderes script das die txt dann so ausliest und wiedergibt wie ich das möchte.

              also die sortierfunktion wird nur benutzt wenn ich einen neuen beitag dazu schreibe...

              dadurch muss die txt nicht jedemal sortiert werden wenn eine user die daten abruft...

              Kommentar


              • #8
                naja wie gesagt Du läufst gefahr dass Deine Datei gelöscht wird wenn mehr user daraufzugreifen und Du belastest das dateisystem unnötig mit deinen schreib aktionen.
                bei der ausgabe das array zu sortieren scheint mir sinnvoller
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  Original geschrieben von imhotep
                  habe es mal so probiert...

                  danach sieht die txt so aus...
                  Du solltest aus der Textdatei schon mal die überflüssigen Zeilenumbrüche entfernen. Und Du solltest auch darauf achten, dies mit einem unix-tauglichen Editor zu tun.

                  Deine Datei sollte so aussehen:
                  Code:
                  $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4\n
                  $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4\n
                  $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4\n
                  $eintrag0|--|$eintrag1|--|$eintrag2|--|$eintrag3|--|$eintrag4
                  Eine neue Zeile mußt Du so erzeugen:
                  1. den Zeilenumbruch: "\n"
                  2. den Text OHNE Zeilenumbruch am Ende!

                  Sonst erhälst Du bei jedem übflüssigen \n nach file() ein leeres Arrayelement.

                  Kommentar


                  • #10
                    ich benutze zuzeit den Editor von Windows und Proton

                    was ist den z.b. unix-tauglichen Editor?

                    aber danke schon mal

                    Kommentar


                    • #11
                      Original geschrieben von imhotep
                      ich benutze zuzeit den Editor von Windows und Proton
                      was ist den z.b. unix-tauglichen Editor?
                      Einer, dem Du sagen kannst, er möchte am Zeilenende ein \n und kein \r\n einfügen (ich kenne Proton nicht).

                      Kommentar

                      Lädt...
                      X