Christoph Schönfeld: submit

Also hier meine Problem. Hab ein kleines symples Gästebuch geschrieben (mit Tut :D )

Jedenfalls soll das GB auf in eine Tabelle included werden! Wenn ich jetzt im Formular auf den Submit-Button klicke, dann ist die nächste Seite (wenn felder nicht ausgefüllt sind: "Bitte füllen sie alle felder aus")aber wieder im gesamten IE angezeigt und nicht nur in der Tabelle in der sie included werden soll! siehe: www.christophschoenfeld.de.vu

kann ich denn den link eines submit buttons bestimmen?

bitte helfen

  1. Hallo Christoph,

    zeig doch mal deine eintrag.php her. :)

    Viele Grüße
    Ben

    --
    Fantasie ist wichtiger als Wissen. - Albert Einstein
    1. gb.htm
      --------------------------------------
      <html>
      <body>

      <font size="5">
      Gästebuch
      </font>
      <br>

      <?php
      echo "

      <form action="eintrag.php" method="post"><br>
      Dein Name:<input name="name"><br>
      Deine ICQ-Nummer<input name="icq"><br>
      Deine E-Mailadresse<input name="mail"><br>
      Dein Text:<textarea name="text"></textarea><br>
      <input type="submit" value="Eintragen" name="abschicken">
      </form>

      ";
      ?>

      </body>
      </html>
      -------------------------------------
      zeigen.php
      -------------------------------------
      <html>
      <body>

      <font size="5">
      Gästebuch
      </font>
      <br>

      <?php
      include("gb.txt");
      ?>

      <br>
      <a href='index.php?action=gbeintrag'>Eintrag erstellen</a>
      </body>
      </html>
      -------------------------------------
      eintrag.php
      -------------------------------------
      <?php
      if ($name != "" && $icq != "" && $mail != "" && $text != "") {

      $eintrag =
      "Eintrag von $name mit der ICQ-Nummer $icq und der E-Mailadresse $mail schrieb:<br><br>$text";

      $datei = fopen("gb.txt", "wr");
      fputs($datei, $eintrag);
      fclose($datei);
      ?>
      <html>
      <body>

      Eintrag gespeichert, weiter um alle Einträge <a href="index.php?action=gb">anzuzeigen</a>

      </body>
      </html>
      <?php
      }
      else {
      echo "Bitte alle Felder ausfüllen<br>";
      }
      ?>
      <html>
      <body>
      <a href="index.php?action=gbeintrag">Zurück</a>
      </body>
      </html>
      ----------------------------------
      PS: ich liebe den schnellen Support hier :D

      1. Hi,

        Nimm mal die Sachen wie:

        <html>

        und so weiter raus und lass nur die reinen Meldungen stehen. :)

        Viele Grüße
        Ben

        --
        Fantasie ist wichtiger als Wissen. - Albert Einstein
        1. Ja ok schon, aber deshalb ist doch die Seite, wo zb. der text kommt eintrag erfolgreich oder so, trotzdem nicht in die tabelle included.

          1. Hi,

            also ich dachte, es würde daran liegen, kannst du nochmal nur die eintrag.php posten, wie du sie jetzt hast?

            Viele Grüße
            Ben

            --
            Fantasie ist wichtiger als Wissen. - Albert Einstein
            1. hab ja nichts geändert, denn ich muss doch eh den include befehl nutzen oder?

              index.php?action=....

              und dann inner tabelle

              mit chase...

              1. Hi,

                öh, ich weiß leider nicht wirklich was du meinst... sorry.. *g*

                Bin auch noch eher Anfänger in PHP.

                Viele Grüße
                Ben

                --
                Fantasie ist wichtiger als Wissen. - Albert Einstein
      2. Hallo Christoph,

        <form action="eintrag.php" method="post"><br>

        da hier als action eintrag.php steht geht der Browser natürlich auf diese Seite. Du musst da etwas sowas reinschreiben: /index.php?action=gb und dann in dieser Datei mit include die eintrag.php einfügen (wobei in der dann natürlich kein <html><body> usw. stehen darf)

        sinnvoller dürfte es aber sein, du machst eine Datei die meinetwegen gaestebuch.php heißt und etwa so aussieht:
        <?php
        if(!isset($_POST["submit"])){
        /* $_POST["submit"] ist nicht gesetzt d.h. das Formular wurde nicht abgeschickt. */
        // hier dann das Formular ausgeben
        }
        else{
          if(<deinebedingungen ob formular richtig ausgefüllt>){
          //hier datein in datei einfügen
          }
          else{
          //daten nicht vollständig
        }
        ?>
        und die dann immer "includest" wenn $_GET["action"] "gb" ist.

        so, und jetzt noch einige Anmerkungen zu dem Code :-)

        Dein Name:<input name="name"><br>

        hier solltest du vielleicht noch ein type="text" hinschreiben und evtl ein size="..."

        Dein Text:<textarea name="text"></textarea><br>

        hier fehlt noch ein rows="" und cols="" (sonst wird das Feld auch etwas sehr klein)

        im Übrigen solltest du dein Formular noch etwas positionieren das sieht so grauenvoll aus :-) (mit Tabellen *duck*)

        if ($name != "" && $icq != "" && $mail != "" && $text != "") {

        1. kannst du davon ausgehen, das register_globals=on ist? - da gehört $_POST["name"] usw. hin (sofern du eine neuere php-Version hast)
        2. würde ich eher !empty($name) usw. verwenden
        3. kann ich keinen Eintrag machen, da ich kein icq habe
        4. solltest keine emailadresse vorschreiben, da manche diese vielleicht nicht angeben wollen (Spam)

        $eintrag =

        "Eintrag von $name mit der ICQ-Nummer $icq und der E-Mailadresse $mail schrieb:<br><br>$text";
        hier solltest du noch eine \n hinter $text hängen

        $datei = fopen("gb.txt", "wr");

        was ist "wr" für ein Parameter? Du solltest "a" verwenden

        echo "Bitte alle Felder ausfüllen<br>";

        hier wäre es ideal, wenn du nochmal das Formular anzeigen würdest, mit den Daten die der User eingegeben hat.

        Grüße aus Nürnberg
        Tobias [der hofft dass das jetzt halbwegs verständlich war :-)]