Whitesnake: Seiten generieren liefert Fehlermeldung

Ich möchte mit diesem Quelltext eine .htm Datei mit einem Zufallsdateinamen generieren.

<?php
$startzeit = time();
$datei = 'themen/'.$startzeit.'.htm';
$handle = fopen ($datei, "w");

$doc=domDocument::loadHTMLFile($datei);
$doc->saveHTMLFile($datei);
?>

Soweit so gut. Generiert wird die Datei auch, nur kommt mir folgende Fehlermeldung:

Warning: DOMDocument::loadHTMLFile() [function.loadHTMLFile]: Document is empty in themen/1104916192.htm, line: 1 in verzeichnis/forenbereichgenerator.php on line 6

Die Dateistruktur ist so, dass der forenbereichgenerator im root liegt, und die Themen in den Ordner themen/ generiert werden sollen.

Weiß jemand wo mein Denkfehler liegt?

  1. du öffnest eine _leere_ Datei zum Schreiben:

    $handle = fopen ($datei, "w");

    während sie offen ist, machst du dieses (kenne ich nicht):

    $doc=domDocument::loadHTMLFile($datei);
    $doc->saveHTMLFile($datei);

    ich denke, du kannst keine Datei unter demselben Namen schreiben, unter dem du sie offen hälst.

    Oder: PHP schliesst den $handle selbstständig (du machst es ja nicht) und überschreibt dabei die bereits gespeicherten Daten ...

    LG Kalle

    1. Hab den Quelltext folgerdermaßen erweitert:

      $startzeit = time();
      $datei = 'themen/'.$startzeit.'.htm';
      $handle = fopen ($datei, "w");
      fclose($handle);
      $doc=domDocument::loadHTMLFile($datei);
      $doc->saveHTMLFile($datei);

      Liefert mir aber nachwievor die Fehlermeldung

      Warning: DOMDocument::loadHTMLFile() [function.loadHTMLFile]: Document is empty in themen/1104917542.htm, line: 1 in Verzeichnis/forenbereichgenerator.php on line 37

      loadHTMLFile öffnet übrigens eine Datei, damit man sie mittels DOM vom Inhalt ändern kann, mittels saveHTMLFile speichere ich sie wieder ab.

    2. Hallo erstmal!

      du öffnest eine _leere_ Datei zum Schreiben

      richtig, und bitte was soll aus der geladen werden?

      $doc=domDocument::loadHTMLFile($datei);

      Die Methode loadHTMLFile() verlangt nicht nach einem Sourcenhandler, sondern nach einem String, der eine Datei umschreibt.

      $doc->saveHTMLFile($datei);

      wie loadHTMLFile()

      Gruß aus Berlin!
      eddi

      1. Hallo!

        Die Methode loadHTMLFile() verlangt nicht nach einem Sourcenhandler, sondern nach einem String, der eine Datei umschreibt.

        Komando zurück, mein Fehler!

        Gruß aus Berlin!
        eddi

      2. Ich habs jetzt auf

        $startzeit = time();
        $datei = 'themen/'.$startzeit.'.htm';
        $handle = fopen ($datei, "w");
        fclose($handle);
        $doc=domDocument::loadHTMLFile('themen/'.$startzeit.'.htm');
        $doc->saveHTMLFile('themen/'.$startzeit.'.htm');

        geändert. Die Fehlermeldung bleibt natürlich diegleiche. Ich weiß es ist nachwievor eine Variable drinnen, aber wie soll ich es anders lösen? Ich generiere den Dateinamen zufällig und wie soll ich dann sofort drauf ansprechen, ich weiß ihn ja nicht.

        Was würdest du vorschlagen?

        1. erkläre mir, welcher Inhalt aus einer gerade erstellten Datei geladen werden soll!

          Gruß aus Berlin!
          eddi

          1. Es soll kein Inhalt geladen werden sondern nur die Seite an sich. Ich werde in dieser Seite dann alles angefangen von HTML über die BODY, TITEL, META alles mittels DOM reingenerieren.

            zB

            $bereichdiv=$oversee->createElement('div');
            $haupttable=$oversee->createElement('table');
            $hauptreihe=$oversee->createElement('tr');

            Danach wird das ganze gespeichert mit saveHTMLFile.

            Übrigens drinnen steht nach dem generieren zum ersten Mal folgendes:

            <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

            Tut aber nichts zur Sache. Denn wenn ich den Dateinamen ohne Variable ausschreibe, dann kann ich drauf zugreifen und er zeigt mir keine Fehlermeldung an. Nur ich weiß eben nicht wie ich das umschreiben könnte.

            1. hi,

              Es soll kein Inhalt geladen werden sondern nur die Seite an sich.

              das widerspricht aber deiner vorherigen aussage,

              loadHTMLFile öffnet übrigens eine Datei, damit man sie mittels DOM vom Inhalt ändern kann

              die fehlermeldung besagt doch recht eindeutig, dass loadHTMLFile keine _leere_ datei öffnen mag, sondern bereits einen inhalt erwartet.

              es scheint also, dass du eine für dein vorhaben ungeeignete methode verwendest.

              gruß,
              wahsaga

              --
              "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
              1. Geb dir schon recht, aber direkt nach dem ausführen der Datei kommt die Fehlermeldung, aber wenn ich mir die betreffende Datei anschaue, steht wie gesagt folgendes drinnen:

                <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

                Und das macht die Datei nicht leer. Deswegen versteh ich es nicht.

                1. hi,

                  Geb dir schon recht, aber direkt nach dem ausführen der Datei kommt die Fehlermeldung, aber wenn ich mir die betreffende Datei anschaue, steht wie gesagt folgendes drinnen:

                  steht das da schon vor der ausführung dieses befehls drin, oder erst nach dem abspeichern?

                  gruß,
                  wahsaga

                  --
                  "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                  1. Es steht sofort nach dem

                    $handle = fopen ($datei, "w");
                      fclose($handle); drinnen.

                    Ich habe von einem Kollegen eine andere Methode jetzt bekommen, er meint folgendes:

                    $doc=new domDocument;

                    $rootElement=$doc->createElement("rootNode");
                    $doc->appendChild($rootElement);
                    $doc->saveHTMLFile(date('Y-m-d...     '));

                    Ich denke das müsste auch so klappen oder?

                    MFG WS

                    1. hi,

                      Es steht sofort nach dem

                      $handle = fopen ($datei, "w");
                        fclose($handle); drinnen.

                      da wage ich doch zu bezweifeln, ob das _wirklich_ drin steht, oder ob dir nur dein zur anzeige benutztes programm dies vorgaukelt.
                      hast du die datei wirklich mit einem reinen texteditor auf inhalt überprüft, oder etwa in der quelltextansicht eines browsers?

                      Ich habe von einem Kollegen eine andere Methode jetzt bekommen, er meint folgendes: [...]
                      Ich denke das müsste auch so klappen oder?

                      you'll try, you'll know.

                      gruß,
                      wahsaga

                      --
                      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."