tryingtolearn Posted December 28, 2008 Share Posted December 28, 2008 Totally new to this - sorry if this belongs in the php forum. But I know it cant be done in php so I am checking here. I have a paginated result from a mysql table Each item has a checkbox I need to get the values of each item checked but was running into problems once the user goes through the pagination (I lose the values from the previous page(s). So I was thinking that I could add the value of the checkbox to a php array when the user checks the box then when they are all done and click submit I can then get all the values in the array and process them. 1. Is this possible? 2. If so, is that what ajax is used for? 3. if so - How would I go about it? I would have thought this would be a common thing but numerous searches havent turned up much at all. Thanks for any insight or direction. Quote Link to comment https://forums.phpfreaks.com/topic/138655-adding-checkbox-value-to-php-array-on-click/ Share on other sites More sharing options...
tryingtolearn Posted December 30, 2008 Author Share Posted December 30, 2008 I take it AJAX isnt the way to go for this... Anyone have any ideas on what would be the way to go? Quote Link to comment https://forums.phpfreaks.com/topic/138655-adding-checkbox-value-to-php-array-on-click/#findComment-725842 Share on other sites More sharing options...
Philip Posted December 30, 2008 Share Posted December 30, 2008 No, it's just because there aren't many people that help on the ajax forums. So what you're wanting to do (want to make sure this is correct), the page displays X results with a checkbox by each one. Whenever the user is ready, they click the next page - but then you lose all the checks on the previous page, correct? I see 2 different ways to go through this. It really depends on how your page is setup. Does your page get the results via AJAX, or a full page reload? (in other words, does it update one section of your page, or the whole page when they load the next set of results)? Quote Link to comment https://forums.phpfreaks.com/topic/138655-adding-checkbox-value-to-php-array-on-click/#findComment-725850 Share on other sites More sharing options...
tryingtolearn Posted December 30, 2008 Author Share Posted December 30, 2008 It is a page reload I was going to keep adding it to the url but this database set has over 9000 items That could get to be a pretty long url! Here is the php class that paginates the mysql results class Paginator{ var $items_per_page; var $items_total; var $current_page; var $num_pages; var $mid_range; var $low; var $high; var $limit; var $return; var $default_ipp = 10; var $querystring; function Paginator() { $this->current_page = 1; $this->mid_range = 7; $this->items_per_page = (!empty($_GET['ipp'])) ? $_GET['ipp']:$this->default_ipp; } function paginate() { if($_GET['ipp'] == 'All') { $this->num_pages = ceil($this->items_total/$this->default_ipp); $this->items_per_page = $this->default_ipp; } else { if(!is_numeric($this->items_per_page) OR $this->items_per_page <= 0) $this->items_per_page = $this->default_ipp; $this->num_pages = ceil($this->items_total/$this->items_per_page); } $this->current_page = (int) $_GET['page']; // must be numeric > 0 if($this->current_page < 1 Or !is_numeric($this->current_page)) $this->current_page = 1; if($this->current_page > $this->num_pages) $this->current_page = $this->num_pages; $prev_page = $this->current_page-1; $next_page = $this->current_page+1; if($_GET) { $args = explode("&",$_SERVER['QUERY_STRING']); foreach($args as $arg) { $keyval = explode("=",$arg); if($keyval[0] != "page" And $keyval[0] != "ipp") $this->querystring .= "&" . $arg; } } if($_POST) { foreach($_POST as $key=>$val) { if($key != "page" And $key != "ipp") $this->querystring .= "&$key=$val"; } } if($this->num_pages > 10) { $this->return = ($this->current_page != 1 And $this->items_total >= 10) ? "<a class=\"paginate\" href=\"$_SERVER[php_SELF]?page=$prev_page&ipp=$this->items_per_page$this->querystring\">« Previous</a> ":"<span class=\"inactive\" href=\"#\">« Previous</span> "; $this->start_range = $this->current_page - floor($this->mid_range/2); $this->end_range = $this->current_page + floor($this->mid_range/2); if($this->start_range <= 0) { $this->end_range += abs($this->start_range)+1; $this->start_range = 1; } if($this->end_range > $this->num_pages) { $this->start_range -= $this->end_range-$this->num_pages; $this->end_range = $this->num_pages; } $this->range = range($this->start_range,$this->end_range); for($i=1;$i<=$this->num_pages;$i++) { if($this->range[0] > 2 And $i == $this->range[0]) $this->return .= " ... "; // loop through all pages. if first, last, or in range, display if($i==1 Or $i==$this->num_pages Or in_array($i,$this->range)) { $this->return .= ($i == $this->current_page And $_GET['page'] != 'All') ? "<a title=\"Go to page $i of $this->num_pages\" class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" title=\"Go to page $i of $this->num_pages\" href=\"$_SERVER[php_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> "; } if($this->range[$this->mid_range-1] < $this->num_pages-1 And $i == $this->range[$this->mid_range-1]) $this->return .= " ... "; } $this->return .= (($this->current_page != $this->num_pages And $this->items_total >= 10) And ($_GET['page'] != 'All')) ? "<a class=\"paginate\" href=\"$_SERVER[php_SELF]?page=$next_page&ipp=$this->items_per_page$this->querystring\">Next »</a>\n":"<span class=\"inactive\" href=\"#\">» Next</span>\n"; $this->return .= ($_GET['page'] == 'All') ? "<a class=\"current\" style=\"margin-left:10px\" href=\"#\">All</a> \n":"<a class=\"paginate\" style=\"margin-left:10px\" href=\"$_SERVER[php_SELF]?page=1&ipp=All$this->querystring\">All</a> \n"; } else { for($i=1;$i<=$this->num_pages;$i++) { $this->return .= ($i == $this->current_page) ? "<a class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" href=\"$_SERVER[php_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> "; } $this->return .= "<a class=\"paginate\" href=\"$_SERVER[php_SELF]?page=1&ipp=All$this->querystring\">All</a> \n"; } $this->low = ($this->current_page-1) * $this->items_per_page; $this->high = ($_GET['ipp'] == 'All') ? $this->items_total:($this->current_page * $this->items_per_page)-1; $this->limit = ($_GET['ipp'] == 'All') ? "":" LIMIT $this->low,$this->items_per_page"; } function display_items_per_page() { $items = ''; $ipp_array = array(10,25,50,100,'All'); foreach($ipp_array as $ipp_opt) $items .= ($ipp_opt == $this->items_per_page) ? "<option selected value=\"$ipp_opt\">$ipp_opt</option>\n":"<option value=\"$ipp_opt\">$ipp_opt</option>\n"; return "<span class=\"paginate\">Items per page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[php_SELF]?page=1&ipp='+this[this.selectedIndex].value+'$this->querystring';return false\">$items</select>\n"; } function display_jump_menu() { for($i=1;$i<=$this->num_pages;$i++) { $option .= ($i==$this->current_page) ? "<option value=\"$i\" selected>$i</option>\n":"<option value=\"$i\">$i</option>\n"; } return "<span class=\"paginate\">Go To Page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[php_SELF]?page='+this[this.selectedIndex].value+'&ipp=$this->items_per_page$this->querystring';return false\">$option</select>\n"; } function display_pages() { return $this->return; } } Quote Link to comment https://forums.phpfreaks.com/topic/138655-adding-checkbox-value-to-php-array-on-click/#findComment-726047 Share on other sites More sharing options...
Philip Posted December 30, 2008 Share Posted December 30, 2008 How are you getting the next page, by submitting a form, or by clicking a link? Quote Link to comment https://forums.phpfreaks.com/topic/138655-adding-checkbox-value-to-php-array-on-click/#findComment-726444 Share on other sites More sharing options...
tryingtolearn Posted December 30, 2008 Author Share Posted December 30, 2008 The class provides a few different links Jump to page Next Display X numbers per page Then a numbered set 1,2,34,...917 All links or it goes to the page once the option is selected from the dropdown. they are generated from the following codes in the class $this->return = ($this->current_page != 1 And $this->items_total >= 10) ? "<a class=\"paginate\" href=\"$_SERVER[php_SELF]?page=$prev_page&ipp=$this->items_per_page$this->querystring\">« Previous</a> ":"<span class=\"inactive\" href=\"#\">« Previous</span> "; OR $this->return .= ($i == $this->current_page And $_GET['page'] != 'All') ? "<a title=\"Go to page $i of $this->num_pages\" class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" title=\"Go to page $i of $this->num_pages\" href=\"$_SERVER[php_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> "; OR $this->return .= (($this->current_page != $this->num_pages And $this->items_total >= 10) And ($_GET['page'] != 'All')) ? "<a class=\"paginate\" href=\"$_SERVER[php_SELF]?page=$next_page&ipp=$this->items_per_page$this->querystring\">Next »</a>\n":"<span class=\"inactive\" href=\"#\">» Next</span>\n"; $this->return .= ($_GET['page'] == 'All') ? "<a class=\"current\" style=\"margin-left:10px\" href=\"#\">All</a> \n":"<a class=\"paginate\" style=\"margin-left:10px\" href=\"$_SERVER[php_SELF]?page=1&ipp=All$this->querystring\">All</a> \n"; OR $this->return .= ($i == $this->current_page) ? "<a class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" href=\"$_SERVER[php_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> "; OR $this->return .= "<a class=\"paginate\" href=\"$_SERVER[php_SELF]?page=1&ipp=All$this->querystring\">All</a> \n"; OR this for the jump to sections function display_items_per_page() { $items = ''; $ipp_array = array(10,25,50,100,'All'); foreach($ipp_array as $ipp_opt) $items .= ($ipp_opt == $this->items_per_page) ? "<option selected value=\"$ipp_opt\">$ipp_opt</option>\n":"<option value=\"$ipp_opt\">$ipp_opt</option>\n"; return "<span class=\"paginate\">Items per page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[php_SELF]?page=1&ipp='+this[this.selectedIndex].value+'$this->querystring';return false\">$items</select>\n"; } function display_jump_menu() { for($i=1;$i<=$this->num_pages;$i++) { $option .= ($i==$this->current_page) ? "<option value=\"$i\" selected>$i</option>\n":"<option value=\"$i\">$i</option>\n"; } return "<span class=\"paginate\">Go To Page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[php_SELF]?page='+this[this.selectedIndex].value+'&ipp=$this->items_per_page$this->querystring';return false\">$option</select>\n"; } But I dont want the checkbox value added to the URL The results will contain somewhere in the neighborhood of 9000+ results The checkbox will select those to be deleted If I add them to the URL that could get pretty long. Quote Link to comment https://forums.phpfreaks.com/topic/138655-adding-checkbox-value-to-php-array-on-click/#findComment-726604 Share on other sites More sharing options...
Philip Posted December 30, 2008 Share Posted December 30, 2008 Well, you wouldn't put all of the checkboxes into the URL. Just the ones from the recent page. Then store them into a session array. Whenever your pulling the results - see if the checkbox ID is in the array, if so echo out CHECKED, else do nothing. Quote Link to comment https://forums.phpfreaks.com/topic/138655-adding-checkbox-value-to-php-array-on-click/#findComment-726609 Share on other sites More sharing options...
tryingtolearn Posted December 31, 2008 Author Share Posted December 31, 2008 Only problem is it doesnt get added to the array. But the more Im thinking about it Id run into the whole problem of unchecking images then. Then Id have to get it out of the array Ill just set it up to handle each page individually I guess - straight php. Quote Link to comment https://forums.phpfreaks.com/topic/138655-adding-checkbox-value-to-php-array-on-click/#findComment-726644 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.