art-d-sign
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 13.05.2008, 10:37   #1
TP-Supporter
 
Benutzerbild von Corsachriz
 
Registriert seit: Apr 2006
Ort: nähe Köln
Corsachriz bringt sich richtig ein

Mehrseitiges PHP Formular mit Eingabeprüfung


Guten Morgen zusammen,

Ich stehe mal wieder vor einem PHP Problem.
Mein Ziel ist ein Formular in mehreren Schritten. Bei jedem Schritt wird die
Eingabe auf Vollständigkeit überprüft und bei leeren Feldern ein Fehler ausgegeben.

Problem:

Wenn man die Felder bei Schritt 2 korrekt ausfüllt, gelangt man auch zum 3. Schritt.
Vergisst man allerdings ein Feld, kann man dies nicht mehr nachtragen. Man bekommt immer wieder angezeigt, dass dieses Feld leer ist.

Vielleicht kann mir ein netter Phpler einen Schubs in die richtige Richtung geben.

Liebe Grüße, Chriz

Hier das Formular: Klick mich

Und hier mein Quellcode:

PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>New Document</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" type="text/css" href="css/content.css">
    
    <style type="text/css">

.bew-link1
{padding-top:7px !important;
padding-bottom:8px !important;
background-image:url(images/navi-bew-high.gif) !important;
background-repeat:no-repeat;}

</style>
  </head>
  <body>
    
    



    
<?php
function dyn_form()
{
global 
$HTTP_POST_VARS$HTTP_GET_VARS;
if (isset(
$HTTP_POST_VARS)) {
//bei POST
foreach ($HTTP_POST_VARS as $key => $elem) {
echo 
"<input type=\"hidden\" name=\"$key\" value=\"$elem\"><br />";
}
}
else {
//bei GET
foreach ($HTTP_GET_VARS as $key => $elem) {
echo 
"<input type=\"hidden\" name=\"$key\" value=\"$elem\"><br />";
}
}
//end function
?>








<?
if(isset($_POST['submit'])) {
    
//vornametest
    
if($_POST['vorname'] == ""$error['vorname'] = "Keinen Vornamen angegeben!<br>";
    
//nametest
 
if($_POST['name'] == ""$error['name'] = "Keinen Nachnamen angegeben!<br>";
     
//Geburtstest
 
if($_POST['geburtsdatum'] == ""$error['geburtsdatum'] = "Kein Geburtsdatum angegeben!<br>";
      
//Strasse
 
if($_POST['strasse'] == ""$error['strasse'] = "Keine Stra&szlig;e angegeben!<br>";
      
//PLZ test
if($_POST['plz'] == ""$error['plz'] = "Keine PLZ angegeben!<br>";
       
//Ort test
 
if($_POST['ort'] == ""$error['ort'] = "Keinen Ort angegeben!<br>";
    
//Allgemeiner Fehlertext, bitte anpassen
    
$strError "Es sind Fehler aufgetreten. Bitte überprüfen Sie Ihre Eingaben.";
} if(!
$error && $_POST[submit]) {
?>
    
    
<!--Wenn Formular 1 Okay, zeige 2. Formular an.-->
    

<?
if(isset($_POST['submit2'])) {
    
//vornametest
    
if($_POST['gewicht'] == ""$error['gewicht'] = "Kein Gewicht angegeben!<br>";
    
//nametest
 
if($_POST['groesse'] == ""$error['groesse'] = "Keine Gr&ouml;&szlig;e angegeben!<br>";

    
$strError "Es sind Fehler aufgetreten. Bitte überprüfen Sie Ihre Eingaben.";
} if(!
$error && $_POST[submit2]) {
?>

<ul class="bewerbe-navi">
<li class="bew-link0">Schritt 1</li>
<li class="bew-link0">Schritt 2</li>
<li class="bew-link1">Schritt 3</li>
<li class="bew-link0">Schritt 4</li>
<li class="bew-link0">Senden</li>
</ul>
<br style="clear:left;" />

<div id="bewerbung">

Hier waere das 3. Formular!

                                                <? } else { ?>


<ul class="bewerbe-navi">
<li class="bew-link0">Schritt 1</li>
<li class="bew-link1">Schritt 2</li>
<li class="bew-link0">Schritt 3</li>
<li class="bew-link0">Schritt 4</li>
<li class="bew-link0">Senden</li>
</ul>
<br style="clear:left;" />

<div id="bewerbung">

<?if($error) echo '<font color="#CC0000"><strong>'.$strError.'</font></strong></br></br>';?>

<form action="index.php" method="post">

<table>
<tr>
<td>

<table class="formulartabelle">

<form method="post" action="index.php" name="form2">
<tr>
<td>Gewicht</td>
<td><input name="gewicht" type="text" id="formular" value="<?=$_POST['gewicht']?><?=$error['gewicht']?'class="error"':''?>></td>
</tr>

<tr>
<td>Gr&ouml;&szlig;e</td>
<td><input name="groesse" type="text" id="formular" value="<?=$_POST['groesse']?><?=$error['groesse']?'class="error"':''?>></td>
</tr>
<tr>



</table>
<div class="unsichtbar">
 <?php dyn_form(); ?> <!-- Aufruf der Funktion dyn_form() --> 
</div>
 </div>
 
 </td>
 <td class="sendefeld">
<input name="submit2" type="image" src="images/button-intern-weiter.gif"  value="Abschicken"/>
</td></tr></table>
</form>
    <? }?>

                                                <? } else { ?>



<ul class="bewerbe-navi">
<li class="bew-link1">Schritt 1</li>
<li class="bew-link0">Schritt 2</li>
<li class="bew-link0">Schritt 3</li>
<li class="bew-link0">Schritt 4</li>
<li class="bew-link0">Senden</li>
</ul>
<br style="clear:left;" />

<div id="bewerbung">

<?if($error) echo '<font color="#CC0000"><strong>'.$strError.'</font></strong></br></br>';?>

 <form method="post" action="index.php" name="form1">

<table>
<tr>
<td>

<table class="formulartabelle">

<tr>
<td class="formuname">Vorname</td>
<td><input name="vorname" type="text" id="formular" value="<?=$_POST['vorname']?><?=$error['vorname']?'class="error"':''?>></td>
</tr>


<tr>
<td class="formuname">Name</td>
<td><input name="name" type="text" id="formular" value="<?=$_POST['name']?><?=$error['name']?'class="error"':''?>></td>
</tr>
<tr>
<td class="formuname">Geburtsdatum</td>
<td><input name="geburtsdatum" type="text" id="formular" value="<?=$_POST['geburtsdatum']?><?=$error['geburtsdatum']?'class="error"':''?>></td>
</tr>

<tr>
<td class="formuname">Stra&szlig;e</td>
<td><input name="strasse" type="text" id="formular" value="<?=$_POST['strasse']?><?=$error['strasse']?'class="error"':''?>></td>
</tr>


<tr>
<td class="formuname">PLZ / Ort</td>
<td><input name="plz" type="text" id="formular" value="<?=$_POST['plz']?><?=$error['plz']?'class="error"':''?> style="width:47px;">

<input name="ort" type="text" id="formular" value="<?=$_POST['ort']?><?=$error['ort']?'class="error"':''?> style="width:85px; margin-left:0px !important;">
</td>
</tr>

</table>

</td>



<td class="sendefeld">


<input name="submit" type="image" src="images/button-intern-weiter.gif"  value="Abschicken"/>

</td></tr></table>
</form>




  <? }?>
</div>
    
    
    
    
  </body>
</html>
__________________
Ich tausche Links, einfach per PN melden =)
Fussball in den Augen
Mehr Liebe im Internet <3
Kostenloses Internet Marketing Ebook für Anfänger
Corsachriz ist offline   Mit Zitat antworten


Alt 13.05.2008, 13:07   #2
TP-Moderator
 
Benutzerbild von maxi89
 
Registriert seit: Nov 2004
Ort: Wuppertal
maxi89 lebt für das TP und seine Usermaxi89 lebt für das TP und seine Usermaxi89 lebt für das TP und seine Usermaxi89 lebt für das TP und seine Usermaxi89 lebt für das TP und seine Usermaxi89 lebt für das TP und seine User
Ich vermute, der Fehler wird indirekt durch dyn_form() verursacht, denn dort wird ein Hidden-Feld für "groesse" erstellt. Dieses befindet sich aber zusammen mit den richtigen Eingabefeldern im gleichen Formular und hat auch den gleichen Namen - ist aber leer!
Dadurch werden die Werte des Textfeldes beim Klick auf den Button überschrieben und sind ergo auch leer, beim ersten Schritt werden diese Felder noch nicht generiert, deswegen gibt es beim ersten Schritt auch noch keine Probleme.

Es sollte helfen, wenn die Hidden-Felder über den Eingabefeldern stehen, damit würden im Zweifelsfalle leere Zeichenfolgen durch die korrekten aus den Textfeldern überschrieben.
__________________
Chuck Norris darf während der Fahrt mit dem Busfahrer sprechen!

Geändert von maxi89 (13.05.2008 um 13:13 Uhr).
maxi89 ist offline   Mit Zitat antworten
Alt 13.05.2008, 14:01   #3
TP-Greis
 
Benutzerbild von Boris
 
Registriert seit: Mar 2001
Ort: Berlin, Germany
Boris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKEBoris ist ein richtiges Arbeitstier - DANKE
Vielleicht solltest du erstmal mit SUPERGLOBALS wie $_POST arbeiten. Da brauchst du kein global, HTTP_POST_VARS oder $HTTP_GET_VARS, sondern nur $_POST und $_GET ... diese sind bereits Global. Du nutzt diese doch sowieso weiter unten, wozu greifst du dann also auf die veralteten Variablen zu?
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris
Boris ist gerade online   Mit Zitat antworten
Alt 13.05.2008, 14:02   #4
TP-Supporter
 
Benutzerbild von Corsachriz
 
Registriert seit: Apr 2006
Ort: nähe Köln
Corsachriz bringt sich richtig ein
Die Inputs mussten vor die neuen Felder. Das war die Lösung. 1000 Dank ihr beiden!

Boris:
HTTP_POST_VARS habe ich anfangs verwendet, da ich das Formular auf mehrere PHPs gesplittet hatte.

Grüße, Chriz
__________________
Ich tausche Links, einfach per PN melden =)
Fussball in den Augen
Mehr Liebe im Internet <3
Kostenloses Internet Marketing Ebook für Anfänger
Corsachriz ist offline   Mit Zitat antworten
Alt 13.05.2008, 14:51   #5
TP-Member
 
Benutzerbild von rafael
 
Registriert seit: Mar 2007
rafael macht alles soweit korrekt
$_SESSION ? Sprich hier etwas gegen SESSION?
__________________
sizeof(void)
rafael ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Mehrseitiges PHP Formular mit Eingabeprüfung Mehrseitiges PHP Formular mit Eingabeprüfung
« PHP: Dynamische Vorauswahl klappt und klappt nicht? | Verlinkung per recordID klappt nicht »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:14 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



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 61 62 63 64 65 66 67

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 61 62 63 64 65 66 67