sniperscope Posted May 18, 2011 Share Posted May 18, 2011 Hi gurus! Recently i am facing a tiny problem. I want to do is pagination like (<< PREVIOUS | INDEX | NEXT >>). My codes are below. Regards <?php $SQL = mysql_query("SELECT id FROM blogmaster ORDER BY id DESC"); while($ROW = mysql_fetch_array($SQL)) { $MYARRAY[] = $ROW['id']; } $ARRAYCOUNT = count($MYARRAY); if($MYARRAY[0] != $_GET['id']) { $DESC = $MYARRAY[0] + 1; echo '<a href="/blog/detail.php?id=' .$MYARRAY[$DESC]. '" class="p-link"><< PREV</a> '; } echo '<a href="/blog/index.php" class="p-link">INDEX</a> '; if($MYARRAY[$ARRAYCOUNT] != $_GET['id']) { $ASC = $MYARRAY[$ARRAYCOUNT] - 1; echo '<a href="/blog/detail.php?id=' .$MYARRAY[$ASC]. '" class="p-link">NEXT >></a> '; } ?> Also how can i paginate something like <<PREV | 1 2 3 4 5 | NEXT>> when user reach page #5 and click NEXT link then page number should change <<PREV | 6 7 8 9 10 | NEXT>> Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/ Share on other sites More sharing options...
amolv Posted May 18, 2011 Share Posted May 18, 2011 i used jquery to do the same.. if wanna do tell me.. Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/#findComment-1216881 Share on other sites More sharing options...
sniperscope Posted May 18, 2011 Author Share Posted May 18, 2011 i used jquery to do the same.. if wanna do tell me.. I am very open for any solutions.... Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/#findComment-1216882 Share on other sites More sharing options...
micmania1 Posted May 18, 2011 Share Posted May 18, 2011 // Current Page $page = 1; // How many records are we showing on a single page? $records_per_page = 10; // Calculate the lowest row of data to fetch from the database $minimum_row = ($page-1) * $records_per_page; // = 0 $query = "SELECT * FROM table LIMIT $minimum_row, $records_per_page"; $result = mysql_query($query) or die("MySQL Error"); if (mysql_num_rows($result) > 0) { // Deal with your data } mysql_free_result($result); if ($page > 1) { echo 'Previous Page'; } // To work out if we should display a next page link we have to find out how many records there are. $query = "SELECT COUNT(*) AS 'total' FROM table"; $result = mysql_query($query) or die("MySQL Error"); $num_records = mysql_fetch_object($result)->total; // Work out maximum amount of pages $max_page = floor($num_records/$records_per_page); if ($page < $max_page) { echo 'Next Page'; } I haven't tested the code, and you could probably optimize it a little more. The benefit of running it this way is that you don't fetch every record from the database meaning you use a lot less memory. Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/#findComment-1216902 Share on other sites More sharing options...
sniperscope Posted May 18, 2011 Author Share Posted May 18, 2011 Dear micmania 1 Thanks for your afford and code. Unfortunately this is not what i am looking for. Let's say i have 10 records in my DB and those records are: 4 5 9 10 11 19 28 47 48 62 And again let's say my visitor arrived index.php at first time. So, visitor will see record #62(because ORDER BY id DESC LIMIT 1). When visitor click the NEXT >> page i want to get record #48 (as you can see between #48 and #62 is empty). How can i skip those empty record lines and assign #48 into anchor <a href="index.php?id=48">NEXT >></a> My displaying order is newer to older so NEXT means older record and PREV means newer record. Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/#findComment-1216912 Share on other sites More sharing options...
micmania1 Posted May 18, 2011 Share Posted May 18, 2011 $id = 10; $query = "SELECT id, (SELECT id FROM table WHERE id>'$id') AS 'prev', (SELECT id FROM table WHERE id<'$id') AS 'next' WHERE id='$id'"; I think that should work. Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/#findComment-1216917 Share on other sites More sharing options...
amolv Posted May 18, 2011 Share Posted May 18, 2011 <script type="text/javascript"> // click functions are here which will controls pagination buttons enable and disable function pagebyclick1(dom,page){ count = dom.next().children().children().children('input').val(); if(count > 5 ) { if(page>1) { dom.next().children().children().children('span[class=previous]').attr('disabled', '').attr('style',"opacity:1;"); dom.next().children().children().children('span[class=first]').attr('disabled', '').attr('style',"opacity:1;"); }else{ dom.next().children().children().children('span[class=previous]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children('span[class=first]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); } if(page==count) { dom.next().children().children().children('span[class=next]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children('span[class=last]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); }else{ dom.next().children().children().children('span[class=next]').attr('disabled', '').attr('style',"opacity:1;"); dom.next().children().children().children('span[class=last]').attr('disabled', '').attr('style',"opacity:1;"); } } if(page == 1) { dom.next().children().children().children('span[class=previous]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children('span[class=first]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); } var sl=parseInt(count)-1;var last=count; if(page == sl || page ==last ) { if(page==last){ dom.next().children().children().children('span[class=next]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children('span[class=last]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); } if(count > 5 ){ for(var i=count-4,x=2;i<=count;i++,x++) { dom.next().children().children().children().eq(x).html(i); if(i==page) { dom.next().children().children().children().removeClass('active'); dom.next().children().children().children().eq(x).addClass('active'); } } } }else if(page==1 || page==2 ) { if(page==1){ dom.next().children().children().children('span[class=previous]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children('span[class=first]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); } if(count > 5 ){ for(var i=1,x=2;i<=5;i++,x++) { dom.next().children().children().children().eq(x).html(i); if(i==page) { dom.next().children().children().children().removeClass('active'); dom.next().children().children().children().eq(x).addClass('active'); } } } }else { var start;var end; start=parseInt(page)-2;end=parseInt(page)+2; for(var i=start,x=2;i<=end;i++,x++) { dom.next().children().children().children().eq(x).html(i); if(i==page) { dom.next().children().children().children().removeClass('active'); dom.next().children().children().children().eq(x).addClass('active'); } } } } function previouspage1(dom,page) { if(page !=2){ dom.next().children().children().children('span[class=active]').prev('span').addClass('active'); dom.next().children().children().children('span[class=active]').last().removeClass('active'); } dom.next().children().children().children('span[class=next]').attr('disabled', '').attr('style',"opacity:1;"); dom.next().children().children().children('span[class=last]').attr('disabled', '').attr('style',"opacity:1;"); page=parseInt(page)-1; count = dom.next().children().children().children('input').val(); var sl=count-1;var last=count; if(page == sl || page ==last ) { //$("#"+dom+" span[class=active]").removeClass('active').prev().addClass('active'); }else if(page==1) { dom.next().children().children().children('span[class=previous]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children('span[class=first]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children().removeClass('active'); dom.next().children().children().children().eq(2).html('1').addClass('active'); for(var i=2,x=3;i<=5;i++,x++){ dom.next().children().children().children().eq(x).html(i); } }else if( page==2 ){ } else { var start;var end; start=page-2;end=page+2; for(var i=start,x=2;i<=end;i++,x++) { dom.next().children().children().children().eq(x).html(i); if(i==page) { dom.next().children().children().children().removeClass('active'); dom.next().children().children().children().eq(x).addClass('active'); } } } } function nextpage1(dom,page) { dom.next().children().children().children('span[class=active]').next('span').addClass('active'); dom.next().children().children().children('span[class=active]').first().removeClass('active'); dom.next().children().children().children('span[class=previous]').attr('disabled', '').attr('style',"opacity:1;"); dom.next().children().children().children('span[class=first]').attr('disabled', '').attr('style',"opacity:1;"); page=parseInt(page)+1; count = dom.next().children().children().children('input').val(); var sl=count-1;var last=count; if(page == last){ dom.next().children().children().children('span[class=next]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children('span[class=last]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); } else if(page == sl ) { }else if(page==1 || page==2 ) { }else { var start;var end; start=page-2;end=page+2; for(var i=start,x=2;i<=end;i++,x++) { dom.next().children().children().children().eq(x).html(i); if(i==page) { dom.next().children().children().children().removeClass('active'); dom.next().children().children().children().eq(x).addClass('active'); } } } } function firstpage1(dom) { dom.next().children().children().children('span[class=next]').attr('disabled', '').attr('style',"opacity:1;"); dom.next().children().children().children('span[class=last]').attr('disabled', '').attr('style',"opacity:1;"); dom.next().children().children().children('span[class=first]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children('span[class=previous]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children().removeClass('active'); count = dom.next().children().children().children('input').val(); for(var i=1,x=2;i<=5;i++,x++) { dom.next().children().children().children().eq(x).html(i); if(i==1) { dom.next().children().children().children().eq(x).addClass('active'); } } } function lastpage1(dom) { dom.next().children().children().children('span[class=first]').attr('disabled', '').attr('style',"opacity:1;"); dom.next().children().children().children('span[class=previous]').attr('disabled', '').attr('style',"opacity:1;"); dom.next().children().children().children('span[class=next]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children('span[class=last]').attr('disabled', 'true').attr('style',"opacity:0.5;cursor: auto;"); dom.next().children().children().children().removeClass('active'); count = dom.next().children().children().children('input').val(); for(var i=count-4,x=2;i<=count;i++,x++) { dom.next().children().children().children().eq(x).html(i); if(i==count) { dom.next().children().children().children().eq(x).addClass('active'); } } } function pagebyclick(count,dom,html,first,prev,next,last){ var pagenumber=$("#"+dom+" span[class=active]").html(); if(count > 5 ) { if(html>1) { $("."+prev+"").attr('disabled', '').attr('style',"opacity:1;"); $('.'+first+"").attr('disabled', '').attr('style',"opacity:1;"); }else{ $("."+prev+"").attr('disabled', 'true').attr('style',"opacity:0.5;"); $("."+first+"").attr('disabled', 'true').attr('style',"opacity:0.5;"); } if(html==count) { $("."+next+"").attr('disabled', 'true').attr('style',"opacity:0.5;"); $("."+last+"").attr('disabled', 'true').attr('style',"opacity:0.5;"); }else{ $("."+next+"").attr('disabled', '').attr('style',"opacity:1;"); $("."+last+"").attr('disabled', '').attr('style',"opacity:1;"); } } var sl=count-1;var last=count; if(pagenumber == sl || pagenumber ==last ) { if(pagenumber==last){ $("."+next+"").attr('disabled', 'true').attr('style',"opacity:0.5;"); $("."+last+"").attr('disabled', 'true').attr('style',"opacity:0.5;"); } if(count > 5 ){ for(var i=count-4,x=2;i<=count;i++,x++) { $("#"+dom+"").children().eq(x).html(i); if(i==pagenumber) { $("#"+dom+" span").removeClass('active'); $("#"+dom+"").children().eq(x).addClass('active'); } } } }else if(pagenumber==1 || pagenumber==2 ) { if(pagenumber==1){ $("."+prev+"").attr('disabled', 'true').attr('style',"opacity:0.5;"); $("."+first+"").attr('disabled', 'true').attr('style',"opacity:0.5;"); } if(count > 5 ){ for(var i=1,x=2;i<=5;i++,x++) { $("#"+dom+"").children().eq(x).html(i); if(i==pagenumber) { $("#"+dom+" span").removeClass('active'); $("#"+dom+"").children().eq(x).addClass('active'); } } } }else { var start;var end; start=pagenumber-2;end=parseInt(pagenumber)+2; for(var i=start,x=2;i<=end;i++,x++) { $("#"+dom+"").children().eq(x).html(i); if(i==pagenumber) { $("#"+dom+" span").removeClass('active'); $("#"+dom+"").children().eq(x).addClass('active'); } } } } /////////////////////Five click functions needs to write :- var dom="listpages",firstp="first",prevp="previous",nextp="next",lastp="last";var count;var html; function datacall(url) { $.getJSON(o_url,function(lead_data) { $('.leadlist').html(''); $.each(lead_data, function(i,ldata){ // jsonlist data add to your div // the above function datalist called on each click to update list }); } } $("#leadpages span").not(".previouslead, .nextlead, .firstlead, .lastlead").click(function() { countlead=$("#leadcount").val(); $("#leadpages span").removeClass('active'); $(this).addClass('active'); leadhtml=$(this).html(); pagebyclick(countlead,leaddom,leadhtml,leadfirst,leadprev,leadnext,leadlast); $('.leadlist').html('<img alt="" src="/css/images/loader.gif" style="margin:18px 0 0 450px;">'); var page = $(this).html(); var url='/json.php?query=page='+page; datacall(url); }); $('.first').live("click",function(){ var check=$(this).attr('disabled'); if(check =='true') {}else{ firstpage(dom,lastp,nextp); $('.prospectlist').html('<img alt="" src="/css/images/loader.gif" style="margin:18px 0 0 450px;">'); enq_url='/json.php?page=1'; prospectList(enq_url); $('.previous').attr('disabled', 'true').attr('style',"opacity:0.5;"); $('.first').attr('disabled', 'true').attr('style',"opacity:0.5;"); } }); $('.last').live("click",function(){ var check=$(this).attr('disabled'); if(check =='true') {}else{ count=$("#enqcount").val(); lastpage(dom,firstp,prevp,count); $('.prospectlist').html('<img alt="" src="/css/images/loader.gif" style="margin:18px 0 0 450px;">'); var lastp=$("#prospectpages span[class=next]").prev().html(); enq_url='/json.php?page='+lastp; prospectList(enq_url); $('.next').attr('disabled', 'true').attr('style',"opacity:0.5;"); $('.last').attr('disabled', 'true').attr('style',"opacity:0.5;"); } }); $('.previous').click(function() { var check=$(this).attr('disabled'); if(check =='true') {}else{ count=$("#enqcount").val(); previouspage(dom,count,firstp,prevp,nextp,lastp); $('.prospectlist').html('<img alt="" src="/css/images/loader.gif" style="margin:18px 0 0 450px;">'); var pagenumber =$("#prospectpages span[class=active]").html(); enq_url='/json.php?page='+pagenumber; prospectList(enq_url); if($("#prospectpages span[class=active]").prev().html()=="Prev") { $('.previous').attr('disabled', 'true').attr('style',"opacity:0.5;"); $('.first').attr('disabled', 'true').attr('style',"opacity:0.5;"); } } }); $('.next').click(function() { var check=$(this).attr('disabled'); if(check =='true') {}else{ count=$("#enqcount").val(); nextpage(dom,count,firstp,prevp,nextp,lastp); $('.prospectlist').html('<img alt="" src="/css/images/loader.gif" style="margin:18px 0 0 450px;">'); var pagenumber =$("#prospectpages span[class=active]").html(); enq_url='/json.php?page='+pagenumber; prospectList(enq_url); if($("#prospectpages span[class=active]").next().html()=="Next") { $(".next").attr('disabled', 'true').attr('style',"opacity:0.5;"); $(".last").attr('disabled', 'true').attr('style',"opacity:0.5;"); } } }); </script> ///////////////////// now on test.php <div class="leadlist stable"> // div/area containing list </div> <div id="listpages"> <?php $per_page = 10 ; $add=0; $nt= date('Y-m-d H:i:s', strtotime('+7 days')); $selectLead = "query"; $resultleads=mysql_query($selectLead); $countleads = mysql_num_rows($resultleads); if($countleads < $per_page) { $add=1; }else{ $ex=$countleads%$per_page; if($ex < 10 && $ex!=0) { $add=1; }else {$add=0;} } $leadpages =floor($countleads/$per_page); $leadpages=$leadpages+$add; if($leadpages > 5){?> <span class="first>First</span> <span class="previous">Prev</span> <?php for($i=1;$i<=5; $i++){ if($i==1){ ?> <span class="active"><?php echo $i; ?></span><?php }else{ ?> <span><?php echo $i; ?></span> <?php } }?> <span class="next">Next</span> <span class="last">Last</span> <?php }else if($leadpages <= 5){?> <span class="first" disabled="true" style="opacity:0.5;">First</span> <span class="previous" disabled="true" style="opacity:0.5;">Prev</span> <?php for($i=1;$i<=$leadpages; $i++){ if($i==1){ ?> <span class="active"><?php echo $i; ?></span><?php }else{?> <span ><?php echo $i; ?></span> <?php } }?><span class="next" disabled="true" style="opacity:0.5;">Next</span> <span class="last" disabled="true" style="opacity:0.5;">Last</span> <?php } ?> Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/#findComment-1216924 Share on other sites More sharing options...
sniperscope Posted May 18, 2011 Author Share Posted May 18, 2011 Dear micmania 1 and amolv Thanks for help. I am going give a try tomorrow. And let you know result. Thanks again. Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/#findComment-1216925 Share on other sites More sharing options...
micmania1 Posted May 18, 2011 Share Posted May 18, 2011 $id = 10; $query = "SELECT id, (SELECT id FROM table WHERE id>'$id' ORDER BY id DESC LIMIT 1) AS 'prev', (SELECT id FROM table WHERE id<'$id' ORDER BY id DESC LIMIT 1) AS 'next' WHERE id='$id' LIMIT 1"; EDIT: Changes to subqueries. Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/#findComment-1216936 Share on other sites More sharing options...
sniperscope Posted May 19, 2011 Author Share Posted May 19, 2011 My first problem solved.. Thanks for who provide code.... however, i want to know how can i paginate something like <<PREV | 1 2 3 4 5 | NEXT>> when user reach page #5 and click NEXT link then page number should change <<PREV | 6 7 8 9 10 | NEXT>> Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/#findComment-1217375 Share on other sites More sharing options...
dreamwest Posted May 19, 2011 Share Posted May 19, 2011 http://www.wizecho.com/nav=extra&s=bits#3 Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/#findComment-1217378 Share on other sites More sharing options...
sniperscope Posted May 19, 2011 Author Share Posted May 19, 2011 dreamwest thanks for response. i am on my way to give a try.... thanks Quote Link to comment https://forums.phpfreaks.com/topic/236724-pagination-help/#findComment-1217379 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.