Formularfelder Kontrollieren

mRc

Grünschnabel
Hallo ich habe folgendes Problem ich hab ein 4 seitiges formular erstellt das mit Sessions arbeitet. jedoch will ich jetzt noch überprüfen ob die einzelnen felder beschrieben worden sind oder nicht und ggf. eine meldung direkt unterm oder nebem dem formular feld haben der die meldung auspuckt das es dort fehlt.

hier mal der auszug einer seite

Seite2.php
PHP:
<?
session_start();
$_SESSION['bundesland'] = $_POST['bundesland'];
?>


<html>
<head>
<title>Text des Titels</title>
</head>
<body>

<td>Angaben der Bankdaten</td>
 <form action="reg.persondaten.php" method="post">
 <table border="0" cellpadding="0" cellspacing="4">
 <tr>
  <td align="left">E-Mail:</td>
  <td><input name="mail" type="text" size="30" maxlength="40"></td>
 </tr>

  <tr>
  <td align="left">Kennwort:</td>
  <td><input name="kennwort" type="password" size="30" maxlength="40"></td>
 </tr>

 <tr>
  <td align="left">Kennwort bestätigen:</td>
  <td><input name="kennwort2" type="password" size="30" maxlength="40"></td>
 </tr>

 <tr>
 <td width="100"></td>
 <td><input type="submit" value="weiter"></td>
 </tr>
 </table>
</form>

hoffe mir kann wer helfen und sagen wie ich dies am besten bewerkstellige und bitte seid nachsichtig mit mir jeder hat ja mal klein angefangen

danke im voraus

mfg

mRc
 
Nabend,
am besten packst du deine Formulare in einzelne Files.

Dann machst du eine Hauptseite, die immer aufgerufen wird. Per Hidden oder Sessionvar überprüfst du, bei welcher Formularseite du gerade bist.

Dementsprechend legst du ein switch/case an, in dem du dann die einzelnen Felder checkst ($_POST["xy"] != ""). Wenn alles okay, includierst du die nächste Seite, wenn nicht rufst du nochmal die selbe Seite auf.

Um hier sicher zu gehen, dass man nicht 2x alles eintragen muss, setzt du noch ein echo $_POST["xy"] in den value-Tag der jeweiligen Felder xy.

Hoffe das war so verständlich :)
 
Das geht auch einfacher ;)

Du machst dein $_SESSION Register erst dann, wenn die Prüfung abgeschlossen ist. Sprich - du sendest das Formular immer wieder an die gleiche Seite und wenn alles ok ist, leitest du erst auf die zweite Seite weiter. Erst jetzt werden die Variablen aus der ersten Seite in die $_SESSION aufgenommen.

Zu Beginn der Seite leitest du direkt die if/else Prüfung ein.

Das sieht wie folgt aus:
PHP:
<?php
// angenommen dein form-tag enthält folgenden Inhalt
// <form action=\"gleiche_seite.php?seite=1\" method=\"post\">
// deine Prüfung der Formularfelder folgt direkt als erstes über If

if($seite = '1') {
  
  if($formularfeld1) {
     wenn nicht ok, dann fehler
  }
  else {
  }
  if($formularfeld2) {
  }
  else {
  }
  // usw..

// hier wieder dein html-code für das formular enthalten. Aber in diesem setzt du 
//die values ein! Somit erhälst du das was ok war wieder und der User muss 
// diese Daten nicht noch mal eingeben.


}
else {

// hier ist der html-code für das formular enthalten.

}
?>

Wenn du nun alles in der Session registriert hast, kannst du am Ende das ganze sauber auswerten und musst nicht irgendetwas mitschleifen. Noch eine Info am Rande - es handelt sich um Bankdaten. SSL! oder und das muss das mindeste sein - die Session-Id per hidden-tag weiter geben


Soweit klar?
 
hm ich verstehs leider nicht *g* könntet ihr mir das vllt. anhand meines beispiels einsetzen damit ich ungefähren plan davon bekomme was ihr genau meint ich bin leider noch nicht so vertraut mit php.

was z.b. muss hier rein

PHP:
if($formularfeld1) { 
     wenn nicht ok, dann fehler 
  }

unter wenn nicht ok dann fehler kann ich mir im moment nix drauf einbilden

danke im voraus

mfg

mRc
 
Was letztendlich Fehler heißt, musst du eigentlich selber wissen.

Willst du nur eine Ausgabe müsstest du z.B. etwas in derart machen:

$error_str .= "Feld XY leer"

Dieses String gibst du dann per hidden oder GET oder Session wieder an deine neuegeladene Seite und gibst ihn z.B. am Seitenanfang einfach aus.

Nimm dir ruhig saila's Grobstruktur, da musst du dann nur einsetzen.
 
mRc hat gesagt.:
hm ich verstehs leider nicht *g* könntet ihr mir das vllt. anhand meines beispiels einsetzen damit ich ungefähren plan davon bekomme was ihr genau meint ich bin leider noch nicht so vertraut mit php.

was z.b. muss hier rein

PHP:
if($formularfeld1) { 
     wenn nicht ok, dann fehler 
  }

unter wenn nicht ok dann fehler kann ich mir im moment nix drauf einbilden

danke im voraus

mfg

mRc


Dein Formular:
PHP:
<?php
// zu beginn der Formularseite startest du die session und gibst lässt eine session_id erzeugen.
session_start();
$sid = session_id();
?>

<html> 
<head> 
<title>Text des Titels</title> 
</head> 
<body> 

<td>Angaben der Bankdaten</td>

<?php 
echo "<form action=\"reg.persondaten.php?sid=$sid&seite=1\" method=\"post\">";
?>
<table border="0" cellpadding="0" cellspacing="4"> 
<tr> 
  <td align="left">E-Mail:</td> 
  <td><input name="mail" type="text" size="30" maxlength="40">
<?php
           if(isset($error_mail) {
                     echo "<br>".$error_mail;
           }</td> 
</tr> 

  <tr> 
  <td align="left">Kennwort:</td> 
  <td><input name="kennwort" type="password" size="30" maxlength="40">
 <?php
           if(isset($error_kennwort) {
                     echo "<br>".$error_kennwort;
           }</td> 
</tr> 

<tr> 
  <td align="left">Kennwort bestätigen:</td> 
  <td><input name="kennwort2" type="password" size="30" maxlength="40">
<?php
           if(isset($error_kenncheck) {
                     echo "<br>".$error_kenncheck;
           }</td> 
</tr> 

<tr> 
<td width="100"></td> 
<td><input type="submit" value="weiter"></td> 
</tr> 
</table> 
</form>

Wenn du nun auf den Button klickst, werden die Daten logischerweise ja übergeben und hier folgt nun auf der zweiten Seite die Fehlerprüfung wie folgt:

PHP:
<?php
session_start();

if($seite == '1') {
 
    if(isset($mail) || $mail == '') {
        $error_mail = "Bitte korrigieren Sie ihre eMailadresse oder tragen diese ein";
        include('erste_formulardatei');
    }
    if(isset($kennwort) || $kennwort == '') {
        $error_kennwort = "dein Text";
        include('erste_formulardatei');
    }
    if($kennwort2 !== $kennwort || $kennwort == '') {
        $error_kenncheck = "dein Text";
        include('erste_formulardatei');
    }
// der folgende Teil des Formular ist im Grunde die erste Seite nur mit der Fehlermeldung ergänzt.
}
else {


// hier kommt nun die zweite Seite deines Formularfeldes und erst hier werden die Daten aus dem ersten Formular in die Session übernommen
$_SESSION['mail'] = $mail;
$_SESSION['kennwort'] = $kennwort;
$_SESSIOn['kennwort2'] = $kennwort2;

?>
und hier dein Code für die Auswertung oder Verarbeitung des Formular (entweder html oder php.


Jetzt verstanden? Ansonsten lies dir einige Tutorials zu Formularen mit Session durch oder lerne die Funktionen von Session kennen. Oben ist nur grob angerissen!
 

Neue Beiträge

Zurück