InternInhaltsverzeichnisGlossarBausteineLinklisteTutorialsKommentare

Thema: Formulare mit PHP erstellen und überprüfen Artikel anzeigen

Peter schrieb am Montag, den 19 Februar 2018 #1
Hallo Werner;

Ich erstelle gerade ein mehrseitiges Formular. Funktioniert auch alles so wie es soll, ausgenommen
die Fehlerprüfung bei den Pflichtfeldern, wenn nicht alle Pflichtfelder ausgefüllt werden.

Wenn ich beispielsweise bei action="diegleiche-seite.php" angebe, funktioniert die
Fehlerprüfung.

Wenn ich beispielsweise bei action="weiterleiten-seite2.php" angebe, funktioniert die Fehlerprüfung nicht mehr und es wird auf die weiterleiten-seite2.php eingeblendet.

Ich komm einfach nicht drauf.

Beste Grüße Peter
Werner schrieb am Dienstag, den 20 Februar 2018 #2
Hallo Peter,
bei mehrseitigen Formularen ist das ein wenig komplizierter.
Die eingegebenen Daten des Benutzers sollten in einer Session gespeichert werden.
Die Weiterleitung zur nächsten Seite erfolgt dann über header();

Diesen Beitrag vollständig anzeigen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
session_start
();

$name $_POST["name"] ?? ''// Ab PHP7

$Fehler = ["name"=>""];
if (isset(
$_POST["submit"])) {
 
$Fehler["name"] = strlen($_POST["name"]) < " Bitte füllen Sie dieses Feld aus!" "";
}

// Formular erstellen
$Formular "
<form method='post'>

<p>
 <label> Name:
<span class='pflichtfeld'>&#10034; " $Fehler["name"] . "</span><br>
  <input type='text' name='name' value='" $name "' size='35'>
 </label>
</p>

<p>
 <br>
 <input type='submit' name='submit' value='Formular absenden'>
</p>

<p>
 <small>Bitte alle mit <span class='pflichtfeld'>&#10034;</span>
 markierten Felder ausfüllen.</small>
</p>

</form>
";

// Formular abgesendet
if (isset($_POST["submit"])) {

 
// Sind keine Benutzer-Eingabefehler vorhanden
 
if (implode(""$Fehler) == "") {

  
// Session setzen
   
$_SESSION["name"] = $name;

  
// Weiterleitung zum zweiten Formular
  
header("Location: formular2.php");
 }
}
?>
<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>
 </head>
<body>

<?=$Formular;?>

</body>
</html>
Peter schrieb am Dienstag, den 20 Februar 2018 #3
Danke Werner,
funktioniert prächtig. Ich habe deine Lösung an einem Beispielformular mit 3 Seiten getestet.

Zusätzlich habe ich in den Formularseiten 2 und 3 Folgendes eingebaut, um den direkten Aufruf
(dieser Seiten zu verhindern) - vielleicht braucht es jemand.

Hier der Code in stark verkürzter Form auf der 2. Formularseite - auf der 3. Seite muss der
Code dementsprechend angepasst werden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

<?php
vorige Code 
....

if (!empty(
$_SESSION["nachname"]) &&
    !empty(
$_SESSION["vorname"]) &&
    !empty(
$_SESSION['geburtsdatum']))

    {

      
// Session ausgeben
       
echo $_SESSION["nachname"];
       echo ...;
       echo ...;
  
    }    
 
    
// Session leer, dann Weiterleiten auf erste Formularseite
   
    
else {
  
    
header("Location: formular-seite1.php");
  
    }


... 
weitere Code
?>


Ich persönlich finde deinen Lösung genial, da die Weitergabe der Formulardaten in Form von SESSION einfacher zu handhaben ist.

Zusätzlich lege ich die SESSION in eine separate Datei aus und hole diese per require wieder rein.

Das hat noch den zusätzlichen Vorteil einer einfacheren Wartung, wenn das Formular weiter ausgebaut oder verändert wird.

Vielen Dank, beste Grüße
Peter
Gast schrieb am Dienstag, den 9 November 2021 #4
Grüße,
Wie kann ich ,Fehlermeldungen
auf dem Formular in Pflichtfelder ausgeben.
Darf aber nicht in Inputfelder,
übertragen werden,sondern in
zwischen Namenfeld und Inputfeld die Fehlermeldung ausgeben
werden.
Werner schrieb am Samstag, den 13 November 2021 #5
Verwende den Formular Generator - » werner-zenk.de/tools/formulargenerator.php