joshua: .txt datei wird nicht erstellt... - warum?

hallo!

ich habe folgendes problem. ich bin gerade dabei ein gästebuch zu programmieren und habe es auch schon etliche male auf fehler untersucht bzw. getestet, aber ich komme nicht auf den fehler drauf.

es soll, wie der titel meines postings schon sagt eine .txt angelegt werden. - aber nichts passiert. ich finde keinen fehler. hier ist der code ausschnitt, um die .txt zu erzeugen:

$text = str_replace($t1, '<br>', $text);
    $text = str_replace($t2, '<br>', $text);
    if(file_exists('gbentr.txt')) { //wenn gbentr.txt existiert, \n ausgeben (parameter)
      $output = "\n";
    }
    $comment = fopen("gbentr.txt", "a+"); //einträge hinten dranhängen
    $output = $output.$name."~".$email."~".$titel."~".$icq."~".$hp."~".$text;
    fputs($comment, $output);
    fclose($comment);
    $name = " ";
    $email = " ";
    $titel = " ";
    $icq = " ";
    $hp = " ";
    $text = " ";
  }

(wobei $t1 und $t2 trennzeichen sind)

kann mir wer von euch weiter helfen?
mlg
 joshua

  1. moin!

    das verzeichnis, in dem die datei erstellt werden soll (in deinem fall das selbe, in dem dein script ausgeführt wird), muss eine schreibberechtigung haben.

    gruß.
    roger.

    --
    Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
    1. moin!

      das verzeichnis, in dem die datei erstellt werden soll (in deinem fall das selbe, in dem dein script ausgeführt wird), muss eine schreibberechtigung haben.

      das hat es doch. ich verwende nämlich ein zweites ähnliches script, welches mir eine .txt erstellt, und dort funktioniert es. - nur hier nicht, obwohl es bis auf ein paar mehrere formularfelder u. sonstige erweiterungen (bb-codes mit preg_replace()) das gleiche ist.

      gruß.
      roger.

      mlg
      joshua

      1. Hello,

        dann schreib an den Anfang Deines Scriptes:

        error_reporting(E_ALL);
        ini_set('track_errors','1');
        $php_errormsg = '';

        und später:

        $fh = fopen($dateiname,'a+');
        if (!$fh)
        {
          echo $php_errormsg;
          exit;
        }

        Dann solltest Du zumindest erstmal wissen, woran es liegen kann.

        Vielleicht ist der Safe Mode für das Verzeichnis aktiviert?

        Welches OS benutze Du und welche Apache und welche PHP-Version?

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. hi!

          habe ich gesehen für die blätterfunktion. - danke!

          dann schreib an den Anfang Deines Scriptes:

          error_reporting(E_ALL);
          ini_set('track_errors','1');
          $php_errormsg = '';

          und später:

          $fh = fopen($dateiname,'a+');
          if (!$fh)
          {
            echo $php_errormsg;
            exit;
          }

          werde ich machen

          Vielleicht ist der Safe Mode für das Verzeichnis aktiviert?

          Welches OS benutze Du und welche Apache und welche PHP-Version?

          zzt arbeite ich auf win xp. apache 1.3.14 php 4.0 (sollte ich mal wieder updaten)

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          1. Hello,

            Welches OS benutze Du und welche Apache und welche PHP-Version?
            zzt arbeite ich auf win xp. apache 1.3.14 php 4.0 (sollte ich mal wieder updaten)

            Aber sofort. Bei php 4.0 können wir uns hier einen Wolf schreiben. das ist ungefähr genaus gut gewesen, wie DOS 4.0 *ggg*

            Harzliche Grüße aus http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Hello,

              Welches OS benutze Du und welche Apache und welche PHP-Version?
              zzt arbeite ich auf win xp. apache 1.3.14 php 4.0 (sollte ich mal wieder updaten)

              Aber sofort. Bei php 4.0 können wir uns hier einen Wolf schreiben. das ist ungefähr genaus gut gewesen, wie DOS 4.0 *ggg*

              *gg*... sry. hatte das völlig übersehen. nun gut also bald hab ich php 5.01

              mlg
               joshua

              1. Hello,

                Welches OS benutze Du und welche Apache und welche PHP-Version?
                zzt arbeite ich auf win xp. apache 1.3.14 php 4.0 (sollte ich mal wieder updaten)

                Aber sofort. Bei php 4.0 können wir uns hier einen Wolf schreiben. das ist ungefähr genaus gut gewesen, wie DOS 4.0 *ggg*

                *gg*... sry. hatte das völlig übersehen. nun gut also bald hab ich php 5.01

                Ich empfehler erstmal PHP 4.3.9.

                Das hat noch volle Unterstützung für MySQL 3.23.x und erfordert keine "Lizenzen" für diese "Datenbankmaschine"...

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. hi!

                  Ich empfehler erstmal PHP 4.3.9.

                  Das hat noch volle Unterstützung für MySQL 3.23.x und erfordert keine "Lizenzen" für diese "Datenbankmaschine"...

                  oh gut...
                  ... download stoppen und neu beginnen *g*

                  joshua

              2. hi!

                mal eine blöde frage:

                funktionieren eigentlich 'normale' php befehle bzw. codes die z.b. auf php 4.3.4 wunderbar funktionieren in php 5 noch?

                bzw. php erkennt folgende variable nicht:

                hab am anfang des formulars ein verstecktes input feld, dass beim drücken des senden buttons das php script aufgerufen wird... so:

                <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" />
                <input type="hidden" name="sent" value="1" />
                <input type="text" name="name" value="<?php echo $name ?>" />
                   .
                   .
                   .
                </form>
                <?php
                error_reporting(E_ALL);
                if($_POST['sent'] == 1) { //wenn 'sent' gleich 1, dann weiter
                  $t1 = chr(10);
                  $t2 = chr(13);
                  $name = $_POST['name'];

                ...
                } usw.

                Warning: Undefined variable: _POST in C:\apache\htdocs\gbform.php on line 70

                warum? - oder liegt das an php 4.0?
                (bis php 5 dauerts mit meinem ISDN halt noch lang... ;-))

                mlg
                 joshua

                1. hi,

                  Warning: Undefined variable: _POST in C:\apache\htdocs\gbform.php on line 70

                  warum? - oder liegt das an php 4.0?

                  letzteres.
                  diese vordefinierten superglobalen arrays gibt es erst ab 4.1.0, siehe http://www.php.net/manual/de/language.variables.predefined.php

                  gruß,
                  wahsaga

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

                    Warning: Undefined variable: _POST in C:\apache\htdocs\gbform.php on line 70

                    warum? - oder liegt das an php 4.0?

                    letzteres.
                    diese vordefinierten superglobalen arrays gibt es erst ab 4.1.0, siehe http://www.php.net/manual/de/language.variables.predefined.php

                    Deshalb schrieb ich auch vom Wolf ;-)

                    Harzliche Grüße aus http://www.annerschbarrich.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
                2. Hallo joshua,

                  auch wenn das Problem schon gelöst ist (und fürs Archiv):

                  <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" />

                  form ist kein leeres Element, außerdem sollte vor $_SERVER[...] noch ein echo (oder ein print) ...

                  Grüße aus Nürnberg
                  Tobias

                  1. hi,

                    action="<?php $_SERVER['PHP_SELF']; ?>"
                    [...]außerdem sollte vor $_SERVER[...] noch ein echo (oder ein print) ...

                    oder ein =

                    action="<?=$_SERVER['PHP_SELF']?>"

                    (ja, funktioniert nur, wenn short_open_tags aktiviert ist.)

                    gruß,
                    wahsaga

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

                      [...]außerdem sollte vor $_SERVER[...] noch ein echo (oder ein print) ...

                      oder ein =

                      action="<?=$_SERVER['PHP_SELF']?>"

                      (ja, funktioniert nur, wenn short_open_tags aktiviert ist.)

                      Das aber funktioniert wiederum nicht, wenn man seine Schreibweise:

                      <input type="hidden" name="sent" value="1" />
                      <input type="text" name="name" value="<?php echo $name ?>" />

                      als Verwendung von XHTML deutet (der schließende Slash wird ja wohl auch
                      bei HTML von den Browsern akzeptiert).
                      Wenn's denn XHTML und damit XML ist, muß der open_tag long sein (<?php).

                      Tschö, Auge

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

        hattest Du eigentlich gesehen, dass ich Dir bezüglich Deines Blätterproblems eine Lösung gebastelt hatte?

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  2. Hi,

    wie lautet denn die Fehlermeldung? Um alle Meldungen (auch die Anmerkungen) von PHP zu erhalten, was kein Fehler sein kann, sollte man an den Anfang des Scripts immer

    error_reporting(E_ALL);

    schreiben.

    Gruß,
    Andreas.

    1. hallo!

      danke. das habe ich nicht gewusst...

      nun ja also: Notice: Undefined index: sent in (seite) on line 70

      Notice: Undefined variable: name in (seite) on line 110

      ...

      so. dann werde ich mich mal auf die suche machen.

      gibt es im dreamweaver eine möglichkeit zeilenzahlen anzeigen zu lassen?

      mlg
       joshua

      1. Hello,

        so. dann werde ich mich mal auf die suche machen.

        gibt es im dreamweaver eine möglichkeit zeilenzahlen anzeigen zu lassen?

        downgrade auf textpad, und Du wirst glücklich ;-)

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  3. hi!

    habe das problem mittlerweile selbst gelöst. dem submit button habe ich einen namen (name="submit") gegeben, und dann durch if(isset($_REQUEST['submit'])) { das gb gestartet.

    die if abfrage war schuld...

    danke aber für eure zahlreichen antworten und hilfen!

    gruss joshua