Store multiple selection from pagination info into single array

Discussion in 'PHP' started by assgar, May 19, 2007.

  1. #1
    Hi

    I was using a schroll bar to display multiple rows of dynamically created from database records.
    The scrolling was not displaying the data properly so I have decided to use pagination.

    The problem I am having is,
    if I select one item on page #1 and another on page #5
    only the last item selected on page #5 is stored in the array.

    How can I store selections from multiple pages into one array?

    Noite: I am using foreach loop to insert the selected record into a seperate table.



    
    <?php
    
    session_start();
    
    include("..db_connect_in.php");
    ?>
    
    <html>
    <body>
    <form action ="../process.php" method="post">
    <php?
    
    		$mysqli = db_connect();
                    db_select($mysqli, $db_id);
    
    
       /**----------------------------paging--------------------------------*/
    
    	//how many rows to show per page
    	$BottomRowsPerPage = 17;
    
    	//by default we show first page
    	$BottomPageNum = 1;
    	//get the current page number
    	if(isset($_GET['botpage']))
    	  {
    		$BottomPageNum = $_GET['botpage'];
    	  }
    	//counting the offset
    	$BottomOffset = ($BottomPageNum - 1) * $BottomRowsPerPage;
    
     
    	 /***************** determine which and how to select data to display ***************/
     	$query = "SELECT c.code_id, c.code, c.description
       		  FROM code c
    		  WHERE c.fee_code = m.code
    		  AND c.section_code = 'K'
    		  ORDER BY c.fee_code";
    	
    	$BottomPagingQuery = "LIMIT $BottomOffset, $BottomRowsPerPage";
         	$result = mysqli_query($mysqli,$query.$BottomPagingQuery); //or die('Error, bot query failed');
    
    
    
    
                //search area display area layer and table
    	    echo "<table width=\"99%\"  border=\"0\">
    	            <tr align=\"center\" bgcolor=\"#FFFFFF\" height=\"\">
                         <td width=\"100%\" >
    	              <div id=\"Layer2\" style=\"position:absolute; width:100%; height:550px; z-index:2; left: 12px; top: 305px;\">
                         <div id=\"pat-dash-scroll-box2\" style=\"overflow: off; float: left; width: 100%; height: 540px;  margin: 0px; \">\n";
    
    
    			//table begins
                 echo "<table width=\"99%\" height=\"332\" left =\"40\" align = \"\" border=\"0\" font face =\"arial\">\n";
    
    	
             /**----------------------loop record to display----------------------**/
    
    	$num_service = mysqli_num_rows($result);
    	for($i=0; $i < $num_service; $i++)
    		{
    	            $row = mysqli_fetch_array($result);
    
     		    list($code_id, $fee1_code, $description) = $row;
    
    	
    
    		    //diaplay search results in rows
    	  		echo"<tr height=\"10\">
    				<td width=\"4%\" bgcolor=\"#fff8dc\" align=\"center\">
    				    <input type=\"checkbox\" name=\"fee1_choice[$i]\" value=\"$code_id\"></td>
              			<td width=\"7%\" bgcolor=\"#fff8dc\" ><span class=\"style20\"><strong>$fee1_code</strong></span></td>
              			<td width=\"3%\" bgcolor=\"$bgcolor\" height=\"10\">
    		 		    <input type=\"text\" name=\"fee1_unit[$i]\" size=\"1\" maxlength=\"2\" value =\"$fee1_unit\"/></td>
              			<td width=\"79%\" bgcolor=\"$bgcolor\" class=\"style20\"> $description </td>
                	       echo"</tr>\n";
    
    		}//end of for loop
    
    
    
    
    	   /**----------------Bottom pagination-------------------**/
    		echo '<br>';
    		//how many rows we have in database
    		$result  = mysqli_query($mysqli,$query) or die('Error, 2 query failed');
    		$BottomNumRows = mysqli_num_rows($result);
    
    		//how many pages we have when using paging?
    		$BottomMaxPage = ceil($BottomNumRows/$BottomRowsPerPage);
    
    		$self = $_SERVER['PHP_SELF'];
    
    		/** creating 'previous' and 'next' link plus 'first page' and 'last page' link
                   print 'previous' link only if not on page one **/
    
    		if ($BottomPageNum > 1)
    			{
    				$BottomPage = $BottomPageNum - 1;
    				$BottomPrev = "<a href=\"$self?u_find=$find&u_field=$field&u_search=$searching&u_back=$back&u_special=$special&u_service=$services&u_sch_yr=$schedule_year&toppage=$TopPageNum&botpage=$BottomPage\">[Prev]</a> ";
    				$BottomFirst = "<a href=\"$self?u_find=$find&u_field=$field&u_search=$searching&u_back=$back&u_special=$special&u_service=$services&u_sch_yr=$schedule_year&toppage=$TopPageNum&botpage=1\">[First Page]</a> ";
    			}
    			else
    				{
    					$BottomPrev  = '[Prev]';       // we're on page one, don't enable 'previous' link  ,
    					$BottomFirst = '[First Page]'; // nor 'first page' link
    				}
    
    		//print 'next' link only if we're not
    		//on the last page
    		if ($BottomPageNum < $BottomMaxPage)
    			{
    				$BottomPage = $BottomPageNum + 1;
    				$BottomNext = "<a href=\"$self?u_find=$find&u_field=$field&u_search=$searching&u_back=$back&u_special=$special&u_service=$services&u_sch_yr=$schedule_year&toppage=$TopPageNum&botpage=$BottomPage\">[Next]</a>";
    				$BottomLast = "<a href=\"$self?u_find=$find&u_field=$field&u_search=$searching&u_back=$back&u_special=$special&u_service=$services&u_sch_yr=$schedule_year&botpage=$TopPageNum&botpage=$BottomMaxPage\">[Last Page]</a>";
    			}
    			else
    				{
    					$BottomNext = '[Next]';      // we're on the last page, don't enable 'next' link
    					$BottomLast = '[Last Page]'; // nor 'last page' link
    				}
    
    			// print the page navigation link
    			echo"<center> ". $BottomFirst . $BottomPrev . " <strong>$BottomPageNum</strong> of <strong>$BottomMaxPage</strong> pages " . $BottomNext . $BottomLast."</center>";
    
    
    	 echo"</div>\n";
             echo "</div>\n";
    	 echo "</table>\n";
            echo "</table>\n";
    
    
    
        $mysqli->close();//close connection to db
    
    ?>
    </form>
    </body>
    </html>
    
    
    PHP:
     
    assgar, May 19, 2007 IP
  2. lemaitre

    lemaitre Peon

    Messages:
    61
    Likes Received:
    5
    Best Answers:
    0
    Trophy Points:
    0
    #2
    The easiest option might be to fix the scrolling so it displays the data properly. Another option is to paginate client side with Javascript. That way all the rows are available in the form, you just don't display them all at once. When the user hits submit, all the rows are processed by your script. If Javascript is turned off, you display all the rows on one page.

    Another option is to merge the script you posted with the action of the form and make all the paging links (next & previous) into submits. That way the POST data is processed one page at a time. You would need to make the array of selected items into a session variable so that it would persist between page loads.

    Either option is a little tricky but doable.
     
    lemaitre, May 19, 2007 IP