Ankündigung

Einklappen
Keine Ankündigung bisher.

daten in einer text datei speichern

Einklappen

Neue Werbung 2019

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

  • daten in einer text datei speichern

    huhu,
    ich möchte mich nun mit text datenbanken etwas beschäftigen, weil ich immer nur mysql db's benutzt hatte.

    zu erzeugen ist eine text.txt datenbank wo:
    1. den neuesten eintrag an erstern stelle schreibt
    2. jeder eintrag in einer neuen zeile gespeichert wird

    ich zeig euch mal was ich gebaut habe (an code)
    wäre nett wenn ihr mir verratet was am besten zusammen passt (an code) denn ich weiss nicht ob ich z.b. fwrite() oder fputs() etc. nehmen soll.

    PHP-Code:
    $eintrag "$_POST[name] | $_POST[email] | $_POST[hp] | $_POST[text]\n";

                
      
    $datei="db.txt";
      
    $daten=file($datei);
      
    $count=count($daten);
      
    $fb=fopen($datei"r+");  
      
    rewind($fb);
      
    fwrite($fb$eintrag);
      
      for (
    $x 0$x $count$x++) {
          
    fwrite($fb$daten[$x]);
          }
      
      
    fclose($fb); 
    mit dem code macht er mir aber nicht bei $eintrag am ende den zeilenumbruch sondern schreibt weitere posting hinten dran.

    was habe ich falsch gemacht / oder vergessen?

  • #2
    Grundsätzlich sehe ich keinen Fehler. Allerdings würde ich, wenn schon, die Datei zum Schreiben öffnen (fopen('db.txt', "w"), wenn ich nur schreibe. Die frage ist allerdings, ob es Sinn macht, die Datei bei jedem neuen Eintrag neu zu erstellen, statt den neuen Eintrag ans Ende zu schreiben und die Daten dann in umgekehrter Reihenfolge auszugeben. Also (Eingabe):
    PHP-Code:
    $eintrag "$_POST[name] | $_POST[email] | $_POST[hp] | $_POST[text]\n";    
       
    $datei "db.txt";
    $fb fopen($datei"a");  
    fwrite($fb$eintrag);
    fclose($fb); 
    (Ausgabe):
    PHP-Code:
    $datei "db.txt";
    $daten file($datei);
    $count count($daten) - 1;
      
    for (
    $x $count$x >= 0$x --) 
    {
          echo 
    $daten[$x] . "
    "
    ;

    Gruss
    L

    Kommentar


    • #3
      also du hast mit dem "a" recht, das ist besser so. mein aller erstes script - dort habe ich "r+" gebraucht, hab es aber dann umgeändert zu meinem obrigen script.

      nun habe ich mal deinen code eingebaut und vom prinzip her hat sich nichts geändert nur, das der neuste eintrag am ende nun steht, aber noch immer wird nach jedem eintrag kein zeilenumbruch in der db.txt gemacht es gibt also nur eine zeile wo endlos lang ist (wird).

      wie kann ich den erzwingen? mit \n oder
      geht es nicht.

      Kommentar


      • #4
        PHP-Code:
        <?php

        $eintrag 
        $_POST['name']."|".$_POST['email']."|".$_POST['hp']."|".$_POST['text']."\n";     
            
        $datei "db.txt"
        $fb fopen($datei"a");   
        fwrite($fb$eintrag); 
        fclose($fb); 

        ?>

        Kommentar


        • #5
          hey eine gute idee, aber auch das hat nicht den zeilenumbruch gemacht

          und das auch nicht
          PHP-Code:
          $eintrag "\n".$_POST['name']."|".$_POST['email']."|".$_POST['hp']."|".$_POST['text']."\n"

          Kommentar


          • #6
            Bist du ganz sicher, dass du die "\n" in doppelte Anführungszeichen geschrieben hast? Dann muss es irgendwo an den Einstellungen liegen. Probier mal das folgende Script aus:
            Code:
            $fp = fopen('test.txt', 'w');
            fwrite($fp, "a\nb\nc\nd\ne\n");
            fclose($fp);
            Das produziert bei mir eine Datei mit
            Code:
            a
            b
            c
            d
            e
            unabhängig vom Browser. Wenn du die Datei im Browser ausgeben willst, musst du natürlich, wie in meinem Beispiel, die Zeilenende mit "
            " ersetzen, oder nl2br() verwenden
            Gruss
            L

            Kommentar


            • #7
              @ lazydog

              ich kann das garnicht glauben!!


              Probier mal das folgende Script aus:

              Das produziert bei mir eine Datei mit ...
              wenn ich genau dein script in ne extra testseite stecke und im browser aufrufe wird genau folgendes in die datei geschrieben: (nur) ੥ ੥ ੥ ੥ ੥
              5 rechtecke, aber keine buchstaben und nicht mal untereinander.

              wie gibt es sowas? auf meinem pc geht es nicht und auf dem webspace macht er genau die gleichen rechtecke
              es ist sehr frustrierend
              wie kann das sein? bei mir gehts nicht

              Kommentar


              • #8
                Zitat von kain
                wie kann das sein? bei mir gehts nicht
                Das liegt dann an Dir. Wenn Dein Texteditor nur Windows ENTER (CR/LF = \r\n) kennt und darstellen kann, dann solltest Du das berücksichtigen.

                Kommentar


                • #9
                  Ich hab das gleiche Problem, dass mir anstelle des Zeilenumbruches nur das typische "ich kenn das zeichen nicht"-Rechteck angezeigt wird.

                  verwendet habe ich \n, gibt's da eine Alternative ? Wenn ja, könnte mir diese jemand mal darlegen ?

                  danke.

                  Kommentar


                  • #10
                    Die Antwort steht ja im Beitrag vorher:
                    • Unix: \n
                      Windoof: \r\n
                      Mac: \r
                    Gruss
                    L

                    Kommentar


                    • #11
                      ah gut, danke. ich wußte nicht ganz, wie ich diese zeile interpretieren sollte
                      "ENTER (CR/LF = \r\n)"

                      nun hab ich's, danke.

                      Kommentar


                      • #12
                        Du benutzt einen Editor, der zu dumm ist, das Unix-Format zu erkennen. Mit \n steht ein Zeilenumbruch in der Datei. Liest du diese mit file ein, bekommst du ein Array mit den Zeilen.

                        Gruß
                        phpfan

                        Kommentar


                        • #13
                          jup, aber es geht ja im wesentlichen nicht um mich, sondern um die nutzer meines scriptes.
                          diese sollen ja in erster linie etwas davon haben.

                          und da windoof nun mal beim standard endnutzer zuhause auf dem schreibtisch steht, muss das halt unter windoof laufen.

                          danke noch mal ich arbeite einfach zu wenig mit files, muss ich mir wohl wirklich mal alles näher anschauen.

                          Kommentar

                          Lädt...
                          X