anton: formular

hi,

wie mach ich es das ich ein eingabe feld habe wo ich was eingeben kann.

wenn ich dann auf abschicken klicke wird der inhalt des eingabe felds in der variabel $text gespeichert?

oder kann mir jemand sagen wo ich das nachlesen kann?

  1. Hallo,

    http://at.php.net/manual/en/tutorial.forms.php

    gruß,
    Severin

    --
    Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
    --Philip K. Dick
    1. hi,

      o.k jetzt habe ich z.b:

      <form action="action.php" method="POST">
       Your name: <input type="text" name="name" />
       <input type="submit">
      </form>

      aber wie rufe ich das jetzt in action.php auf?

      mit $name oder wie?

      1. Hallo,

        mit $name oder wie?

        Ja, wenn register_globals in Deiner php.ini auf "on" stehen (PHP Version < 4.2 AFAIK), das sollte man aber aber aus Sicherheitsgründen auf "off" belassen.
        Ansonsten gilt dass Du Deine Werte je nach verwendeter Methode entweder in der Superglobalen $_POST (in Deinem Bsp.) oder $_GET findest. Es gibt auch noch $_REQUEST; in dieser befinden sich alle Post-, Get- und Cookie-Parameter...
        Also in Deinem Fall bekommst Du den Inhalt Deines Eingabefeldes über:

        echo( "Your name: " . $_POST["name"] );

        Grüsse AndreD

        1. Hallo,

          mit $name oder wie?
          Ja, wenn register_globals in Deiner php.ini auf "on" stehen (PHP Version < 4.2 AFAIK), das sollte man aber aber aus Sicherheitsgründen auf "off" belassen.
          Ansonsten gilt dass Du Deine Werte je nach verwendeter Methode entweder in der Superglobalen $_POST (in Deinem Bsp.) oder $_GET findest. Es gibt auch noch $_REQUEST; in dieser befinden sich alle Post-, Get- und Cookie-Parameter...
          Also in Deinem Fall bekommst Du den Inhalt Deines Eingabefeldes über:

          echo( "Your name: " . $_POST["name"] );

          Grüsse AndreD

          danke,
          aber so brauch ich das nicht ich habe das geschireben:

          <?PHP

          $fp = fopen ("speicher","r");
          $zahl = fgets($fp,30);
          fclose($fp);

          $zahl++;

          echo $zahl;

          $fp = fopen ("speicher","w");
          fwrite($fp,$zahl,10);
          fclose($fp);

          <form action='speicher.php' method='POST'>
           Name: <input type='text' name='name' />
           <input type='submit'>
          </form>

          $fp = fopen ("namespeicher","n");
          fwrite($fp,$name,10);
          fclose($fp);

          ?>

          es soll bewirken das zuerst die zahl x da steht und darunter
          soll man seinen namen eingeben der auch gespeichert wird,
          wie mach ich das?

          action='speicher.php' <-- kann in meinen fall nicht stimmen den für was soll ich eine neue datei aufrufen

          und irgendwo muss noch ein fehler sein ich kann ihn aber nicht finden.

          1. Hi,

            <form action='speicher.php' method='POST'>
             Name: <input type='text' name='name' />
             <input type='submit'>
            </form>

            schon mal was von echo "<HTML TAG></HTML TAG ENDE>"; gehört?

            es soll bewirken das zuerst die zahl x da steht und darunter
            soll man seinen namen eingeben der auch gespeichert wird,
            wie mach ich das?

            action='speicher.php' <-- kann in meinen fall nicht stimmen den für was soll ich eine neue datei aufrufen

            und irgendwo muss noch ein fehler sein ich kann ihn aber nicht finden.

            Irgendwie würde ich mal ein deiner Stelle deinen ganzen Code überarbeiten und vorher bei www.php.net vorbeischaun. Dann erledigen sich viele Fragen!

            Gruß ... Simon

            1. hi,

              ich habe jetzt ein bishen herumgestöbert und meinen script ausgebessert:

              <?PHP

              $fp = fopen ("speicher","r");
              $zahl = fgets($fp,30);
              fclose($fp);

              $zahl++;

              echo $zahl;

              $fp = fopen ("speicher","w");
              fwrite($fp,$zahl,10);
              fclose($fp);

              echo "
              <html>
              <form action='$PHP_SELF' method='post'>
              <input type='text' name='name' value='$email'>
               <input type='submit' value='Abschicken'>
              </form>
              </html>
              ";

              $fp = fopen ("emailspeicher","w");
              fwrite($fp,$email,10);
              fclose($fp);

              ?>

              aber zwei sachen versteh ich noch nicht:

              1. warum wird die $email nicht gespeichert?
              2. warum erhöht sich $zahl um eins wenn ich auf abschicken klicke?
              1. hi, warum kommen hier fehler meldungen:

                <?PHP

                echo "
                <html>
                <head>

                </head>

                <body>
                ";

                if(strlen($email) > 0)
                echo "
                Ende
                ";

                else

                $fp = fopen ("speicher","r");
                $zahl = fgets($fp,30);
                fclose($fp);

                $zahl++;

                echo $zahl;

                echo "
                <form action='$PHP_SELF' method='post'>
                <input type='text' name='email' value='$email'>
                 <input type='submit' value='Senden'>
                </form>
                ";

                $fp = fopen ("speicher","w");
                fwrite($fp,$zahl,10);
                fclose($fp);

                $fp = fopen ("emailspeicher","e");
                fwrite($fp,$email,30);
                fclose($fp);

                echo "
                </body>
                </html>
                ";
                ?>

                ich habe alle datein auf 777 gesetzt was ist hier falsch?
                es kommen folgende fehlermeldungen:

                fopen(emailspeicher): failed to open stream: Success
                fwrite(): supplied argument is not a valid stream resource
                fclose(): supplied argument is not a valid stream resource

                1. Hallo,

                  hi, warum kommen hier fehler meldungen:

                  Bitte poste nur den relevanten Quellcode. Danke.

                  fopen ("emailspeicher","e");

                  Der Parameter "e" ist falsch.

                  Lies endlich das Manual zu fopen()

                  http://www.php.net/manual/en/function.fopen.php
                  http://www.php.net/manual/de/function.fopen.php

                  Und auch die dclp-FAQ zum Thema:
                  http://www.dclp-faq.de/q/q-datei-lesen.html

                  Lass Dir unmittelbar nach fopen() eine Meldung anzeigen,
                  wenn es nicht geklappt hat, z.B. so:
                  fopen ("emailspeicher","w") OR die("Fehler mit Datei emailspeicher");

                  Gruesse,

                  Thomas

                  1. Hello alle zusammen,

                    da stellt "anton" eine Frage, etwas ungeschickt in der fachlichen Formulierung und auch nicht in dem Tonfall, der gleich bereitwillig beantwortet würde...
                    Vielleicht hätte er sich dafür auch "Antonia" nennen müssen?

                    Jedenfalls denke ich so: Oh, ganz simple Sacche das, schaust mal, wie sich der Thread entwickelt.

                    Na, und so nebenbei könnte man doch mal eine gaaanz einfache Lösung produzieren, die ihm das Affenformular näher bringt, einen Aufrufzähler mitlaufen lässt, und die eingegeben Daten immer wieder zur Verfügung stellt. Na, und wenn man das schon macht, dann doch gleich mit einer vernünftigen[tm] Datenstruktur, also Speicherung der Daten in einem serialisierten Array.

                    Ist doch für Profis, wie uns, 'nen Klacks. *gnicker*

                    Gesagt, getan. Die paar Zeilen hämmere ich doch mit Links in die Tastatur.

                    Denkste!

                    Der Teufel steckt nämlich im Detail: Der Zähler soll ja nicht zum Client durchgeschleift werden, sondern dort nur angezeigt werden.

                    Also erst das File auslesen
                    Zähler erhöhen
                    wieder wegschreiben

                    Telefon klingelt...

                    Und wenn jetzt ein Post vorlag?
                    Ja, dann hätten doch die Post-Data auch gescihert werden müssen.
                    Ok, aber nicht den Zähler überschreiben.

                    Und dann wieder anzeigen.
                    Muss jetzt der alte oder der neue Zähler angezeigt werden? Mmmh.
                    Und wenn nun doch keine Postdaten vorlagen?

                    Telefon klingelt...

                    Also wie war das jetzt mit der Reihenfolge. Da gabs doch die Affenregel für die Reihenfolge:

                    Schreiben (aber nur bei Post)
                    Lesen (immer)
                    Anzeigen (immer)

                    Ja, aber wenn ich doch nach dem Lesen nicht mehr schreibe, wird ja der Zähler nicht aktualisiert und wenn ich schreibe, sind doch die Daten futsch. Wurde doch nix gepostet, oder?

                    Ach jah, un das ganze um diese Zeit ohne den Genuß von Wein oder Bier. Apropos, es ist ja schon dunkel. Ich könnte mir ja mal eins holen.

                    Telefon klingelt...

                    Au mann, wass die wieder wissen wollen heute.

                    Na, ich denke, das Beispiel wird heute nicht mehr fertig.

                    *grins*

                    Und das nach ca. 700 Skripten, die fehlerfrei laufen, teilweise über 250kByte groß

                    Wollt Ihr da allen Ernstes von einem Anfänger (zumindest hat er nicht das Gegenteil behauptet bisher) erwarten, dass er sofort alles richtig macht?

                    Ich put mich hier ja nur ungern, aber ich denke,

                    "immer schön auf dem Tecppich bleiben, Leute"

                    In diesem Sinne. Auf dass sich auch morgen noch Anfänger vertrauensvoll an uns wenden. Wir waren schließlich auch mal welche!

                    Liebe Grüße aus http://www.braunschweig.de

                    <img src="http://bitworks.de/~images/Absturz2.gif" border="0" alt="">

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  2. hi,

                    ich habe mir jetzt einiges durchgelesen was mir aber auch nicht weiterhilft. mein derzeitiger code schaut so aus:

                    <?PHP

                    echo "
                    <html>
                    <head>

                    </head>

                    <body>
                    ";

                    if(strlen($email) > 0)
                    echo "
                    Ende
                    ";

                    else

                    $fp = fopen ("speicher","r");
                    $zahl = fgets($fp,5);
                    fclose($fp);

                    $zahl++;

                    echo $zahl;

                    echo "
                    <form action='$PHP_SELF' method='post'>
                    <input type='text' name='email' value='$email'>
                     <input type='submit' value='Senden'>
                    </form>
                    ";

                    $fp = fopen ("speicher","w");
                    fwrite($fp,$zahl,10);
                    fclose($fp);

                    $fp = fopen ("emailspeicher","w");
                    fwrite($fp,$email,30);
                    fclose($fp);

                    echo "
                    </body>
                    </html>
                    ";
                    ?>

                    aber es kommen immer noch fehler, wenn ich auf senden klicke wird zwar die email gespeichert aber $zahl ist aufeinmal wieder 0 und es kommt die fehlermeldung:

                    fgets(): supplied argument is not a valid stream resource
                    fclose(): supplied argument is not a valid stream resource

                    was bedeuten die?
                    was habe ich falsch gemacht?

                    1. Hallo "Anton",

                      Zuerst mal: Ich finde es total doof, dass Du mir
                      1. ein Mail geschickt hast, um mich zu einer Antwort zu draengen.
                      2. in diesem Thread einen anderen Namen verwendest
                          als den Vor- und Nachnamen, mit dem Du frueher
                          jeweils gepostet hast.

                      fgets(): supplied argument is not a valid stream resource
                      fclose(): supplied argument is not a valid stream resource

                      was bedeuten die?

                      Dass PHP nicht von der Datei lesen kann oder so ...

                      was habe ich falsch gemacht?

                      1. Du hast nicht geprueft, ob fopen() erfolgreich war,
                         wie ich Dir empfohlen hatte und wie es auch
                         in der dclp-FAQ, die ich verlinkte, angegeben ist.
                      2. Du hast nicht gesagt, in welchen Zeilen die
                         Fehlermeldungen auftreten.

                      Da vergeht mir echt die Lust, Dir zu helfen. Sorry.

                      Dass Du gemaess Deiner Website erst in der "6 Klasse"
                      (Gymnasium) bist, entschuldigt einiges, aber nicht alles.

                      Gruesse,

                      Thomas

                      P.S. Vermutlich solltest Du nach else einen Block mit { und } machen.

                      Und statt die Variable aus dem Formular mit $email zu verwenden,
                      solltest Du auf $_POST['email'] bzw. $_REQUEST['email'] zugreifen.
                      http://www.dclp-faq.de/q/q-formular-variablen.html
                      PHP-Manual: Predefined Variables (englisch, die deutsche
                      Uebersetzung ist unvollstaendig/veraltet)
                      http://www.php.net/manual/en/language.variables.predefined.php und
                      http://www.php.net/manual/en/reserved.variables.php

            2. Hallo Simon,

              Deine Antwort finde ich nicht gerade hilfreich.

              <form action='speicher.php' method='POST'>
               Name: <input type='text' name='name' />
               <input type='submit'>
              </form>
              schon mal was von echo "<HTML TAG></HTML TAG ENDE>"; gehört?

              Was willst Du damit sagen?
              Bei Input ist das End-Tag verboten.
              http://www.w3.org/TR/html401/interact/forms.html#edef-INPUT
              "Start tag: required, End tag: forbidden"

              In HTML schreibt man deswegen:
              <input type='text' name='name'>
              In XHTML:
              <input type='text' name='name' />

              Das einzige, was man an dem Formular kritisieren koennte,
              waere das fehlende Value-Attribut beim Submit-Button.
              Es ist nicht vorgeschrieben, aber sinnvoll.

              Ohne Vorgabe schreiben die Browser schreiben halt dann
              selbst etwas in "Ihrer Sprache" hin, z.B.
              "Anfrage senden" (MS IE 5.0 dt.)
              "Absenden" (Opera 5.12 dt.)
              "Submit Query" (Mozilla 1.2.1 en.)

              In HTML 4.01 Strict muss der Inhalt des Formulars
              noch einmal in einem Block-Level-Element stehen, z.B. so:

              <form action='speicher.php' method='POST'>
              <p>
                Name: <input name='name'>
                <input type='submit'>
              </p>
              </form>

              Das ist valide.

              Gruesse,

              Thomas

          2. Hallo,

            action='speicher.php' <-- kann in meinen fall nicht stimmen den für was soll ich eine neue datei aufrufen

            Ueberlege Dir genau, was wann passieren soll.

            Im einfachsten Fall hat man

            1. Ein (statisches) HTML-Formular, das im Browser ausgefuellt wird
            2. Ein PHP-Skript, das auf dem Server das Formular verarbeitet
               und irgendetwas mit den Daten tut, z.B.
               - Anzeigen (d.h. HTML-Ausgabe an Browser schicken)
               - speichern (in Datenbank oder Text-Datei)
               - als Mail verschicken.

            Manchmal kombiniert man zwei Dinge in
            ein und dem selben Skript.

            Das Formular wird dann "an sich selbst geschickt",
            d.h. das ACTION-Attribut hat die URL des Formulars
            selbst.
            Das Skript unterscheidet dann, ob es
            a) "einfach so" aufgerufen wurde (=> Ausgabe des Formulars),
            oder ob es
            b) "mit Daten" (GET/POST-Parametern) aufgerufen
               wurde (=> Verarbeitung der Daten).

            Beliebt ist das sogenannte "Affenformular", das immer
            wieder an sich selbst geschickt wird, bis alle Eingaben
            vollstaendig sind, und erst dann die Daten verarbeitet:
            http://www.dclp-faq.de/q/q-stil-normalform.html

            Lies auch mal alle Eintraege in der dclp-FAQ:
            http://www.dclp-faq.de/ch/ch-webvariablen.html

            Gruesse,

            Thomas

  2. hallo

    wie mach ich es das ich ein eingabe feld habe wo ich was eingeben kann.

    versuchs mal mit input-tags

    wenn ich dann auf abschicken klicke wird der inhalt des eingabe felds in der variabel $text gespeichert?

    schon möglich ... arbeite aber besser mit der post-variante der datenübermittlung

    oder kann mir jemand sagen wo ich das nachlesen kann?

    http://selfhtml.teamone.de - vermutlich unter html/formulare
    http://www.php.net

    cu
    ulli