Problem mir fread und so...

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

  • Problem mir fread und so...

    Hallo. Ich arbeite grad an einer Dateiklasse.. (werde sie auch hier posten)

    Hm. Ich poste einfach mal den Codeauschschnitt, der nicht funktionert:

    PHP-Code:
    rewind(fopen($this->folder[$verz].$datei,$this->modes['read']));
                
    $this->inhalt fread(fopen($this->folder[$verz].$datei,$this->modes['read']), filesize($this->folder[$verz].$datei));
                
    $this->neu $this->inhalt."||".$text;
                echo  
    fread(fopen($this->folder[$verz].$datei,$this->modes['read']), filesize($this->folder[$verz].$datei));
                if(!
    $this->write($this->neu,$verz,$datei))
                {
                    
    $this->error "In die Datei <b>".$this->folder[$verz].$datei."</b> konnte nicht geschrieben werden.";
                    return 
    0;
                }
                else
                {
                    return 
    1;
                } 
    Ja. Also um es auf den punkt zu bringen, $this->inhalt bleibt leer, es wird also nur "||$text" in die Datei geschrieben. Es gibt keinen Fehler, in der Datei exisitert Inhalt!
    Findet jemand den Fehler?
    MfG Oli

  • #2
    öfter kannst du die datei nicht öffnen oder?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      ich denke mal, dass $this->inhalt leer bleibt. also muss beim einlesen was in die hose gehen.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        naja, @mrhappiness, leider muss man bei fread() und so immer die Datei öffnen, ich könnte das öffnen höchstens in einer Variable definieren, aber was bringt mir das?

        ja, $this->inhalt bleibt leer, ich weiß aber absolut nicht, wieso...

        Kommentar


        • #5
          1. Fehlt vielleicht das abschließende Slash '/' in $this->folder[$verz]?
          2. Die Variable mit dem Filepointer brauchst Du, um die Datei wieder zu schließen.
          Wenn du das nicht tust, hat das Betriebssystem irgendwann keine freien Filepointer mehr über und dann knallt es!
          sauberer (und übersichtlicher) ist das hier:
          PHP-Code:
          $fp fopen($fn $this->folder[$verz].$datei;
          if (!
          $fp)
          {
            
          $this->error "Aus der Datei <b>$fn</b> "
              
          ."konnte nicht gelesen werden.";
            return 
          0;
          }
          // rewind kannst du dir sparen
          $this->inhalt fread($fp ,$this->modes['read']), filesize($fn));
          fclose($fp);
          $this->neu $this->inhalt."||".$text;
          # Debug: echo $inhalt;
          if(!$this->write($this->neu,$verz,$datei))
          {
            
          $this->error "In die Datei <b>$fn</b> "
              
          ."konnte nicht geschrieben werden.";
            return 
          0;
          }
          else
            return 
          1
          Zuletzt geändert von Titus; 02.10.2003, 14:57.
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            ja ok, habs mal geändert, aber es ist der gleiche Fehler wie zuvor...

            (Übrigens waren in deinem code einige Fehler.. )

            Verflucht, wo ist dieser Fehler?

            Kommentar


            • #7
              Original geschrieben von OliOli
              naja, @mrhappiness, leider muss man bei fread() und so immer die Datei öffnen, ich könnte das öffnen höchstens in einer Variable definieren, aber was bringt mir das?
              du brauchst fread lediglich eine referenz auf eine bereits geöffnete datei zu übergeben.

              bei jedem fread die datei neu zu öffnen, ist unsinn, und performance-mässig harakiri.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                ok, danke, gut zu wissen.

                EDIT:
                @ titus: Nein, das / ist da, er schreibt ja auch schön was in die Datei rein, nur eben nciht alles...
                Zuletzt geändert von OliOli; 02.10.2003, 15:10.

                Kommentar


                • #9
                  ok, Problem gelöst, ich hab die Variable $this->inhalt einfach weggelassen und fread() gleich verwendet.
                  Aber nächste Funktion --> nächster Fehler:

                  Ich schreib mal die ganze Funktion:

                  PHP-Code:
                      // Eine Datei komplett auslesen
                      
                  function read($verz,$datei) {
                          if(!
                  fopen($this->folder[$verz].$datei,$this->modes['read']))
                          {
                              
                  $this->error "Die Datei <b>".$this->folder[$verz].$datei."</b> wurde nicht gefunden oder konnte nicht geöffnet werden. Bitte erstelle sie zuerst mit <b>write()</b>.";
                              return 
                  0;
                          }
                          else
                          {
                              
                  $fp fopen($fn $this->folder[$verz].$datei,$this->modes['read']);
                              return 
                  fread($fpfilesize($fn));
                              
                  fclose($fp);
                          }
                      } 
                  Naja, ganz einfach, sollte eben den Inhalt der Datei ausgeben, macht es aber nicht. Wieder leer. Seht ihr nen Fehler?

                  Kommentar


                  • #10
                    du willst die datei ja schon wieder zweimal öffnen

                    probier's mal so
                    PHP-Code:
                    function read($verz,$datei
                    {
                      
                    $fp fopen($fn $this->folder[$verz].$datei,$this->modes['read']);
                      if (!
                    $fp)
                      {
                        
                    $this->error "Die Datei <b>".$fn."</b> wurde nicht gefunden 
                        oder konnte nicht geöffnet werden. Bitte erstelle sie zuerst 
                        mit <b>write()</b>."
                    ;
                        return 
                    0;
                      }
                      else
                      {
                        
                    $inhalt=fread($fpfilesize($fn));
                        
                    fclose($fp);
                        return 
                    $inhalt;
                      }

                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      habs umgestellt, geht trotzdem nicht...

                      Kommentar


                      • #12
                        kriegst du ne fehlermeldung?
                        wie rufts du das auf?

                        schreib mal error_reporting(E_ALL);vor das $fp = fopen...
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Nix Fehlermeldung auch nicht mit error_reporting

                          möp

                          Kommentar


                          • #14
                            wir rufst du das auf?

                            steht rein zufällig was in $this-error?
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              nein, ich habe auch eine error Funktion, die lasse ich auch anzeigen, gibt aber nichts aus...

                              Kommentar

                              Lädt...
                              X