Jump to content

Multi page forms, losing the session variable


nharding99

Recommended Posts

I'd describe myself as a "basic" php programmer....

 

I'm trying to build my first multi-page forms.

 

The first page is calculator_q1.php

No session variables are needed here, I have omitted a few options, the code looks like this

<form id="page1" method="post" action="calculator_q2.php">
<h1>1. Which best describes the primary and secondary sports combination that will be played on your pitch?</h1>
<table>
<tr><td>Rugby only</td><td><input type="radio" name="1_primary_secondary_combo" value="Rugby only"></td></tr>
<tr><td>Rugby/Soccer</td><td><input type="radio" name="1_primary_secondary_combo" value="Rugby Soccer"></td></tr>
<tr><td>Soccer/Hockey</td><td><input type="radio" name="1_primary_secondary_combo" value="Soccer Hockey"></td></tr>
</table>
<input class="blue" type="submit" value="Next">
</form>

The 2nd page is calculator_q2.php. This has some php to start the session, copy the result of form 1 to a session var, I do a debug echo and the variable is printed correctly so I think have captured it correctly. In extract, I do this:

<?php
 
	//Start the session
	session_start();		 
						 
	//Store our posted values in the session variables
	$_SESSION['1_primary_secondary_combo'] = $_POST['1_primary_secondary_combo'];					 
	
?>
<?php
	$debug=True;
	if ($debug) {
		echo ("Debug: session for q1 = ".$_SESSION['1_primary_secondary_combo']);
	}
?>
<form id="page2" method="post" action="calculator_q3.php">
<h1>2. Please choose a preferred surface</h1>
<table>
<tr><td>3G Rubber Crumb Filled Turf</td><td><input type="radio" name="2_preferred_surface" value="3G Rubber Crumb Filled Turf "></td></tr>
<tr><td>Sand Filled Turf</td><td><input type="radio" name="2_preferred_surface" value="Sand Filled Turf"></td></tr>
<tr><td>Sand Dressed Turf or<br>a Water Based Surface</td><td><input type="radio" name="2_preferred_surface" value="Sand Dressed Turf or a Water Based Surface"></td></tr>
</table>
							
<p>

<script>
function submitForm(action){
	document.getElementById('page2').action = action;
	document.getElementById('page2').submit();
}
</script>


<input class="blue" type="button" onclick="submitForm('/calculator_q1.php')" value="Previous" />
<input class="blue" type="button" onclick="submitForm('/calculator_q3.php')" value="Next" />
						
</form>

So far so good, but when I introduce page 3 (calculator_q3.php) then it prints the previous page's (from page 2) variable but can't find the session variable from question 1. This is from calculator_q3.php:

<?php
 
	//Start the session
	session_start();		 
						 
	//Store our posted values in the session variables
	$_SESSION['2_preferred_surface'] = $_POST['2_preferred_surface'];

?>
<?php
$debug=True;
if ($debug) {
	echo ("Debug: session for q1 = ".$_SESSION['1_primary_secondary_combo']);
	echo ("<br>Debug: session for q2 = ".$_SESSION['2_preferred_surface']);
}
?>

<form id="page3" method="post" action="calculator_q4.php">
<h1>3. Please choose one watering option</h1>
<table>
<tr><td>With a Rain Gun System</td><td><input type="radio" name="3_watering_option" value="With a Rain Gun System"></td></tr>
<tr><td>With a Rain gun System + Water Borehole</td><td><input type="radio" name="3_watering_option" value="With a Rain gun System + Water Borehole"></td></tr>
<tr><td>Not Required</td><td><input type="radio" name="3_watering_option" value="Not Required"></td></tr>							
</table>					
<p>
						
<script>
function submitForm(action){
	document.getElementById('page3').action = action;
	document.getElementById('page3').submit();
}
</script>

	<input class="blue" type="button" onclick="submitForm('/calculator_q2.php')" value="Previous" />
	<input class="blue" type="button" onclick="submitForm('/calculator_q4.php')" value="Next" />
</form>

To see this in action see: http://www.sports.hardingweb.net/calculator_q1.php

 

Any insights would be appreciated. Many thanks.

Can't find a session var? 

 

1 - you have to start the session at the top of every php script.

2 - Are you doing anything "special" with your sessions such as re-establishing the session id to avoid hackers and such?  I doubt that at your level you would be doing it, but I have to ask.

3 - Are you doing any "unset" function on your session vars?  Or on $_SESSION itself?

 

PS - you do use uppercase for the name '$_SESSON' all the time, yes?

your site isn't setting any session id cookie. it's likely that your session_start() statement isn't positioned in the code on your page before you output anything else to the browser.

 

setting php's error_reporting to E_ALL and display_errors to ON or log_errors to ON would help you by displaying or logging all the php detected errors.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.