Verarbeitung von Sessions

Luke85

Mitglied
Hallo liebe PHP-Gemeinde,

bin schön länger als passiver User hier unterwegs. Nun habe ich mich angemeldet, da ich mit mit PHP intensiver beschäftige.
Da ich ein mehrseitiges Formular erstellen möchte und mit viel Daten umgegangen wird, habe ich mich für Sessions entschieden.

Die Eingabe und Auswahl wird in die Session geschrieben. Habe diese in einem zweiten Formular mit einer verschachtelten Foreach-Schleife ausgelesen.

Nun habe ich aber das Problem, dass wenn ich im nächsten Schritt ein neues Formular mit Auswahlfeldern auswähle, anstatt einem Auswahlformular mit Foreach-Schleife, diese zweite Formularseite leer bleibt, bis auf den "Weiter"-Button.

Hier mal der Code zum besseren Verständnis:

01_daten_auswaehlen_allgemein
PHP:
<?php
if (!isset($_POST['gesendet'])) 
{
?>
<p class="Stil1">1. Schritt: Stellen Sie die Parameterauswahl für Allgemeine Parameter zusammen</p>

<form name="01_daten_auswaehlen_allgemein" action="02_daten_auswaehlen_hf.php" method="post">
        <p class="Stil2">Produktnummer angeben: 
        <input name="<?=$_SESSION['prdNr'];?>[]"  type="text" size="30" maxlength="50"/>
        /
        <input name="<?=$_SESSION['prdNr_zus'];?>[]" type="text" size="5"  maxlength="50"/>
        /
        <input name="<?=$_SESSION['prdNr_ext'];?>[]" type="text" size="30" maxlength="50"/>
        </p>

  <p class="Stil2">Wählen Sie die gewünschten Parameter aus:</p>

<?
	$query1 = "SELECT allgemein_parameter FROM eingabe_allgemein ORDER BY eingabe_allgemein.allgemein_parameter ASC";
	$result1 = mysql_query($query1) or die (mysql_error());
	while($row=mysql_fetch_assoc($result1))
	{
?>
        <table width="405" border="0" cellspacing="0" cellpadding="3" class="Stil2">
        <tr>
        <td width="5"><input type="checkbox" name="<?= $_SESSION['allgemein_parameter'];?>[]" value="<?=$row['allgemein_parameter'];?>"></td>
        <td width="400"><input type="text" value="<?=$row['allgemein_parameter'];?>" readonly="readonly" size="65"></td>
        </tr>
        </table>
<?
	}
}
?>

<input type="submit" name="gesendet" value="Weiter">
</form>

02_daten_auswaehlen_hf
PHP:
<?php
if (!isset($_POST['gesendet'])) 
{
?>
<p class="Stil1">2. Schritt: Stellen Sie die Parameterauswahl für HF Parameter zusammen</p>

<form name="02_daten_auswaehlen_hf" action="02_daten_auswaehlen_allgemein_auslesen.php" method="post">
        <p class="Stil2">Produktnummer angeben: 
        <input name="<?=$_SESSION['prdNr'];?>[]"  type="text" size="30" maxlength="50"/>
        /
        <input name="<?=$_SESSION['prdNr_zus'];?>[]" type="text" size="5"  maxlength="50"/>
        /
        <input name="<?=$_SESSION['prdNr_ext'];?>[]" type="text" size="30" maxlength="50"/>
        </p>

  <p class="Stil2">Wählen Sie die gewünschten Parameter aus:</p>

<?
	$query1 = "SELECT hf_parameter FROM eingabe_hf ORDER BY eingabe_hf.hf_parameter ASC";
	$result1 = mysql_query($query1) or die (mysql_error());
	while($row=mysql_fetch_assoc($result1))
	{
?>
        <table width="405" border="0" cellspacing="0" cellpadding="3" class="Stil2">
        <tr>
        <td width="5"><input type="checkbox" name="<?= $_SESSION['hf_parameter'];?>[]" value="<?=$row['hf_parameter'];?>"></td>
        <td width="400"><input type="text" value="<?=$row['hf_parameter'];?>" readonly="readonly" size="65"></td>
        </tr>
        </table>
<?
	}
}
?>

<input type="submit" name="gesendet" value="Weiter">
</form>

Woran liegt das denn, muss ich ein Input-Hidden Feld einbauen, um die Session dort zwischenzuspeichern?

Gruß, Luke.
 
action="02_daten_auswaehlen_hf.php"
Dein Formular zielt also auf die zweite Datei ab. Das erste was dort steht:
PHP:
if (!isset($_POST['gesendet']))

Die Variable ist aber gesetzt, eben durch das Absenden des vorherigen Formulars. Dadurch wird der gesamte Code nicht ausgeführt.
 
Dieses
Code:
if (!isset($_POST['gesendet']))
bezieht sich ja auf die zweite Seite, also das zweite Formular.
Wenn das weg ist, wie soll ich denn dann zur anderen Form-Seiteg gelangen?
Kann ich die Arrays aus dem ersten Formular in einem HIDDEN-Feld an das zweite schicken und so weiter und so fort bis ich am Ende angekommen bin?
 
Wenn du eh schon Session verwendest, warum dann nicht direkt es auch in der Session Speichern?

PHP:
<?php
$arr = array('foo', 'bar', 'foobar');
$_SESSION['arr'] = $arr;

echo $_SESSION['arr']['0']; # Ausgabe: foo
?>

Mal als kleines Beispiel.

Aber trotzdem vermute ich den Fehler weiterhin in deiner etwas seltsam gestalteten If Bedingung. Der Sinn dahinter möchte sich mir nicht ergeben?
 
Ich speicher doch meine Eingabe in Arrays:
Code:
"<?=$_SESSION['prdNr'];?>[]"
"<?=$_SESSION['prdNr_zus'];?>[]"
.
.
.
Ich dachte wenn "$_SESSION" vor einem Array steht wird dieses auch automatisch mitgenommen :confused:
 
Zurück