Textdatei Zeilenumbrüche

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

  • Textdatei Zeilenumbrüche

    Hallo Leute,

    ich habe mal eine kurze Frage. Ich arbeite normal nur mit SQL Datenbanken und habe eigentlich gar keine Ahnung von Textdateien. Habe mich deshalb in Foren (auch hier) bisschen schlau gemacht. Jetzt habe ich etwas ganz nützliches gefunden, wo ich aber noch ein kleines Problem habe.

    Hier erstmal der Code:

    PHP-Code:
    <?php
    $filename 
    'test.txt';
    $somecontent "Füge dies Datei hinzu\n";

    // Sichergehen, dass die Datei existiert und beschreibbar ist
    if (is_writable($filename)) {

        
    // Wir öffnen $filename im "Anhänge" - Modus.
        // Der Dateizeiger befindet sich am Ende der Datei, und
        // dort wird $somecontent später mit fwrite() geschrieben.
        
    if (!$handle fopen($filename"a")) {
             print 
    "Kann die Datei $filename nicht öffnen";
             exit;
        }
        
        

        
    // Schreibe $somecontent in die geöffnete Datei.
        
    if (!fwrite($handle$somecontent)) {
            print 
    "Kann in die Datei $filename nicht schreiben";
            exit;
        }

        print 
    "Fertig, in Datei $filename wurde $somecontent geschrieben";

        
    fclose($handle);

    } else {
        print 
    "Die Datei $filename ist nicht schreibbar";
    }


    ?>
    So, er speichert alles wunderbar in der Textdatei. Problem sind Umbrüche. Ich habe mal geguckt...\n soll für Umbrüche zuständig sein. Aber das auch nur wieder bei der Ausgabe.

    Das was ich brauche ist ein Zeilenumbruch in der Textdatei selbst. Denn zur Zeit speichert er einfach alles hintereinander. Habe auch etwas gesehen mit wordwrap. Aber auch das hilft mir nicht, weil ich dort angeben muss, nach wievielen Zeichen ich den Umbruch haben möchte. Das kann ich aber nicht sagen, da es sich bei der länge immer wieder ändert.

    Könnt ihr mir da helfen?

    mfg

  • #2
    Einfach einen Zeilenumbruch an das Ende des Strings packen:
    PHP-Code:
    $somecontent "Füge dies Datei hinzu
    "

    mfg - sagg

    Kommentar


    • #3
      Das was ich brauche ist ein Zeilenumbruch in der Textdatei selbst.
      da ist ein zeilenumbruch. du darfst dir das nur nicht im notepad ansehen, sondern in einem anderen editor. ansonsten nimm den windows-umbruch \r\n, dann klappt es auch im notepad

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Oha,

        vielen Dank. Na so einfach hab ich mir das aber nicht vorgestellt

        THX

        mfg

        Kommentar


        • #5
          Textdatei auf Windows, Unix(Linux) oder Mac geöffnet ? Jedes BS hat ein anderes Zeichen zum Zeilenumbruch. Also wenn ich ne Textdatei auf meiner Win Kiste mit PHP schreibe dann füge ich "\r\n" ans Zeilenende und wenn ich die Datei mit wordpad öffne sind die Zeilenumbrüche drin.

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Hallo,

            jetzt bin ich doch schon ein ganzes Stückchen weiter, aber leider noch nicht am Ziel. Jetzt habe ich ein kleines Problem. Ich möchte nämlich mehrere Einträge gleichzeitig übergeben können.

            Hier erstmal wieder der Code:

            PHP-Code:
                $p implode(","$_POST['list']);
                
                if (
            $p){
                
            // output of every available post
                        
            $result['posts'] = $db->sql_query("SELECT * " .
                                                        
            "FROM {$basic->dt['logistik']} " .
                                                        
            "WHERE (post_id = (".$p."))");
                                                        
                        
                                                        

                        
            // output post(s)
                        
            for ($loop 0$row['posts'] = $db->sql_fetch_object($result['posts']); $loop++){
                            foreach(
            $row['posts'] as $key => $value)
                                
            $row['posts']->$key str_replace("&amp;""&"htmlentities(stripslashes($value)));
                                
                        
                        echo 
            $p "<br>";
                        
            $filename 'test.txt';
            echo
            "K|{$row['posts']->k_auftragsnummer}|{$row['posts']->k_l_name}|{$row['posts']->k_l_strasse}
            |
            {$row['posts']->k_l_ort}|{$row['posts']->k_l_anrede}|{$row['posts']->k_versandkosten}
            |
            {$row['posts']->k_nachname}|{$row['posts']->k_warenwert}|{$row['posts']->k_gesamtbetrag}
            |
            {$row['posts']->k_land}|{$row['posts']->k_waehrung}|{$row['posts']->k_e_vorname}
            |
            {$row['posts']->k_e_nachname}|{$row['posts']->k_e_strasse}|{$row['posts']->k_e_plz}
            |
            {$row['posts']->k_e_ort}|{$row['posts']->k_r_vorname}|{$row['posts']->k_r_nachname}
            |
            {$row['posts']->k_r_strasse}|{$row['posts']->k_r_plz}|{$row['posts']->k_r_ort}
            |
            {$row['posts']->k_r_anrede}|P|{$row['posts']->p_auftragsnummer}|{$row['posts']->p_positionsnummer}
            |
            {$row['posts']->p_artikelnummer}|{$row['posts']->p_bestellmenge}
            |
            {$row['posts']->p_einzelpreis}|{$row['posts']->p_gesamtpreis}|{$row['posts']->p_mehrwertsteuer}
            |
            {$row['posts']->p_kndartikelbezeichnung}|{$row['posts']->p_freitextoben}|{$row['posts']->p_freitextunten}|

            "
            ;

            // Sichergehen, dass die Datei existiert und beschreibbar ist
            if (is_writable($filename)) {

                
            // Wir öffnen $filename im "Anhänge" - Modus.
                // Der Dateizeiger befindet sich am Ende der Datei, und
                // dort wird $somecontent später mit fwrite() geschrieben.
                
            if (!$handle fopen($filename"a")) {
                     print 
            "Kann die Datei $filename nicht öffnen";
                     exit;
                }
                
                

                
            // Schreibe $somecontent in die geöffnete Datei.
                
            if (!fwrite($handle$somecontent)) {
                    print 
            "Kann in die Datei $filename nicht schreiben";
                    exit;
                }

                print 
            "Fertig, in Datei $filename wurde $somecontent geschrieben";

                
            fclose($handle);

            }

                            */
                                
                                }
                                }
                        else {
                            echo 
            $lang['hacking_attempt'];
                            echo 
            "<BR /><BR /><CENTER><A HREF=\"$url\">{$lang['click_here']}</A>
            {$lang['to_get_passed_on']}</CENTER>";
                        } 

            Das ganze sieht wie folgt aus:

            Ich habe meine Übersichtsseite mit Checkboxes. Da kann ich auch mehrere auswählen. Mit einem Klick sollen dann für jeden Kunden die Beschreibung in die eine TXT gepackt werden.

            Mit einer Person klappt es einwandfrei, bei zwei nicht. Ich habe auch Testausgaben gemacht, ich bekomme die Id's alle gelistet mit einem Komma. (bsp: 3,4)

            Nur Leider speichert er immer nur eine Person in der TXT.

            Hat da jemand vielleicht noch Rat?

            mfg
            Zuletzt geändert von Rafi; 26.04.2007, 17:03.

            Kommentar


            • #7
              Ich habe auch Testausgaben gemacht, ich bekomme die Id's alle gelistet mit einem Komma. (bsp: 3,4)
              dann mach weiter: finde heraus, was die db zurückliefert. schau dir an, wie die zyklen definiert sind und was sich dabei ergibt.

              p.s. ein paar anmerkungen:

              1. such mal nach "strings richtig trennen" im forum.
              2. die syntax der query ist irgendwie unnötig aufgeblasen.
              3. übersetze mal "if($p)" in natürliche sprache. was soll das heißen? du willst doch eigentlich etwas bestimmtes fragen.
              4. $loop wird bei dir nicht verwendet -> while statt for nehmen.
              5. den datei handle in einer schleife öffnen und schließen ist nicht sinnvoll, das geht außerhalb besser/schneller/sicherer.

              Kommentar


              • #8
                Hallo,

                vielen Dank für die Antwort. Ich werde es nachher mal ausprobieren.

                Ich melde mich dann.

                mfg

                Kommentar

                Lädt...
                X