Formular, Frage zum Thema

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Formular, Frage zum Thema

    Hallo!

    Ich bin Anfänger und habe mir bereits einige Beispiele zu Formularen angeschaut. Aber eine Frage habe ich immer noch. Ich möchte folgendes realisieren:

    Ich habe ein Kontak-Formular
    Name
    Betreff
    e-mail
    Text

    Dieses Formular soll sich so verhalten: Wird es abgeschickt, so soll es überprüft werden. Treten bei der Überprüfung Fehler auf, so sollen die entsprechenden Felder (z.B. Betreff) rot geschrieben werden; der Benutzer soll also das gleiche Formular sehen und seine Daten sollen nicht verloren gehen (die er bisher eingegeben hat).

    Ist jedoch kein Fehler enthalten, so soll eine Bestätigungsseite angezeigt werden.

    Bisher habe ich es nur geschafft, dass die Felder rot markiert werden, die nach dem Abschicken immer noch nicht ausgefüllt wurden.

    Ich weis jedoch nicht, wie ich diese Abfrage realisiere, wenn ok, dann Bestätigungsseite, sonst nochmal diese Seite anzeigen?

  • #2
    Zeige mal dein Skript bis jetzt.
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      logisch, oder? woher sollen die Felder denn wissen, dass sie schon gefüllt waren? gib einfach ein VALUE="Text" an.

      Kommentar


      • #4
        Hallo Günni!

        Also was ich bis jetzt lediglich habe (wobei das für mich als Anfänger schon gedauert hat) ist, das z.B. "Name" schwarz geschrieben wird, wenn alles ok ist und mit roter Farbe geschrieben wird, wenn ein Fehler aufgetreten ist. Fehler bedeutet: Das Formular wurde abgeschickt, das Feld wurde aber nicht ausgefüllt. Ok ist: das Feld wurde noch nicht ausgefüllt, aber das Formular auch noch nicht abgeschickt.

        Noch habe ich kein komplettes Skript. Ich versuche mit diesem Bsp. alles notwendige zu lernen:

        --------------
        PHP-Code:
        <body bgcolor="#FFFFFF" text="#FB0000">
        <?php
        if (isset($name) & empty($name)) {
            echo 
        "<font color='#000099'>Name FEHLT!!!!";
        } else {
            echo 
        "<font color='#006600'>Ok";
        }
        ?>
        <form name="form1" method="post" action="<?php print $PHP_SELF ?>">
          <input type="text" name="name">
          <input type="submit" name="Abschicken" value="Abschicken">
        </form>
        --------------

        Original geschrieben von Günni
        Zeige mal dein Skript bis jetzt.

        Kommentar


        • #5
          und was ist mit dem value?

          Kommentar


          • #6
            Value?

            Ich versteh nicht ganz was du meinst? Wie "was ist mit dem Value"? (sry, bin eben noch so Anfänger). Wozu brauche ich das Value? Also das Skript funktioniert so bisher.

            Kommentar


            • #7
              Hatte es eigentlich schon geschrieben:
              logisch, oder? woher sollen die Felder denn wissen, dass sie schon gefüllt waren? gib einfach ein VALUE="Text" an.
              meine normales HTML:

              um einem feld einen wert zu geben brauchst du halt einen standardwert, woher soll das feld sonst wissen, dass da Tom stehen soll und nicht Tobi?

              Kommentar


              • #8
                vielleicht etwas verständlicher

                Hi!

                So, ich versuchs etwas verständlicher zu schreiben...

                Die Formular-Beispiele, die ich bisher gesehen haben tun folgendes:

                Nach dem Abschicken wird bei einem Fehler meist eine Seite angezeigt mit z.B. "Sie haben das Feld "Betreff" ausgelasesn."

                d.h. nun wieder zurück und ausfüllen. Meist sind dann die Felder wieder leer.

                Das Problem: hat man nun mehrere Felder ausgelassen/fehlerhaft ausgefüllt so wird das eine Geduldsprobe mit dem hin und her.

                besser wäre: die ursprüngliche Eingabemaske mit seinen Eingaben behalten. Und die Felder sollen eine rote, anstatt einer schwarzen Beschriftung erhalten, die fehlerhaft bzw. gar nicht ausgefüllt wurden.

                Nur wie mache ich das?
                Denn ich kann ja immer nur eine action ausgeben.
                Ich bräuchte aber eigentlich eine
                Verzweigung: wenn ok -> Bestätigungsseite, dass Formular abgeschickt
                sonst -> nochmal dieses Formular anzeigen

                bisher habe ich es ja so gemacht, dass sich das Formular selbst aufruft. Damit funktioniert eben das, dass wenn man ein Feld nicht ausfüllt, das Formular aber abschickt, beim nächsten mal die fehlenden Felder rot beschriftet sind.

                Was ich aber noch nicht hab/weis: wie veranlasse ich, dass das Formular gar nicht noch einmal angezeigt wird, wenn kein Fehler aufgetreten ist; sondern das Bestätigungsformular soll angezeigt werden.

                Kommentar


                • #9
                  ach jetzt, aber ...

                  Original geschrieben von TobiaZ
                  Hatte es eigentlich schon geschrieben:


                  meine normales HTML:

                  um einem feld einen wert zu geben brauchst du halt einen standardwert, woher soll das feld sonst wissen, dass da Tom stehen soll und nicht Tobi?
                  Jetzt verstehe ich was du meinst. Im normalen HTML sollte ich noch ein Value angeben. Ja stimmt ist nicht sauber gemacht. Aber das sollte eben nur etwas sein, um die Tipps die ich erhalten habe zu testen. Das Feld soll ja am Anfang leer sein, also Value = "", da das auch so funktioniert und es schnell gehen sollte, hatte ich das weggelassen.

                  Aber ich befürchte, dass das bei meinem Problem nicht weiterhilft, vielleicht aber meine Erläuterung (-s Versuch)?

                  Kommentar


                  • #10
                    hab dein post jetzt nicht mehr ganz durchgelesen, es brannte mir in den fingern. hast du schon mal das Attribut "value" des INPUT-Tags gesehen? sieht so aus:

                    Code:
                    <input type="text" [B]value="das ist mein Text"[/B]>
                    Wird es dir jetzt klar, was zu tun ist?

                    Kommentar


                    • #11
                      Nein! wirklich nicht und ich versuche es!

                      Nein ! Es ist mir immer noch nicht klar, was zu tun ist. Vor allem weis ich nicht, wie das meinem Problem helfen kann?

                      In meinem kl. Text oben, habe ich eigentl. geschrieben, dass du recht hast mit dem Value, es nicht sauber ist, das aber zu Beginn Value = "", also ein leeres Feld sein soll.

                      Kommentar


                      • #12
                        wenn du ="" benutzt steht da nichts drin. das ist ja klar, aber wenn du ="Text" bentzt, steht da plötzlich text drin, wer hätte das gedacht. und nun probier es mal mit der variable... und?

                        btw: wenn leer sein soll, kannst du das value ruhig weglassen.
                        EDIT:
                        also du deinen text gepostest hast, hab ich schon angefangen zu schreiben, sorry...

                        Kommentar


                        • #13
                          meinst du ...

                          ach du meinst bestimmt:

                          das wäre quasi eine Lösung für das Teilproblem, dass der Benutzer seine Eingabe sieht (diese also nicht verloren geht), oder?

                          Daran habe ich jetzt zunächst gar nicht gedacht, weil das andere Problem viel wichtiger ist, und zwar:

                          wie schaffe ich diese Verzweigung:
                          wenn alles ok, dann zeige Bestätigungs-Seite an

                          wenn nicht ok, dann zeige dieses Formular noch einmal an, mit den Eingaben des Users, allerdings sollen die Beschriftungen der Felder die fehlerhaft sind deutlich mit rot markiert werden.

                          Kommentar


                          • #14
                            ich war davon ausgegangen, dass du das schon hattest...

                            PHP-Code:
                            if(ungültige einfabe1)
                              
                            $fehler TRUE;
                            if(
                            ungültige einfabe2)
                              
                            $fehler TRUE;
                            if(
                            ungültige einfabe3)
                              
                            $fehler TRUE;


                            if(
                            $fehler)
                            // zeige seite
                            else
                            // versende email 

                            Kommentar


                            • #15
                              nein, nein

                              Nein, nein; wo denkst du hin! Ich bin Anfänger (blutiger!) Da brauche ich schon noch etwas länger, selbst für die trivialsten Sachen.

                              wie z.B.:
                              PHP-Code:
                               if($fehler)
                              // zeige seite
                              else
                              // versende email 
                              brech jetzt bitte nicht gleich ab, vor Lachen (schliesslich waren wir alle mal Anfänger ;-)

                              aber wie zum Geier setze ich das "zeige seite" um? muss ich die Seite gar einzeln mit echo aufbauen, gibt es einen Befehl, der mir die Seite aufruft, sagen wir mal wie z.B. "ZeigeSeite (ok.htm)"?

                              Kommentar

                              Lädt...
                              X