Jump to content

Recommended Posts

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.

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)?

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;
}
}

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.

 

 

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.

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.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.