简体   繁体   中英

pagination and serial number php mysql

Hello I have following code with serial NO. and pagination. pagination is working but when I go to next page then serial number start from 1. I have limited 10 row in every page so I want to start next page from SN. 11-20 , 21-30 from 3rd page . please help me.

 <?php include_once("../database/config.php"); $start=0; $limit=10; $sn=$start; if(isset($_GET['mainmdsid'])) { $mainmdsid=$_GET['mainmdsid']; $start=($mainmdsid-1)*$limit; } else{ $mainmdsid=1; } $result = mysqli_query($mysqli, "SELECT *from item , mainmds , school WHERE empid=$empid AND mainmds.itmid=item.itmid AND mainmds.scid=school.scid LIMIT $start, $limit"); ?> <table align="center" id="customers"> <tr> <th>SN.</th> <th>Item Name</th> <th>Quantity</th> <th>Status</th> <th>If unsatisfactory provide comments </th> <th>Date</th> <th>School Name</th> <th>Variant</th> <th>Thana</th> <th>If others then please specify </th> <th>Remove</th> </tr> <?php //while($res = mysql_fetch_array($result)) { // mysql_fetch_array is deprecated, we need to use mysqli_fetch_array while($res = mysqli_fetch_array($result)) { $sn+=1; $sdate = $res['sdate']; $fmdate = strtotime($sdate); echo "<tr>"; echo "<td>".$sn."</td>"; echo "<td>".$res['itmname']."</td>"; if (strpos($empbranch,"NFO")!==false) { echo "<td>".$res['DNFO']."</td>"; } else if (strpos($empbranch,"DFO")!==false) { echo "<td>".$res['DDFO']."</td>"; } else if (strpos($empbranch,"CO")!==false) { echo "<td>".$res['DCO']."</td>"; } else if (strpos($empbranch,"SHARP")!==false) { echo "<td>".$res['DSHARP']."</td>"; } else if (strpos($empbranch,"Other")!==false) { echo "<td>".$res['DOther']."</td>"; } echo "<td>".$res['istatus']."</td>"; echo "<td>".$res['usstatus']."</td>"; echo "<td>".$res['sdate']."</td>"; echo "<td>" .date('d M Y', $fmdate). "</td>"; echo "<td>".$res['ivariant']."</td>"; echo "<td>".$res['scthana']."</td>"; echo "<td>".$res['oscname']."</td>"; echo "<td><a href=\\"delete.php?mainmdsid=$res[mainmdsid]\\" onClick=\\"return confirm('Are you sure you want to delete?')\\">Delete</a></td></tr>"; } ?> </table> <?php //fetch all the data from database. $rows=mysqli_num_rows(mysqli_query($dbconfig,"SELECT *from item , mainmds , school WHERE empid=$empid AND mainmds.itmid=item.itmid AND mainmds.scid=school.scid")); //calculate total page number for the given table in the database $total=ceil($rows/$limit);?> <table align="center" border="1"> <?php if($mainmdsid>1) { //Go to previous page to show previous 10 items. If its in page 1 then it is inactive echo "<tr><td><a href='?mainmdsid=".($mainmdsid-1)."' class='button'>PREVIOUS</a></td>"; } if($mainmdsid!=$total) { ////Go to previous page to show next 10 items. echo "<td><a href='?mainmdsid=".($mainmdsid+1)."' class='button'>NEXT</a></td>"; } ?> <?php //show all the page link with page number. When click on these numbers go to particular page. for($i=1;$i<=$total;$i++) { if($i==$mainmdsid) { echo "<td>".$i."</td>"; } else { echo "<td><a href='?mainmdsid=".$i."'>".$i."</a></td>"; } } ?> </tr> </table> 

just move your $sn initialization after if condition

$start=0;
$limit=10;

if(isset($_GET['mainmdsid']))
{
    $mainmdsid=$_GET['mainmdsid'];
    $start=($mainmdsid-1)*$limit;
}
else{
    $mainmdsid=1;
}
$sn=$start;

change your code to this... it will work

<?php include_once("../database/config.php"); 

    $start=0;
    $limit=10;

    if(isset($_GET['mainmdsid']))
    {
        $mainmdsid=$_GET['mainmdsid'];
        $start=($mainmdsid-1)*$limit; // here we are multiplying page number with limit.
    }

    $sn=$start;

    if(isset($_GET['mainmdsid']))
    {
        $mainmdsid=$_GET['mainmdsid'];
        $start=($mainmdsid-1)*$limit;
    }
    else{
        $mainmdsid=1;
    }
           $result = mysqli_query($mysqli, "SELECT *from item , mainmds , school WHERE empid=$empid AND mainmds.itmid=item.itmid AND mainmds.scid=school.scid LIMIT $start, $limit");      


    ?>
                <table align="center" id="customers">

        <tr>
            <th>SN.</th>
            <th>Item Name</th>
            <th>Quantity</th>
            <th>Status</th>
            <th>If unsatisfactory provide comments </th>
            <th>Date</th>
            <th>School Name</th>
            <th>Variant</th>
            <th>Thana</th>

            <th>If others then please specify </th>
            <th>Remove</th>         

        </tr>

        <?php 
        //while($res = mysql_fetch_array($result)) { // mysql_fetch_array is deprecated, we need to use mysqli_fetch_array 
        while($res = mysqli_fetch_array($result)) { 
        $sn+=1;

        $sdate = $res['sdate'];
        $fmdate = strtotime($sdate);


            echo "<tr>";
            echo "<td>".$sn."</td>";
            echo "<td>".$res['itmname']."</td>";

                if (strpos($empbranch,"NFO")!==false) {
            echo "<td>".$res['DNFO']."</td>";   
            }
            else if (strpos($empbranch,"DFO")!==false) {
            echo "<td>".$res['DDFO']."</td>";   
            }
            else if (strpos($empbranch,"CO")!==false) {
            echo "<td>".$res['DCO']."</td>";    
            }
            else if (strpos($empbranch,"SHARP")!==false) {
            echo "<td>".$res['DSHARP']."</td>"; 
            }
            else if (strpos($empbranch,"Other")!==false) {
            echo "<td>".$res['DOther']."</td>"; 
            }
            echo "<td>".$res['istatus']."</td>";
            echo "<td>".$res['usstatus']."</td>";

            echo "<td>".$res['sdate']."</td>";
            echo "<td>" .date('d M Y', $fmdate). "</td>";
            echo "<td>".$res['ivariant']."</td>";   
            echo "<td>".$res['scthana']."</td>";
            echo "<td>".$res['oscname']."</td>";





            echo "<td><a href=\"delete.php?mainmdsid=$res[mainmdsid]\" onClick=\"return confirm('Are you sure you want to delete?')\">Delete</a></td></tr>";        
        }
        ?>
         </table>

         <?php
    //fetch all the data from database.
    $rows=mysqli_num_rows(mysqli_query($dbconfig,"SELECT *from item , mainmds , school WHERE empid=$empid AND mainmds.itmid=item.itmid AND mainmds.scid=school.scid"));
    //calculate total page number for the given table in the database 
    $total=ceil($rows/$limit);?>
    <table align="center" border="1">
    <?php if($mainmdsid>1)
    {
        //Go to previous page to show previous 10 items. If its in page 1 then it is inactive
        echo "<tr><td><a href='?mainmdsid=".($mainmdsid-1)."' class='button'>PREVIOUS</a></td>";
    }
    if($mainmdsid!=$total)
    {
        ////Go to previous page to show next 10 items.
        echo "<td><a href='?mainmdsid=".($mainmdsid+1)."' class='button'>NEXT</a></td>";
    }
    ?>

    <?php
    //show all the page link with page number. When click on these numbers go to particular page. 
            for($i=1;$i<=$total;$i++)
            {
                if($i==$mainmdsid) { echo "<td>".$i."</td>"; }

                else { echo "<td><a href='?mainmdsid=".$i."'>".$i."</a></td>"; }
            }
    ?>
    </tr>
    </table>

On click off every next page button, increase the limit of $start from 0 to +10. and again call your DB Query, and for previous button decrement value of $start to -10. And also use variable currentPage and sets it value to 1 in start.

Here is sample code which you can use :

$currentPage = 1;
$start = 0;
$recordPerPage= 10;

//First query your database here, after that do some work on previous and next button clicked

if(array_key_exists('next',$_POST)){
   $start = (currentPage * recordPerPage) + 1;
   currentPage++;
}
if(array_key_exists('previous',$_POST)){
   if (currentPage == 2) {
        offSet = 0;
        currentPage--;
    } else {
        offSet = offSet - recordPerPage;
        currentPage--;
    }
}

This way you can handle current page, limit and offset. Remember to call DB Query on next and previous button clicked

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM