I have a search that outputs data from a database. There is a limit to 100 results. When there are more then 100 results then there is a "show if" that displays so you can go to the next page and view the remaining results... The only problem is that when I click to go to the next page the part number that is being searched is lost so I just get the full database displayed. So I think I am loosing the session variables. If someone could please look at the code below I'd appreciate it! I have 2 pages. Page one has a search box and page two is the results with the limit display ect... the code below is page two. <?php session_start(); ////// Search Section $part_number=$_POST['part_number']; // Add Session Part Number session_register ("part_number"); session_write_close(); ?> <?php require_once('Connections/partsconnect.php'); ?> <?php function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue; switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } mysql_select_db($database_partsconnect, $partsconnect); $query_salesperson = "SELECT * FROM `admin` ORDER BY ID ASC"; $salesperson = mysql_query($query_salesperson, $partsconnect) or die(mysql_error()); $row_salesperson = mysql_fetch_assoc($salesperson); $totalRows_salesperson = mysql_num_rows($salesperson); ?> <?php $currentPage = $_SERVER["PHP_SELF"]; $maxRows_partnumbers = 100; $pageNum_partnumbers = 0; if (isset($_SESSION['pageNum_partnumbers'])) { $pageNum_partnumbers = $_SESSION['pageNum_partnumbers']; } $startRow_partnumbers = $pageNum_partnumbers * $maxRows_partnumbers; $colname_partnumbers = "-1"; if (isset($_SESSION['part_number'])) { $colname_partnumbers = (get_magic_quotes_gpc()) ? $_SESSION['part_number'] : addslashes($_SESSION['part_number']); } mysql_select_db($database_partsconnect, $partsconnect); $query_partnumbers = sprintf("SELECT * FROM `parts` WHERE `part_number` LIKE '%%{$part_number}%%' ORDER BY `part_number` ASC", $colname_partnumbers); $query_limit_partnumbers = sprintf("%s LIMIT %d, %d", $query_partnumbers, $startRow_partnumbers, $maxRows_partnumbers); $partnumbers = mysql_query($query_limit_partnumbers, $partsconnect) or die(mysql_error()); $row_partnumbers = mysql_fetch_assoc($partnumbers); if (isset($_SESSION['totalRows_partnumbers'])) { $totalRows_partnumbers = $_SESSION['totalRows_partnumbers']; } else { $all_partnumbers = mysql_query($query_partnumbers); $totalRows_partnumbers = mysql_num_rows($all_partnumbers); } $totalPages_partnumbers = ceil($totalRows_partnumbers/$maxRows_partnumbers)-1; $queryString_partnumbers = ""; if (!empty($_SERVER['QUERY_STRING'])) { $params = explode("&", $_SERVER['QUERY_STRING']); $newParams = array(); foreach ($params as $param) { if (stristr($param, "pageNum_partnumbers") == false && stristr($param, "totalRows_partnumbers") == false) { array_push($newParams, $param); } } if (count($newParams) != 0) { $queryString_partnumbers = "&" . htmlentities(implode("&", $newParams)); } } $queryString_partnumbers = sprintf("&totalRows_partnumbers=%d%s", $totalRows_partnumbers, $queryString_partnumbers); ?> <!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title><?php echo $_POST['part_number']; ?></title> <link href="css/stylez.css" rel="stylesheet" type="text/css" /> </head> <body> <table width="894" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><h1><font color="#000099">Semicon</font>Global Database</h1> Welcome, <? echo $_SESSION['first_name']; ?></font></strong> <a href="<?php echo $logoutAction ?>"><strong><font color="#FF0000">Log out</font></strong></a> </td> </tr> </table> <table width="894" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><h1><?php echo $_SESSION['part_number']; ?> </h1></td> </tr> </table> <table width="894" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="233" valign="middle" bgcolor="#FFFFFF"><p align="center"> <img src="images/chip.jpg" alt="<?php echo $_POST['part_number']; ?>" width="200" height="122" /><br /> <br /> (Not Actual Image) </p> </td> <td width="635" bgcolor="#FFFFFF"><br /> Looking for <?php echo $_SESSION['part_number']; ?>? Welcome to SemiconGlobal, we are here to help you. SemiconGlobal is an electronic component distributor for commodity, common, obsolete and hard to find electronic components. SemiconGlobal supplies Commercial, Industrial and Mil-Spec components to OEM customers, CEM customers and Repair Centers worldwide. SemiconGlobal maintains a large inventory of components, which may include <?php echo $_SESSION['part_number']; ?>, on hand to ship same day. SemiconGlobal is a full service <?php echo $_SESSION['part_number']; ?> supplier and distributor for <?php echo $_SESSION['part_number']; ?>. We have the ability to source and procure <?php echo $_SESSION['part_number']; ?> globally to assist you with your electronic component supply chain. <br /> <br /></td> <td width="26" bgcolor="#FFFFFF"> </td> </tr> </table> <br /> <table width="894" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><strong><font color="#FF0000">RFQ</font> - Send us an email by filling out the form below. </strong>We will contact you about your part <strong><?php echo $_SESSION['part_number']; ?></strong> within an hour. </td> </tr> </table> <br /> <form method="post" name="form1" action="sendemail.php"> <table width="894" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF"> <tr valign="baseline"> <td width="179" align="right" nowrap bgcolor="#d3d3d3"><div align="left">Part Number </div></td> <td width="289" bgcolor="#d3d3d3"><input type="text" name="part_number" value="<?php echo $_SESSION['part_number']; ?>" size="32"></td> <td width="200" bgcolor="#d3d3d3">Manufacturer</td> <td width="221" bgcolor="#d3d3d3"><input type="text" name="manufacturer" value="" size="32" /></td> </tr> <tr valign="baseline"> <td align="right" nowrap bgcolor="#d3d3d3"><div align="left">Quantity Needed </div></td> <td bgcolor="#d3d3d3"><input type="text" name="quantity_needed" value="" size="32" /></td> <td bgcolor="#d3d3d3">Target Price </td> <td bgcolor="#d3d3d3"><input type="text" name="target_price" value="" size="32" /></td> </tr> <tr valign="baseline"> <td align="right" nowrap bgcolor="#d3d3d3"><div align="left">Need Parts By </div></td> <td bgcolor="#d3d3d3"><input type="text" name="need_parts_by" value="" size="32" /></td> <td bgcolor="#d3d3d3">Company Name</td> <td bgcolor="#d3d3d3"><input type="text" name="company_name" value="" size="32" /></td> </tr> <tr valign="baseline"> <td align="right" nowrap bgcolor="#d3d3d3"><div align="left">Company Type </div></td> <td bgcolor="#d3d3d3"><input type="text" name="company_type" value="" size="32" /></td> <td bgcolor="#d3d3d3">Contact Person </td> <td bgcolor="#d3d3d3"><input type="text" name="contact_person" value="" size="32" /></td> </tr> <tr valign="baseline"> <td align="right" nowrap bgcolor="#d3d3d3"><div align="left">Phone</div></td> <td bgcolor="#d3d3d3"><input type="text" name="phone" value="" size="32" /></td> <td bgcolor="#d3d3d3">Fax</td> <td bgcolor="#d3d3d3"><input type="text" name="fax" value="" size="32" /></td> </tr> <tr valign="baseline"> <td align="right" nowrap bgcolor="#d3d3d3"><div align="left">eMail</div></td> <td bgcolor="#d3d3d3"><input type="text" name="e_mail" value="" size="32" /></td> <td bgcolor="#d3d3d3">Message</td> <td bgcolor="#d3d3d3"><input type="text" name="message" value="" size="32" /></td> </tr> <tr valign="baseline"> <td align="right" nowrap bgcolor="#d3d3d3"><div align="left">Region</div></td> <td bgcolor="#d3d3d3"><input type="text" name="region" value="" size="32" /></td> <td bgcolor="#d3d3d3">Sales Person </td> <td bgcolor="#d3d3d3"><select name="sales_person"> <?php do { ?> <option value="<?php echo $row_salesperson['first_name']?>"><?php echo $row_salesperson['first_name']?> <?php echo $row_salesperson['last_name']?></option> <?php } while ($row_salesperson = mysql_fetch_assoc($salesperson)); $rows = mysql_num_rows($salesperson); if($rows > 0) { mysql_data_seek($salesperson, 0); $row_salesperson = mysql_fetch_assoc($salesperson); } ?> </select></td> </tr> <tr valign="baseline"> <td align="right" nowrap bgcolor="#d3d3d3"><div align="left"></div></td> <td colspan="3" bgcolor="#d3d3d3"><input name="submit" type="submit" value="Send Quote Request" /></td> </tr> </table> <input type="hidden" name="MM_insert" value="form1"> </form> <table width="894" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><div id="adminmenu"><a href="view-rfqs.php">View RFQ's</a> <? if ($_SESSION[level] == "admin" ) { print "<a href=\"add-parts.php\">Add Parts</a> <a href=\"view-users.php\">View Users</a> <a href=\"add-users.php\">Add Users</a> <a href=\"part-search.php\">Part Search</a> <a href=\"view-parts.php\">View All Parts</a>"; } else{} ?> </div></td> </tr> </table> <br /> <table width="894" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF"> <tr colspan="4"> <td bgcolor="#000000">Part Number </td> <td bgcolor="#000000">Quantity</td> <td bgcolor="#000000">Manufacturer</td> <td bgcolor="#000000">Get A Quote </td> </tr> <?php do { ?> <tr> <td bgcolor="#d3d3d3"><?php echo $row_partnumbers['part_number']; ?> </td> <td bgcolor="#d3d3d3"><?php echo $row_partnumbers['quantity']; ?> </td> <td bgcolor="#d3d3d3"><?php echo $row_partnumbers['manufacturer']; ?> </td> <td bgcolor="#d3d3d3"><a href="request-quote.php?part_number=<?php echo $row_partnumbers['part_number']; ?>&manufacturer=<?php echo $row_partnumbers['manufacturer']; ?>">Fast Quote</a></td> </tr> <?php } while ($row_partnumbers = mysql_fetch_assoc($partnumbers)); ?> </table> <br> <table width="50%" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td width="23%" align="center" bgcolor="#d3d3d3"><?php if ($pageNum_partnumbers > 0) { // Show if not first page ?> <a href="<?php printf("%s?pageNum_partnumbers=%d%s", $currentPage, 0, $queryString_partnumbers); ?>">First</a> <?php } // Show if not first page ?> </td> <td width="31%" align="center" bgcolor="#d3d3d3"><?php if ($pageNum_partnumbers > 0) { // Show if not first page ?> <a href="<?php printf("%s?pageNum_partnumbers=%d%s", $currentPage, max(0, $pageNum_partnumbers - 1), $queryString_partnumbers); ?>">Previous</a> <?php } // Show if not first page ?> </td> <td width="23%" align="center" bgcolor="#d3d3d3"><?php if ($pageNum_partnumbers < $totalPages_partnumbers) { // Show if not last page ?> <a href="<?php printf("%s?pageNum_partnumbers=%d%s", $currentPage, min($totalPages_partnumbers, $pageNum_partnumbers + 1), $queryString_partnumbers); ?>">Next</a> <?php } // Show if not last page ?> </td> <td width="23%" align="center" bgcolor="#d3d3d3"><?php if ($pageNum_partnumbers < $totalPages_partnumbers) { // Show if not last page ?> <a href="<?php printf("%s?pageNum_partnumbers=%d%s", $currentPage, $totalPages_partnumbers, $queryString_partnumbers); ?>">Last</a> <?php } // Show if not last page ?> </td> </tr> </table> <div align="center">Records <?php echo ($startRow_partnumbers + 1) ?> to <?php echo min($startRow_partnumbers + $maxRows_partnumbers, $totalRows_partnumbers) ?> of <?php echo $totalRows_partnumbers ?> </p> </div> </body> </html> <?php mysql_free_result($partnumbers); ?> Code (markup):
Not entirely sure why you're doing that kind of stuff. I can tell you the reason you're having problems is because you're using session_write_close() at the top before you mess with any of the session data (so it's being set for the page and not for anything else), so really you're just setting the variable $_SESSION['part_number']. The difference in using $_SESSION['part_number'] = 'val'; and session_register('part_number') and THEN $_SESSION['part_number'] = 'val'; is that session_register() will call to session_start() if it isn't already called. I have @session_start(); at the beginning of my database files, which is always the first thing called in every script, and then I just use $_SESSION['var'] = $val; to set them. This is the way that I recommend doing it, and get rid of session_write_close() all together