Ik zit aal een dag te worstelen met een probleem dat sessie variabelen die via een selectie lijst uit een formulier niet op de andere pagina tevoorschijn komen.
Het werkt wel met een input en ook met een vaste tekst waarde, maar niet vanuit een selectie lijst.
Ik gebruik een testvoorbeeld van internet om het probleem uit te leggen (en om het werkend te krijgen).

Het beginbestand heb ik sessietest.php genoemd en bestaat uit de onderstaande code:
<code>
<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">;
<html>
<head>
<title>Session testing 123</title>
</head>
<body>
<form method="post" name="bereken" action="">
<div class="field">
<h2>Vertrekdatum</h2>
<select name="retourdatum" id="retourdatum" class="select">
<?php echo("<option>02-11-2010</option><option>10-11-2010</option>\n");
?>
</select>


</div>
<input type="submit" name="bereken" id="bereken" value="berekenen" id="berekenen" />
</form>
<?php if (isset($_POST['bereken'])) {
$retourdatum = $_POST['retourdatum'];
$_SESSION['retourdatum'] = $retourdatum;
}
//
echo 'Content of $_SESSION[\'retourdatum\'] is: '.$retourdatum.'<br />';
//
?>

<a href="page2.php">Next page</a>
</body>
</html>
</code>
De code van de tweede pagina bestaat uit:
<code>
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">;
<html>
<head>
<title>Session testing 123 page 2</title>
</head>
<body>
<?php
echo 'De retourdatum is: '.$_SESSION["retourdatum"].'<br />';

unset($_SESSION['retourdatum']);

session_destroy();
?>

</body>
</html>
</code>

Als ik nu de knop Berekenen druk wordt de sessie variabele gevuld en kan ik met de link next page de sessie variabele uitlezen.
Ik wil echter direct vanuit het posten van het formulier de seesie variabele meenemen en opo de tweede pagina tonen.
Ik wijzig dan in de regel <code><form method="post" name="bereken" action=""></code> de action in page2.php.
Na een druk op berekenen verschijnt netjes de nieuwe pagina, echter zonder de waarde uit de sessie.
Wat doe ik fout?
Al vast bedankt voor jullie hulp.
Als je action veranderd in page2.php wordt $_POST['retourdatum']; naar page2.php verstuurd en dus niet in de sessie gezet.
Hallo Bo,

Dat klinkt logisch, het zijn dus 2 afzonderlijke acties die uitgevoerd moeten worden.
Is het mogelijk om dit te doen in een actie (1 druk op de knop)?
Ik weet niet wat je precies wil, maar je zou het met een header kunnen doen:

<?php
if (isset($_POST['bereken'])) {
$retourdatum = $_POST['retourdatum'];
$_SESSION['retourdatum'] = $retourdatum;
header('location:page2.php');
}
?>

en dan zonder page2.php als action in je form.
Hallo Bo,

Dat werkt grandioos, weer wat geleerd.

Reageren