mirc: txt Datei erzeugen

Hallo,

Ich fragte mich ob es möglich ist mit einem Befehl, oder mehreren, eine .txt Datei zu erzeugen. Kann mir einer weiterhelfen?
auf php.net fand ich mit den suchbegriffen "create" und "txt" nichts schlaues.

Mit freundlichen Grüssen

  1. hi,

    Ich fragte mich ob es möglich ist mit einem Befehl, oder mehreren, eine .txt Datei zu erzeugen. Kann mir einer weiterhelfen?

    http://dclp-faq.de/ch/ch-open_exec.html

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. http://dclp-faq.de/ch/ch-open_exec.html

      bin ich blind? ich find da nicht wonach ich gesucht habe ;-) sorry..

  2. Hallo,

    Ich fragte mich ob es möglich ist mit einem Befehl, oder mehreren, eine .txt Datei zu erzeugen.

    Ist es :)

    $handle = fopen("textdatei.txt", "w+");

    http://de.php.net/fopen

    1. $handle = fopen("textdatei.txt", "w+");

      geht ja gar nicht, permieesion denied zeigt es mir dann an, das soll wohl heissen das es die datei noch nicht gibt oder der man die datei nicht lesen darf. Sie existiert also noch gar nicht!

      1. Moin mirc,

        geht ja gar nicht, permieesion denied zeigt es mir dann an, das soll wohl heissen das es die datei noch nicht gibt oder der man die datei nicht lesen darf. Sie existiert also noch gar nicht!

        Nein. Das "w+" bedeutet Datei anlegen. Wenn dann permission denied kommt ( Zugriff verweigert ), bedeutet daß; Du darfst in diesem Verzeichnis keine Datei anlegen.

        Grüsse
        Mike

        --
        Freunde kommen und gehen. Feinde sammeln sich an.
      2. geht ja gar nicht, permieesion denied zeigt es mir dann an, das soll wohl heissen das es die datei noch nicht gibt oder der man die datei nicht lesen darf. Sie existiert also noch gar nicht!

        Hast du denn die Rechte in dem Verzeichnis, in dem die Datei angelegt werden soll, auf CHMOD 777 gesetzt?

        1. Hast du denn die Rechte in dem Verzeichnis, in dem die Datei angelegt werden soll, auf CHMOD 777 gesetzt?

          ne hab ich nicht gemacht..
          aber jetzt! ;-)
          es kommt zwar keine fehlermelung aber es wird auch keine datei erzeugt..

          1. es kommt zwar keine fehlermelung aber es wird auch keine datei erzeugt..

            Also ich habe folgendes Script:

            <?
            $handle = fopen("textdatei.txt", "w+");
            fclose($handle);
            ?>

            und das funktioniert bei mir auch. Hast du vielleicht kein fclose() gemacht?

            1. hi,

              <?
              $handle = fopen("textdatei.txt", "w+");
              fclose($handle);
              ?>
              und das funktioniert bei mir auch.

              Bei mir ebenfalls, wobei es wurscht ist, ob man $handle schreibt (wie im Handbuch vorgeschlagen) oder einen anderen Variablennamen nimmt. Aber, bei der Gelegenheit: mir begegnet manchmal in Scriptsammlungen noch etwas, was ich bisher noch nicht ganz verstanden habe:
                <?
                if (!fwrite($handle, $somecontent)) {
                       print "Kann in die Datei $filename nicht schreiben";
                       exit;
                   }
                ?>
              (nach http://de2.php.net/manual/de/function.fwrite.php) Hier wird genau von dieser if-Bedingung ebenfalls eine Datei angelegt, vorausgesetzt, die beiden anderen Variablen haben Werte und existieren. Was ich nicht ganz nachvollziehen kann, ist dabei die Verneinung mit "!"  -  ich würde da noch ein "else" reinschreiben, um $handle zu öffnen bzw. anzulegen, das ist aber gar nicht nötig. Das vollständige Beispiel findet sich als Beispiel 1 unter der angegebenen Handbuchadresse.
              Irgendwie fehlt mir da ein Stückchen Logik. Ich finde es ja schön, daß das Handbuchbeispiel funktioniert, ich würde bloß gerne wissen wollen, _warum_ es mit dieser Verneinung funktioniert.

              Grüße aus Berlin

              Christoph S.

              1. Hi Christoph!

                <?
                  if (!fwrite($handle, $somecontent)) {
                         print "Kann in die Datei $filename nicht schreiben";
                         exit;
                     }
                  ?>
                (nach http://de2.php.net/manual/de/function.fwrite.php) Hier wird genau von dieser if-Bedingung ebenfalls eine Datei angelegt,

                nein. Das mach ggfs. fopen().

                vorausgesetzt, die beiden anderen Variablen haben Werte und existieren. Was ich nicht ganz nachvollziehen kann, ist dabei die Verneinung mit "!"  -  ich würde da noch ein "else" reinschreiben, um $handle zu öffnen bzw. anzulegen, das ist aber gar nicht nötig. Das vollständige Beispiel findet sich als Beispiel 1 unter der angegebenen Handbuchadresse.
                Irgendwie fehlt mir da ein Stückchen Logik. Ich finde es ja schön, daß das Handbuchbeispiel funktioniert, ich würde bloß gerne wissen wollen, _warum_ es mit dieser Verneinung funktioniert.

                Ist besser am "etwas vollständigeren" Beispiel nachzuvollziehen:

                // Öffne Datei (ggfs. versuchen anzulegen), wenn es nicht klappt
                   // wird der Ausdruck als !FALSE -> TRUE ausgewertet
                   if (!$handle = fopen($filename, "a")) {
                         print "Kann die Datei $filename nicht öffnen";
                         exit;
                   }

                // Schreibe Daten in die Datei, wenn das nicht geklappt hat
                   // wird der Ausdruck ebenfalls als !FALSE -> TRUE ausgewetet
                   if (!fwrite($handle, $somecontent)) {
                       print "Kann in die Datei $filename nicht schreiben";
                       exit;
                   }

                Ich hab jetzt echt ein paar Minuten in der Doku gesucht, aber ich habe irgendwie nicht die Stelle gefunden wo das eindeutig beschrieben wird, ich dachte eigentlich das ständ da irgendwo.

                Jedenfalls wertet "if" ja den Ausdruck zwischen () von rechts nach links aus, um zu testen ob denn der Ausdruck TRUE oder FALSE ergibt. Dabei wird dann auch fopen() bzw. fwrite() ausgeführt. Sollte jetzt fwrite() nicht funktioniert haben, das heißt es ist irgendein Fehler aufgetreten, dann gibt frwite() bekanntlich FALSE zurück. Dann wertet if !FALSE zu TRUE aus, und die Fehlermeldung wird ausgegeben. Sonst gibt fwrite() einen INT Wert zurück, der dann gemäß http://de2.php.net/manual/de/language.types.boolean.php#language.types.boolean.casting in TRUE umgewandelt wird, so dass if !TRUE als FALSE auswertet, die Fehlermeldung wird nicht ausgegeben. Allerdings dürfte es auch eine Fehlermeldung geben, wenn der String der in die Datei geschrieben wird die Länge 0 hat.

                Grüße
                Andreas

                --
                SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/
                1. hallo Andreas,

                  (nach http://de2.php.net/manual/de/function.fwrite.php) Hier wird genau von dieser if-Bedingung ebenfalls eine Datei angelegt,
                  nein. Das mach ggfs. fopen().

                  Öhm ... in dem Handbuchbeispiel ist aber fopen() auch mit einer solchen "Verneinung" belegt, du zitierst es ja selbst:

                  if (!$handle = fopen($filename, "a")) {
                           print "Kann die Datei $filename nicht öffnen";
                           exit;
                     }
                  Jedenfalls wertet "if" ja den Ausdruck zwischen () von rechts nach links aus

                  Richtig, daran denke ich manchmal nicht. Aber irgendwie reicht mir das nicht als Erklärung. Sorry, ich kann das nicht wesentlich genauer erklären bzw. als Frage formulieren. Ich bestreite ja nicht, daß das im Handbuch genannte Beispiel das gewünschte Ergebnis liefert  -  ich kann auch damit arbeiten und es variieren. Aber wirklich _verstanden_ hab ich das halt (immer) noch nicht.

                  Grüße aus Berlin

                  Christoph S.

                  1. Hi!

                    (nach http://de2.php.net/manual/de/function.fwrite.php) Hier wird genau von dieser if-Bedingung ebenfalls eine Datei angelegt,
                    nein. Das mach ggfs. fopen().

                    Öhm ... in dem Handbuchbeispiel ist aber fopen() auch mit einer solchen "Verneinung" belegt, du zitierst es ja selbst:

                    Ja. Damit der Ausdruck den if auswertet nur dann TRUE ergibt, wenn von fopen() FALSE zurückgegeben wird. Und nur wenn der Ausdruck TRUE ergibt, werden die Anweisungen unter if ausgeführt, das heißt Fehler ausgegeben.

                    if (!$handle = fopen($filename, "a")) {
                             print "Kann die Datei $filename nicht öffnen";
                             exit;
                       }
                    Jedenfalls wertet "if" ja den Ausdruck zwischen () von rechts nach links aus

                    Richtig, daran denke ich manchmal nicht. Aber irgendwie reicht mir das nicht als Erklärung. Sorry, ich kann das nicht wesentlich genauer erklären bzw. als Frage formulieren.

                    Also, wenn da sowas steht wie

                    if (!$handle = fopen($filename, "a"))

                    dann passiert folgendes:

                    1. wird fopen() aufgerufen, das heißt die Datei wird in diesem Moment versucht zu öffnen
                    2. wird der Rückgabewert von fopen() der Variable $handle zugewiesen.
                    3. wird der Wert des Ausdrucks  (!$handle) geprüft. Hier wird verzweigt (durch ! genau anders herum als normalerweise):
                    -> ist der Wert von $handle TRUE (oder wird er bei einer automatischen Konvertierung zu TRUE), dann wird die folgende Anweisung übersprungen (denn !TRUE == FALSE).
                    -> ist der Wert von $handle FALSE, dann werden die Anweisungen ausgeführt, die auf if folgen (denn !FALSE == TRUE).

                    In diesem Fall gibt fopen() entweder eine gültige Resource zurück (die Datei wurde in diesem Moment geöffnet), das heißt das Öffnen hat funktioniert, oder eben FALSE, das heißt dass ein Fehler aufgetreten ist. Dieser Rückgabewert wird $handle zugewiesen (wenn fopen() funktioniert hat, enthält $handle also direkt die Verknüpfung mit der Resource). Dann wird der Ausdruck (!$handle) ausgewertet, halt ob TRUE oder FALSE. Wenn $handle eine Resource enthält, wird es gemäß http://de3.php.net/manual/de/language.types.boolean.php#language.types.boolean.casting in TRUE konvertiert, durch ! gibt der gesamte Ausdruck also FALSE zurück -> folgende Anweisung wird übersprungen.
                    Wenn fopen() dagegen FALSE zurück gibt (Fehler...), dann hat $handle den Wert FALSE, wodurch der Ausdruck (!$handle) zu TRUE wird -> die if-Bedingung ist erfüllt -> folgende Anweisung ausführen.

                    Naja, ist echt blöd zu erklären ;-)

                    Ich hoffe Du verstehst es trotzdem.

                    Grüße
                    Andreas

                    --
                    SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/
                    1. hallo Andreas,

                      Also, wenn da sowas steht wie

                      if (!$handle = fopen($filename, "a"))
                      dann passiert folgendes:
                      [...]

                      danke für deine Antwort.

                      Naja, ist echt blöd zu erklären ;-)

                      Und es ist auch echt blöd und sehr schwierig, das Verständnisproblem als Frage zu formulieren.

                      Ich hoffe Du verstehst es trotzdem.

                      Jaein, ich weiß noch nicht genau. Habe aufmerksam gelesen, und ich bin ja auch sonst nicht ganz so verständnislos ... aber ich kenne das schon lange: man weiß, daß eine bestimmte Konstruktion irgendwie "funktioniert" und auch valide Ergebnisse liefert. Man arbeitet auch damit. Nur im _exakten_ Ablauf, was da passiert, hat man es eigentlich nicht so genau kapiert. Mir ist das an manchen Stellen bei PERL so gegangen, früher auch bei Javascript, und vor Jahren auch beim Apache. Irgendwo ist da irgendetwas, was es mir verwehrt, auszusagen, ich hätte es wirklich verstanden. Irgendein klitzekleines Stückchen Logik ...

                      Macht nichts. Irgendwann werde ich das so weit verinnerlicht haben, daß ich gar nicht mehr weiß, worin das Verständnisproblem eigentlich bestand.

                      Ich glaube aber, daß es vielen anderen ähnlich geht: man weiß, daß irgendeine Konstruktion sehr gut funktioniert, man arbeitet damit und hat auch Erfolg, aber es fehlt das allerletzte Stückchen Souveränität gegenüber dem, was man da macht.

                      Grüße aus Berlin

                      Christoph S.

                      1. Hi Christoph!

                        Ich hoffe Du verstehst es trotzdem.

                        Jaein, ich weiß noch nicht genau.

                        Aber Du sagts Du würdest ein "else" erwarten - wieso das? Was hat das mit einem ! im Ausdruck von if zu tun?

                        if (!fputs())

                        Das sagt einfach aus:

                        "Wenn SCHREIBEN nicht funktioniert hat, mache irgendwas"

                        In dem Moment wo man SCHREIBEN "sagt" wird versucht zu schreiben, sollte  es nicht klappen steht da im Prinzip sowas wie if(!FALSE) -> if(TRUE), also wird die folgende Anweisung ausgeführt. Falls es funktioniert, hat, sagen wir es wurden 10 Zeichen geschrieben, steht im Ausdruck: if(! (bool) 10) -> if(!TRUE) -> if(FALSE), also wird die folgende Anweisung nicht ausgeführt.

                        Funktionen werden grundsätzlich während der If-Prüfung ausgeführt, damit man an den Rückgabewert kommt, den man ja für die Auswertung des Ausdrucks benötigt. Das heißt, bei fopen() wird _während_ der Prüfung bereits eien Datei geöffnet und in $handle geschrieben, bei fputs() wird während der Prüfung bereits alles in die Datei geschrieben. BEide Funtionen geben im Fehlerfall FALSE zurück, was durch ! dazu führt dass der Ausdrück von If mit TRUE ausgewertet wird, so dass die "verzweigte" Fehlermeldung ausgegeben wird.

                        Grüße
                        Andreas

                        --
                        SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
              2. Bei mir ebenfalls, wobei es wurscht ist, ob man $handle schreibt (wie im Handbuch vorgeschlagen) oder einen anderen Variablennamen nimmt.

                Das ist eben so ;)
                Du könntest auch ein element eines fünfdimensionalen Arrays nehmen ;)

                Aber, bei der Gelegenheit: mir begegnet manchmal in Scriptsammlungen noch etwas, was ich bisher noch nicht ganz verstanden habe:
                  <?
                  if (!fwrite($handle, $somecontent)) {
                         print "Kann in die Datei $filename nicht schreiben";
                         exit;
                     }
                  ?>
                (nach http://de2.php.net/manual/de/function.fwrite.php) Hier wird genau von dieser if-Bedingung ebenfalls eine Datei angelegt, vorausgesetzt, die beiden anderen Variablen haben Werte und existieren.

                Falsch. Die Datei wieder vom vorhergehenden Befehl fopen angelegt, der auch $handle liefert:

                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;
                   }

                Was ich nicht ganz nachvollziehen kann, ist dabei die Verneinung mit "!"  -  ich würde da noch ein "else" reinschreiben, um $handle zu öffnen bzw. anzulegen, das ist aber gar nicht nötig. Das vollständige Beispiel findet sich als Beispiel 1 unter der angegebenen Handbuchadresse.

                Nun...

                if (!fwrite($handle, $somecontent))

                macht das selbe wie

                $temp = fwrite($handle, $somecontent);
                if(!$temp)

                1. hi,

                  Nun...
                  if (!fwrite($handle, $somecontent))
                  macht das selbe wie
                  $temp = fwrite($handle, $somecontent);
                  if(!$temp)

                  Jajaja, das hab ich mir auch so zusammengereimt. Aber nach der mir bekanntne Logik muß da aufgrund der "Verneinung" doch irgendein "else" folgen, und das tuts nicht. Trotzdem funktioniert das Ganze.

                  Ich habe gelegentlich (auch an anderen Stellen) solche "Verständnisprobleme". Ich kann damit umgehen und mit solchen Konstruktionen arbeiten, aber ich verstehe sie nicht wirklich richtig.

                  Grüße aus Berlin

                  Christoph S.

                  1. Hallo

                    hi,

                    Nun...
                    if (!fwrite($handle, $somecontent))
                    macht das selbe wie
                    $temp = fwrite($handle, $somecontent);
                    if(!$temp)

                    Jajaja, das hab ich mir auch so zusammengereimt. Aber nach der mir bekanntne Logik muß da aufgrund der "Verneinung" doch irgendein "else" folgen, und das tuts nicht. Trotzdem funktioniert das Ganze.

                    Im Endeffekt wird die Ausführung und die Abfrage in einem Zug erledigt.
                    Und nur, wenn die Ausführung der Funktion misslingt, wird die Abfrage
                    bejaht, und eine Fehlermeldung (in einem der Vorpostings so geschrieben) generiert.

                    Tschö, Auge

                    --
                    Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
                    (Victor Hugo)
  3. Moin mirc,

    Ich fragte mich ob es möglich ist mit einem Befehl, oder mehreren, eine .txt Datei zu erzeugen. Kann mir einer weiterhelfen?
    auf php.net fand ich mit den suchbegriffen "create" und "txt" nichts schlaues.

    $Meine_Datei='neue_text_datei.txt';

    $pointer=fopen("$Meine_Datei","w");
    fclose($pointer);

    Nun hast du eine leere Textdatei :-)

    Grüsse
    Mike

    --
    Freunde kommen und gehen. Feinde sammeln sich an.