Hallo Forum,
Kommen wir zur Funktionsweise:
Mein Script:
Ein Formular:
Formhandler (verwaltet die Validation der Eingaben und Sessions):
ich habe ein Problem in meinem Formular, was die Auswertung von Radiobox in Sessions anbelangt. Und zwar habe ich schon überall gesucht, hab auch einige Lösungsvorschläge dazu gefunden, komme jedoch immer noch nicht weiter (meinem Fall spezifisch). Ich bin ein Neuling was PHP angeht und habe zuvor auch nicht viel mit Sessions gearbeitet, somit bitte ich um Geduld und Verständnis.
Kommen wir zur Funktionsweise:
Das Formular beinhaltet Felder. Diese Felder werden durch Checkboxen,Radioboxen oder auch Auswahllisten unterstützt.
Die Sessions hierbei, sollen die vom Nutzer eingegebenen Daten (sei es Selektieren,Checken oder Schreiben) speichern und zum nötigen Zeitpunkt wieder ausgeben. Das erspart dem User die wiederholte Eingabe seiner Daten. Bei Checkboxen lief das bisher ohne Probleme (in meinem Script), nur bei Radioboxen und Auswahllisten komme ich nicht mehr weiter.
Die Sessions hierbei, sollen die vom Nutzer eingegebenen Daten (sei es Selektieren,Checken oder Schreiben) speichern und zum nötigen Zeitpunkt wieder ausgeben. Das erspart dem User die wiederholte Eingabe seiner Daten. Bei Checkboxen lief das bisher ohne Probleme (in meinem Script), nur bei Radioboxen und Auswahllisten komme ich nicht mehr weiter.
Mein Script:
PHP-Code:
<!-- Index.php (Layout) -->
<?PHP
session_start();//hier wird die Session gestartet (übergreifend für das ganze Script)
ERROR_REPORTING(E_ALL);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="style/style.css" type="text/css" />
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="style/script/jquery.validate.js"></script>
<title>Formular auf mehreren Seiten</title>
<script><!-- für Jquery Validation -->
$(document).ready(function(){
$("#commentForm").validate();
});
</script>
</head>
<body>
<div align="center">
<div id="top_alternative">
<!--<div class="logo"></div>-->
</div>
<div id="content_head">
<h1>Formulare</h1>
</div>
<div id="content_main">
<div align="left">
<!-- ab hier werden die Formulare in den Container geladen und ausgegeben -->
<?PHP
$includeDir = ".".DIRECTORY_SEPARATOR."forms".DIRECTORY_SEPARATOR;
$includeDefault = $includeDir."form0.php";
if(isset($_GET['page']) && !empty($_GET['page']))
{
$_GET['page'] = str_replace("\0", '', $_GET['page']);
$includeFile = basename(realpath($includeDir.$_GET['page'].".php"));
$includePath = $includeDir.$includeFile;
if(!empty($includeFile) && file_exists($includePath))
{
include($includePath);
}
else
{
include($includeDefault);
}
}
else
{
include($includeDefault);
}
?>
<div id="footer">
<a href="#">Impressum</a> |
<a href="#">Kontakt</a>
</div>
</div>
</div>
</body>
</html>
PHP-Code:
<?php
if(isset($_POST['form1']['Geschlecht'])){
$_SESSION['Geschlecht'] = $_POST['Geschlecht']; // entweder feld1 oder feld2
}
$checked="";
if(isset($_SESSION['form1']['Geschlecht']) == "feld1")
{
$checked='checked="checked"';
}
$checked2="";
if(isset($_SESSION['form1']['Geschlecht']) == "feld2")
{
$checked2='checked="checked"';
}
$checked3 = isset($_SESSION['form1']['feld3']) ? 'checked="checked"' : '';
?>
<?php if(!empty($_GET['error_checkboxes1'])): ?>
<div style="color: red; padding: 5px; border: 1px solid red;font-weight: bold;">
Bitte Feld ausfüllen.
</div>
<?php endif; ?>
<form method="post" action="forms/formhandler.php?s=1">
<fieldset>
<h2>1. Sind Sie Ärztin oder Arzt?</h2>
<div style="margin-left:10px;">
<input type="radio" name="Geschlecht" value="feld1" id="one" <?php if($_SESSION['Geschlecht'] == 'feld1') echo 'checked="checked"'; ?> />
<label for="one">Arzt</label><br />
<input type="radio" name="Geschlecht" id="two" value="feld2" <?php echo $checked2; ?> />
<label for="two">Ärztin</label>
</div>
</fieldset>
<div class="content_split"></div>
</fieldset>
<div class="content_split"></div>
<p>
<div style="margin-left:10px;">
<input type="submit" class="btn_forward" name="submit" value="" />
</div>
</p>
</form>
PHP-Code:
<?php
switch($_GET['s']) {
case '0':
handlePage0();
break;
case '1':
handlePage1();
break;
}
function handlePage1()
{
$valid = false;
if(isset($_POST['submit']))
{
if(!empty($_POST['feld1']) or !empty($_POST['form1']['feld2'] ))
{
unset($_SESSION['form1']);
foreach($_POST as $k => $v) {
$_SESSION['form1'][$k] = $v;
}
$valid = true;
}
}
if($valid) {
header('Location:../index.php?page=form1_1') ;
} else {
header('Location:../index.php?page=form1&error_checkboxes1=error') ;
}
}
?>
Kommentar