Reputation: 99
I have been trying to add infinite scrolling to codeigniter's pagination with this plugin.
http://www.infinite-scroll.com
This is my codes so far:
<script type = "text/javascript">
$('#comments').infinitescroll({
navSelector : "a#next:last", // selector for the paged navigation (it will be hidden)
nextSelector : "a#next:last", // selector for the NEXT link (to page 2)
itemSelector : "#comments" // selector for all items you'll retrieve
});
</script>
This is the default usage. Let us assume #comments hold my content. My paginated page looks something like these.
http://localhost/ci/index.php/chat/load/p1u/10
http://localhost/ci/index.php/chat/load/p1u/20
etc.
I have even added this line of code to make it work but with no success:
<a id="next" href="http://localhost/ci/index.php/chat/load/p1u/10">next page</a>
Any ideas?
Upvotes: 3
Views: 4778
Reputation: 11
i have simple step for the scrolling pagination in code igniter, i have check this it work better
$(window).scroll(function(){
if ($(window).scrollTop() == $(document).height() - $(window).height()){
// run our call for pagination
var table = document.getElementById("table");
var lastRowIndex = table.rows.length-1;
loadMore(lastRowIndex);
}
});
function loadMore(lastRowIndex)
{
$.ajax({
url: "http://localhost/CodeIgniter/index.php/form/loadmore", //form is y controller
type:'POST',
data: "row="+lastRowIndex, // row wich is post
success: function(data){ //here data which recevie form controller
var json = JSON.parse(data);
var count = json.length;
var html;
for( var i = 0; i < count; i++ )
{
html += '<tr>';
html += '<td><input type="checkbox" name="id[]" id="id[]" class="check" value="'+ json[i].id +' "></td>';
html += '<td>'+ json[i].id +'</td>';
html += '<td><img src="http://localhost/CodeIgniter/upload/'+ json[i].image +'" class="img-circle" height="25" width="30"></td>';
html += '<td> ' + json[i].firstname +'</td>';
html += '<td> ' + json[i].middlename +'</td>';
html += '<td> ' + json[i].lastname +'</td>';
html += '<td> ' + json[i].address +'</td>';
html += '<td> ' + json[i].mobile +'</td>';
html += '<td> ' + json[i].email +'</td>';
html += '<td> ' + json[i].gender +'</td>';
html += '<td><a href="http://localhost/CodeIgniter/index.php/form/del/'+ json[i].id +'">Delete</a></td>';
html += '<td><a href="http://localhost/CodeIgniter/index.php/form/edite/'+ json[i].id +'">Update</a></td>';
html += '</tr>';
}$("#body").append(html); //add this html to th table body which id='body'
}
});
}
i use this controller function
public function loadmore()
{
$page=$_POST['row'];
$per_page = 10;
$student = $this->Form_model->getview_detail($per_page,$page);
if($student !== FALSE)
{
echo json_encode($student); //send data to script
}
}
`
and this is model
public function getview_detail($limit, $start)
{
$this->db->limit($limit, $start);
$query = $this->db->get('form');
return $query->result_array();
}
Upvotes: 0
Reputation: 489
I've found that this definitely works better with $config["use_page_numbers"] = TRUE; but if you're going to go that route, you'll have to adjust your offset. This is how I got it working:
$offset = ($this->uri->segment(2)) ? ($this->uri->segment(2) * $config["per_page"]) - $config["per_page"] : 0;
Upvotes: 1
Reputation: 30766
Switch to using $config["use_page_numbers"]
in pagination.php if you want to use /1 /2 /3 instead of /10 /20 /30.
Upvotes: 1