cspitzig Posted November 30, 2007 Share Posted November 30, 2007 Hi I am creating a form with data from the database and a user input field. I then send the info to a confirmation page I have tried to bundle the data into Session array to send to the confirmation page, I can't get the data into the session array, although the session does test true So instead I tried to do a second call to the database on the confirmation page but just end up creating a loop on my results. Can someone give me some pointers please order page //call the database require ('db.php'); //# Set the SQL statement $sql = "SELECT * FROM assign ORDER BY id"; # Connect to database service and get link ID $dblink = mysql_connect($hostname, $user, $pwd) or die ("Error: No connection to MySQL server\n"); # Connect to database mysql_select_db($dbname,$dblink) or die ("Error: MySQL database not selected\n"); # Send SQL statement $result = mysql_query($sql, $dblink) or die ("SQL query failed: $sql"); # Get number of rows (records) returned by SQL statement $rows = mysql_num_rows($result); //# If there is at least one row ($rows > 0) , display in table if ($rows > 0) { # Display the SQL query if $debug is on if ($debug) { echo "\n<p><font color=\"red\"><tt>$sql</tt></font></p>\n\n"; } echo "<form action=\"confirmation.php\" method=\"post\">"; # Build the table header echo "<table class=\"table\" border=\"1\" cellpadding=\"3\" cellspacing=\"0\">\n"; echo "<tr>\n"; echo "\t<th>Stock ID</th>\n"; echo "\t<th class=\"item\">Item</th>\n"; echo "\t<th class=\"cost\">Cost</th>\n"; echo "\t<th class=\"amount\">Amount<br />Required</th>\n"; echo "</tr>\n\n"; # Populate the table echo "<!-- Begin MySQL data presentation -->\n"; // create the test finish comment while ($widget = mysql_fetch_array($result)) { echo "<tr>\n"; echo "\t<td class=\"item\">".$widget["id"]."</td>\n"; echo "\t<td class=\"item\">".$widget["item"]."</td>\n"; echo "\t<td class=\"cost\">".$widget["cost"]." each</td>\n"; echo "\t<td class=\"amount\"><input type=\"text\" name=\"f_amount[".$widget["id"]."]\" size=\"6\"></td>\n"; echo "</tr>\n"; } # Close the database link mysql_close($dblink); # Close the table and post the summary echo "<!-- End MySQL data presentation -->\n\n"; echo "</table>\n"; echo "<br /><br />"; echo "<input type=\"submit\" value=\"Submit\" name=\"B1\" /><input type=\"reset\" value=\"Reset\" name=\"B2\" />"; echo "</form>"; } else { # If no results from SQL query, send a "sorry" page echo "<p>No records were found</p>\n"; if ($debug) { echo "<p>$sql</p>\n"; } } confirmation page // Build the table header echo "<table class=\"table\" border=\"1\" cellpadding=\"3\" cellspacing=\"0\" summary=\"This table is used to complete an online order\">\n"; echo "<tr>\n"; echo "\t<th>Quantity</th>\n"; echo "\t<th class=\"item\">Item</th>\n"; echo "\t<th class=\"cost\">Price</th>\n"; echo "\t<th class=\"amount\">Cost</th>\n"; echo "</tr>\n\n"; //create the test finish comment if (isset($_POST["f_amount"])) { foreach($_POST["f_amount"] as $index => $field) { if (!empty($field)){ echo "<tr>\n"; echo "\t<td class=\"item\">$field</td>\n"; echo "\t<td class=\"item\">".$widget["item"]."</td>\n"; echo "\t<td class=\"cost\">".$widget["cost"]." each</td>\n"; echo "\t<td class=\"amount\">calculated</td>\n"; echo "</tr>\n"; } } } echo "</table>\n"; print "<br />"; //Display details // echo "You ordered $field items of Widget ID#$index<br>"; } ?> any help would be really appreciated! Link to comment https://forums.phpfreaks.com/topic/79585-session-or-a-2nd-call-to-the-data-base/ Share on other sites More sharing options...
Guest Posted November 30, 2007 Share Posted November 30, 2007 Heya, One thing you might consider trying is: on the confirmation page, have a form with a series of hidden input fields containing the data from the previous form. You can do this like so: <form action="finaldestination.php" method="post"> <input type="hidden" name="item" value="<?=$_POST['item']?>" /> <input type="hidden" name="cost" value="<?=$_POST['cost']?>" /> ... <input type="submit" name="confirm" value="confirm" /> <input type="submit" name="cancel" value="cancel" /> </form> Hopefully that helps. EDIT: If you don't want to add all those hidden inputs, or you have many of them, you can serialize/base64_encode them into one hidden input. Note, that I use base64_encode because serialized data may break out of the HTML. There might be a better encoding function, but my mind is elsewhere. Like so: <?php $data = base64_encode(serialize($_POST)); ?> <form action="finaldestination.php" method="post"> <input type="hidden" name="data" value="<?=$data?>" /> ... <input type="submit" name="confirm" value="confirm" /> <input type="submit" name="cancel" value="cancel" /> </form> And in finaldestination.php, extract it with: $data = unserialize(base64_decode($_POST['data'])); Link to comment https://forums.phpfreaks.com/topic/79585-session-or-a-2nd-call-to-the-data-base/#findComment-403101 Share on other sites More sharing options...
cspitzig Posted November 30, 2007 Author Share Posted November 30, 2007 I just found out that I have to use sticky forms on my initial page, would this work for a post? [.code] echo "\t<td class=\"item\"><input type="text" name="id" size="20" value="' . $_POST['.$widget['id].'] . '" /></td>\n"; [./code] if I can get the syntax right? Link to comment https://forums.phpfreaks.com/topic/79585-session-or-a-2nd-call-to-the-data-base/#findComment-403121 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.