PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Formular, Frage zum Thema (https://www.php-resource.de/forum/php-developer-forum/19135-formular-frage-zum-thema.html)

Tom S 23-04-2003 15:25

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?

Günni 23-04-2003 15:27

Zeige mal dein Skript bis jetzt.

TobiaZ 23-04-2003 16:06

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

Tom S 23-04-2003 16:17

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>

--------------

Zitat:

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

TobiaZ 23-04-2003 16:22

und was ist mit dem value?

Tom S 23-04-2003 16:23

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.

TobiaZ 23-04-2003 16:26

Hatte es eigentlich schon geschrieben:
Zitat:

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?

Tom S 23-04-2003 16:30

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.

Tom S 23-04-2003 16:32

ach jetzt, aber ...
 
Zitat:

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)?

TobiaZ 23-04-2003 16:34

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" value="das ist mein Text">
Wird es dir jetzt klar, was zu tun ist?

Tom S 23-04-2003 16:37

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.

TobiaZ 23-04-2003 16:38

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...

Tom S 23-04-2003 16:42

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.

TobiaZ 23-04-2003 16:45

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 


Tom S 23-04-2003 16:51

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)"?


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:13 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG