Ankündigung

Einklappen
Keine Ankündigung bisher.

In der Textdatei wird alles überschrieben.

Einklappen

Neue Werbung 2019

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

  • In der Textdatei wird alles überschrieben.

    Hallo an alle

    Hab vor paar Tagen dieses Forum gefunden und habe mich nun hier angemeldet.

    Ich arbeite momentan an meinem PhP-Script aber komme einfach nicht weiter.

    Was soll mein PhP-Script machen?

    1. Es gibt 2 Seiten auf der ersten Seite soll man in Feldern was eintragen können. Was dort auch wieder ausgegeben wird. Auf der zweiten Seite sollen nur die If-Abfragen etc. laufen.
    2. Das eingetragene soll in Textdateien geschrieben und gespeichert werden. (Aber alle in eine Textdatei).
    3. Wenn ein Feld nicht ausgefüllt wird sollen die Daten jedoch nicht überschrieben werden.

    Bsp: Feld1 = Hallo
    Feld2 = Welt

    Nun wird was neues eingetragen.

    Bsp: Feld1 = schöne
    Feld2 =

    Nun soll als Ausgabe folgendes stehen:

    Feld1 = schöne
    Feld2 = Welt

    So bisher funktioniert alles bis auf mein Beispiel
    Der überschreibt alles. Wenn Feld2 was geschrieben wird dann wird Feld 1 überschrieben.

    Seite 1:

    PHP-Code:
    <html>
     <head>
      <title>Angaben speichern</title>
     </head>
    <body>

    <fieldset>
     <legend>Formular</legend>

    <form action="test2.php" method="post">
    <input type="Text" name="test1" style="width:90px;height:25px;"><br>
    <input type="Text" name="test2" style="width:90px;height:25px;">

    <input type="Submit" value="Speichern" style="width:100px;height:25px;">


    <?php


    echo "</br></br>";
    $datei "zusammen.txt"// Name der Datei
                        
    $array file($datei); // Datei in ein Array einlesen
                        // Zeile 0 wird ausgegeben
                        // (das Array fängt mit dem Zählen bei 0 an)
                        
    echo $array[0];
                        echo 
    "</br></br>";
                        echo 
    $array[1];
                        echo 
    "</br></br>";
                        echo 
    $array[2];
                        echo 
    "</br></br>";
                        echo 
    $array[3];
                        echo 
    "</br></br>";
                        echo 
    $array[4];

    ?>
    Seite 2:

    PHP-Code:
    <?php
        
                
    // Gesendete Formularangaben zusammenfügen
            
    $text $_POST["test1"] . "\n" 
            
    $_POST["test2"] . "\n" 
            
    $_POST["test3"] . "\n";

        

        if (
    $_POST['test1'] != '')
        {
            
    $datei=$_POST['test1'];
            
    $dtrainer fopen("zusammen.txt","w+"); // Datei oeffnena
            
    fwrite($dtrainer$test1); // Datei schreiben
            
    fputs($dtrainer"\n"); // Zeilenumbruch
            
    fClose($dtrainer); // Datei schliessen
        
    }    
            
        if (
    $_POST['test2'] != '')
        {
            
    $datei=$_POST['test2'];
            
    $dtrainer fopen("zusammen.txt","a+"); // Datei oeffnena
            
    fwrite($dtrainer$test2); // Datei schreiben
            
    fputs($dtrainer"\n"); // Zeilenumbruch
            
    fClose($dtrainer); // Datei schliessen
        
    }
    Ich habe da schon sehr viel ausprobiert aber habe nix hinbekommen

  • #2
    Hi,

    kleines Beispiel:

    PHP-Code:
    $datei file('test.txt');
    echo 
    $datei[2]; // Gibt Zeile 2 aus die du bearbeiten & zurück schreiben kannst 
    mfg Wolf29

    Kommentar


    • #3
      Das ist ziemlicher Unfug aus logischer Sicht. Woher soll PHP wissen, dass du Daten ergänzen möchtest? Das, was du in test2.php machst, ist das Schreiben der Datei. Und genau das passiert.
      Also: 1. Überlegen was du tun müsstest.
      Antwort: Beispielsweise Datei einlesen, ändern, zurückschreiben

      Kommentar


      • #4
        Ja hab ich ja auch schon rumprobiert.
        Sry hab da so viel getestet das ich natürlich nicht alles was ich so getestet habe hier rein geschrieben habe

        Das zurückschreiben ist mir allerdings neu. Ich werde mal schauen ob ich damit was anfangen kann danke

        Und sry Arbeite erst seit paar Tagen mit Php

        Kommentar


        • #5
          Beim Öffnen der Datei auf den richtigen Modus achten:
          PHP-Code:
           fopen("zusammen.txt","w+"); 
          'w+' Zum Schreiben und Lesen geöffnet; platziere Dateizeiger auf Dateianfang und kürze die Datei auf eine Länge von 0. Existiert die Datei nicht, versuche, diese zu erzeugen.
          http://de3.php.net/manual/de/function.fopen.php

          Kommentar


          • #6
            Die Grundvoraussetzung zum Programmieren ist logisches Denkvernögen. Das hat mit PHP erst einmal absolut nichts zu tun. Es gibt zig Wege das zu lernen oder zu visualisieren (Nasi-Schneidermann, was weiss ich womit man mich mal vor 20 Jahren geqäult hat, habs verdrängt). Aber allem ist gemeinsam, dass man ein Problem in Teilschritte logisch zerlegt.
            Und diese Teilschritte sind dann einzelne Abschnitte oder Befehle in deinem, Programm.

            Du hast oben nur den Teilschritt: Datei schreiben. Heisst im Umkehrschluss: egal ob die Datei existiert oder nicht, sie wird überschrieben.

            Also: Logische Abfolge in deinem Programm:
            1. Existiert Datei? Ja /Nein.
            2. Wenn Ja, dann:
            2.1 Alte Datei einlesen und Werte merken
            2.2 Werte aus dem $_POST übertragen und dabei nur die Werte eintragen, die geändert wurden
            2.3 Alle Inhalte in die Datei schreiben
            3. Wenn Nein, dann:
            3.1 Werte aus dem $_POST übertragen und dabei alle Werte übernehmen
            3.2 Alle Inhalte in die Datei schreiben


            Das gilt es nun in ein Programm zu übersetzen.

            Davon abgesehen: Gewöhne dir von Anfang an folgendes an:
            a) am Beginn des Scriptes error_reporting(E_ALL);

            b) if (isset($_POST['test1']) && !empty($_POST['test1'])) {
            .....
            }

            c) Never trust the client. Sprich: Immer auf inhaltlichen Sinn prüfen, was da übers Formular übergeben wird. Bei dir ist da inhaltlich nicht viel dahinter. Aber wenn du beispielsweise im HTML-Formular die maximale Länge deines feldes auf 50 zeichen setzt, garantiert dir neimand dass nicht ein böser Bube dir 100 Zeichen da einträgt. Also von vornherein angewhnen: Alles hinterfragen.
            Dazu gehört (sobald du mit Datenbanken arbeitest) das Thema SQL-Injection.

            Kommentar

            Lädt...
            X