formular funktioniert nicht in div-layout

Hey,
ja schon wieder ein Problem mit dem Divlayout nun ist es folgendes und zwar wenn man nicht alle Felder im Formular ausfüllt die ausgefüllt werden müssen, werden nicht die vorgegebenen Fehlermeldungen angezeigt sondern die Startseite neu geladen. :confused:

Und anstatt dass er /index.php?section=anmelden&action=submit ausführt, fürht er /index.php?action=submit aus.

LG Saskia

PHP:
<?php
include('db.php');

if(isset(
$_REQUEST['action'])) $action=$_REQUEST['action'];

else $action='eintragen';

// Template laden
function gettemplate($template,$endung='htm')
{
return str_replace("\"","\\\"",implode("",file($template.".".$endung)));
}
function dooutput($template) {
echo $template;
}

if($action=='eintragen')
{
eval("dooutput(\"".gettemplate("Templates/anmeldung")."\");");

}

  if($action=='submit')
{

// Variabeln aus dem Formular 
if(isset($_POST['name']))   $name = $_POST['name']; else $name = '';
if(isset($_POST['mail']))   $mail = $_POST['mail']; else $mail = '';
if(isset($_POST['passwort1']))   $passwort1 = $_POST['passwort1']; else $passwort1 = '';
if(isset($_POST['passwort2']))   $passwort2 = $_POST['passwort2']; else $passwort2 = '';
if(isset($_POST['page']))   $url = $_POST['page']; else $page = '';
if(isset($_POST['agb']))   $agb = $_POST['agb']; else $agb = '';


// Pr&uuml;fen der Felder
if($name==''||$passwort1==''||$passwort2==''||$agb==''||!ereg('^[ -._A-Za-zÀ-ÖØ-öø-ÿ0-9-]+(\.[_A-Za-zÀ-ÖØ-öø-ÿ0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$', $mail )||preg_match('/^https?:\/\/(?:(?:[a-z][a-z0-9]{1,63}|[a-z0-9.-]+\.[a-z][a-z0-9]{1,63}             )\.[a-z]{2,4}|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(?![a-z0-9_.-])/ix', $page))

{
// Fehlermeldungen

if($name==''){ echo "name"; }
if($passwort1=='') {  echo "pass1"; }
if($passwort2=='') {  echo "pass2"; }
if($passwort1!=$passwort2) {  echo "pass"; }
if($agb=='') {  echo  "agb"; }
if(!ereg("^[ -._A-Za-zÀ-ÖØ-öø-ÿ0-9-]+(\.[_A-Za-zÀ-ÖØ-öø-ÿ0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $mail)){       echo "mail"; } 
if(preg_match('/^https?:\/\/(?:(?:[a-z][a-z0-9]{1,63}|[a-z0-9.-]+\.[a-z][a-z0-9]{1,63}             )\.[a-z]{2,4}|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})(?![a-z0-9_.-])/ix', $page)) {  echo "url";}

  echo "zur&uuml;ck";

}
else
{

// Datum wird ermittelt
$datum = date('d.m.Y');

// Daten werden  in Tabelle eingetragen
$eintrag = "INSERT INTO teilnehmer (name, mail, passwort1, passwort2, page, datum)
            VALUES ('".addslashes($name)."', '".addslashes($mail)."', '".addslashes($passwort1)."', '".addslashes($passwort2)."', '".addslashes($page)."', '$datum')";

    $eintragen = mysql_query($eintrag);
    
                  if($eintragen) {
                   include("good_eintrag.php");
                } else {
                    include("error_eintrag.php");
                }
                
            }
    }                       
?>
 
Zuletzt bearbeitet:
Es wäre doch noch interessant zu sehen, wie das Formular aussieht, wie dort im <form> das action attribut aussieht usw.

Und anstatt dass er /index.php?section=anmelden&action=submit ausführt, fürht er /index.php?action=submit aus.

Wo wird denn die Fallunterscheidung durchgeführt von $_REQUEST/$_GET['section']? Finde in dem Code snippet dazu auch keinen Hinweis.

Sonst habe ich beim drüberschauen, ohne die eben erwähnten Informationen, auf die schnelle nichts gefunden, was dieses Verhalten auslösen könnten.
 
formular:
HTML:
<html>

<head>
<link rel=stylesheet type="text/css" href="style_main.css">  
</head>

<body>

<form action="$PHP_SELF?action=submit" method="post">
<table>
<tr>
<td>Name:</td>
<td><input type="text" name="name" value="" size="" maxlength="" /></td>
</tr>
<tr>
<td>eMail:</td>
<td><input type="text" name="mail" value="" size="" maxlength="" /></td>
</tr>
<tr>
<td>Passwort:</td>
<td><input type="password" name="passwort1" value="" size="" maxlength="" /></td>
</tr>
<tr>
<td>Wiederholung:</td>
<td><input type="password" name="passwort2" value="" size="" maxlength="" /></td>
</tr>
<tr>
<td>Hof-Adresse:</td>
<td><input type="name" name="page" value="" size="" maxlength="" /></td>
</tr>
<tr>
<td>Nutzungsbedigungen gelesen?</td>
<td><input name="agb" type="checkbox"></td>
</tr>
</table>
<input type="submit" name="submit" value="eintragen">
</form>

<p>

<hr />

<a href="impressum" target="">Impressum</a>

</body>

</html>


Wo wird denn die Fallunterscheidung durchgeführt von $_REQUEST/$_GET['section']? Finde in dem Code snippet dazu auch keinen Hinweis.

hier versteh ich nicht was du meinst.
 
PHP:
<form action="$PHP_SELF?action=submit" method="post">

Was genau versuchst du da zu tun?
 
So dürfte es gehen:
HTML:
HTML:
<html>

<head>
<link rel=stylesheet type="text/css" href="style_main.css">  
</head>

<body>

<form action="<?=$_SERVER['PHP_SELF'];?>?section=anmelden&action=submit" method="post">
<table>
<tr>
<td>Name:</td>
<td><input type="text" name="name" value="" size="" maxlength="" /></td>
</tr>
<tr>
<td>eMail:</td>
<td><input type="text" name="mail" value="" size="" maxlength="" /></td>
</tr>
<tr>
<td>Passwort:</td>
<td><input type="password" name="passwort1" value="" size="" maxlength="" /></td>
</tr>
<tr>
<td>Wiederholung:</td>
<td><input type="password" name="passwort2" value="" size="" maxlength="" /></td>
</tr>
<tr>
<td>Hof-Adresse:</td>
<td><input type="name" name="page" value="" size="" maxlength="" /></td>
</tr>
<tr>
<td>Nutzungsbedigungen gelesen?</td>
<td><input name="agb" type="checkbox"></td>
</tr>
</table>
<input type="submit" name="submit" value="eintragen">
</form>

<p>

<hr />

<a href="impressum" target="">Impressum</a>

</body>

</html>
Änderungen:
HTML:
<form action="$PHP_SELF?action=submit" method="post">
zu
HTML:
<form action="<?=$_SERVER['PHP_SELF'];?>?section=anmelden&action=submit" method="post">
 
Zurück