fopen, fwrite problem

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

  • fopen, fwrite problem

    Ich habe ein Problem mit der Funktion fopen. Eien Datei (chmod 777) namens thread.txt besteht bereits. Ich öffne sie mit

    PHP-Code:
    $datei 'thread.txt';
    $fp fopen($datei,"w"); 
    später schreibe ich in einer While Schleife so in die Datei:

    PHP-Code:
    [...]
    $komplett $anhang $anhang2 $anhang3;
    fwrite($fp,$komplett); 
    Wenn ich danach die datei aufrufe ist diese leer. Wenn ich die datei aber mit:
    PHP-Code:
    $datei 'thread.txt';
    $fp fopen($datei,"a"); 
    (also mit dem Parameter a kann ich in die Datei schreiben. Problem beim nächsten aufruf der Seite wird der Text von der While schleife nur unten angehängt anstatt oben die Datei zu löschen und wieder von vorne einzutragen...

    Wo ist mein Denkfehler?

  • #2
    Wo ist mein Denkfehler?
    Schreib den fwrite() mal ausserhalb der while-Schleife. Innerhalb der Schleife setzt du nur den String zusammen und schreibst diesen ausserhalb der Schleife in die Datei.

    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


    • #3
      Die Datei ist leer... wenn ich mit dem attribut w arbeite.. mit attribut a schreibt er mir die datei wunderschön wenn es in der schleife ist... nur leider löscht er die vorhandene nicht...

      Kommentar


      • #4
        mit attribut a schreibt er mir die datei wunderschön wenn es in der schleife ist... nur leider löscht er die vorhandene nicht...
        Der Parameter a heisst append und da ist nix mit überschreiben...
        Aber zeigt mal die Schleife wo du den String zusammenstellst und in die Datei schreibst...

        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


        • #5
          Hier mal der Code ..
          PHP-Code:
                  $datei 'thread.txt';
                  
          $fp fopen($datei,"a");
                  while(
          $row mysql_fetch_array($inhaltdatei)){
                      
          $inhalt_user mysql_query("select * from users where UserID='".$row["uid"]."'");
                      
          $iu mysql_fetch_array($inhalt_user);
                      
          $text str_replace($such,$mach,$row["text"]);
                      
          $anhang "\n";
                      
          $anhang2 "".$iu["UserName"]."\n".$row["date_f"]."\n";
                      
          $anhang3 "\n".$text."\n\n\n\n";
                      
          $komplett $anhang $anhang2 $anhang3;
                      
          fwrite($fp,$komplett);;
                  } 
          Die Anhänge sidn etwas gekürzt, die arrays für str_replace hab ich weggelassen..., wie auch die mysql_querys

          Kommentar


          • #6
            Probier das mal
            PHP-Code:
            $komplett ''//ausserhalb der Schleife
            [...]
            while(....
                
            $komplett .= $anhang $anhang2 $anhang3;
            }
            //Schleifen Ende
            fwrite($fp,$komplett); 
            Wenn du den fwrite() in der Schleife machst, dann überschreibt der bei jedem Durchlauf den Inhalt der Datei durch $komplett.

            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


            • #7
              Die .txt Datei bleibt weiterhin leer. (Ausser ich arbeitet mit a ^^ ). Gibt es eine Möglichkeit das beim Aufruf der Seite die Datei zuerst gelöscht wird und erst dann reingeschrieben? Somit könnte man das Problem umgehen.

              Kommentar


              • #8
                Die .txt Datei bleibt weiterhin leer.
                Dann hat aber $komplett keinen Inhalt. Mal ein var_dump($komplett) gemacht ?
                Du könntest die Datei natürlich zuerst löschen unlink() und dann mit dem Parameter a wieder eine neue erstellen.

                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


                • #9
                  $komplett ist nicht leer. (var_dump sagt das jedenfalls), und wenn ich ja mit parameter a arbeite schreibt er ja ^^

                  Beim unlink() kommt folgendes:
                  Warning: unlink(thread.txt): Permission denied in [..] on line 1522

                  Kommentar


                  • #10
                    schreib doch mal deinen code um, wie es jahlives oben schon geschrieben hat:
                    PHP-Code:
                    $komplett ''//ausserhalb der Schleife
                    [...]
                    while(....
                        
                    $komplett .= $anhang $anhang2 $anhang3;
                    }
                    //Schleifen Ende
                    fwrite($fp,$komplett); 

                    Kommentar


                    • #11
                      hab ich schon .. txt datei blieb leer..

                      Kommentar


                      • #12
                        habs gerade mal getestet, das hier funktioniert bei mir:
                        PHP-Code:
                        $fp=fopen('test.txt''w');

                        for(
                        $i=0$i<10$i++)
                         
                        fwrite($fp$i);

                        fclose($fp); 
                        bei dir?

                        noch einen dirty workaround, wenn du die datei schon nicht löschen kannst, vor der whileschleife einfach einen leeren string reinschreiben

                        Kommentar


                        • #13
                          funktioniert auch ned ..

                          Kommentar


                          • #14
                            maybe SafeMode auf on ??
                            Mach auch mal noch
                            PHP-Code:
                            error_reporting(E_ALL); 
                            als erste Zeile deines Scriptes...

                            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

                            Lädt...
                            X