How to do Pagination for JSON data in PHP?

前端 未结 4 934
我寻月下人不归
我寻月下人不归 2021-01-01 05:13

I don\'t have direct access to database from PHP. if it was so, I could have done pagination simply. Here I send a GET request to a PHP web service, and the result from the

相关标签:
4条回答
  • 2021-01-01 05:26

    You have several options available, the 'best' two I would suggest are the following:

    PHP solution:

    use sessions, (aka put session_start(); before every php file that will need access to session variables, also add a script to cause the session to timeout)

    Store the DB output to a session variable, if the session variable is not set.

    if (!isset($_SESSION['tabledata'])) {
        $json_data_fromdb= httpGet($ur3l."fromtable?u=".$var1."&ip=".$var2);
        $array = json_decode($json_data_fromdb, true);
        $_SESSION['count']=count($array['qqq']);
        $_SESSION['tabledata'] = $array['qqq'];
    }
    

    Then, you can simply paginate through the data, by sending a request for a certain range of values.

    Alternatively, you can use a javascript solution like Datatables And either load all the information and let datatables filter it, or let datatables communicate with the other PHP server directly.

    0 讨论(0)
  • 2021-01-01 05:33

    If you want to really just do it in PHP you can just roll up your own. But I strongly suggest using jquery plugins to do the pagination to make it easier. That being said, if you want to roll up your own you could do something like this (lil bit messy but something like this.) Consider this example:

    $sample_data = '{ "qqq": [ { "a": "Conne", "b": "1", "c": "2014-05-19T15:40:06+05:30", "d": { "d1": "dani", "d6": "admin" } }, { "a": "test1", "b": "1235", "c": "2014-    05-27T11:23:11+05:30", "d": { "d1": "sev", "d6": "eev" } }, { "a": "test2", "b": "1235", "c": "2014-05-27T11:23:11+05:30", "d": { "d1": "sev", "d6": "eev" } }, { "a": "test3", "b":     "1235", "c": "2014-05-27T11:23:11+05:30", "d": { "d1": "sev", "d6": "eev" } }, { "a": "test4", "b": "1235", "c": "2014-05-27T11:23:11+05:30", "d": { "d1": "sev", "d6": "eev" } }, { "a":     "test5", "b": "1235", "c": "2014-05-27T11:23:11+05:30", "d": { "d1": "sev", "d6": "eev" } }, { "a": "test6", "b": "1235", "c": "2014-05-27T11:23:11+05:30", "d": { "d1": "sev", "d6": "eev"     } }, { "a": "test7", "b": "1235", "c": "2014-05-27T11:23:11+05:30", "d": { "d1": "sev", "d6": "eev" } }, { "a": "test8", "b": "1235", "c": "2014-05-27T11:23:11+05:30", "d": { "d1": "sev",     "d6": "eev" } }, { "a": "test9", "b": "1235", "c": "2014-05-27T11:23:11+05:30", "d": { "d1": "sev", "d6": "eev" } }, { "a": "test10", "b": "1235", "c": "2014-05-27T11:23:11+05:30", "d": {     "d1": "sev", "d6": "eev" } }, { "a": "test11", "b": "1235", "c": "2014-05-27T11:23:11+05:30", "d": { "d1": "sev", "d6": "eev" } } ]}';
    
    // just normal getting data
    $raw_data = json_decode($sample_data, true);
    $raw_data = $raw_data['qqq'];
    
    // use get variable to paging number
    $page = !isset($_GET['page']) ? 1 : $_GET['page'];
    $limit = 5; // five rows per page
    $offset = ($page - 1) * $limit; // offset
    $total_items = count($raw_data); // total items
    $total_pages = ceil($total_items / $limit);
    $final = array_splice($raw_data, $offset, $limit); // splice them according to offset and limit
    
    ?>
    <!-- print links -->
    <?php for($x = 1; $x <= $total_pages; $x++): ?>
        <a href='index.php?page=<?php echo $x; ?>'><?php echo $x; ?></a>
    <?php endfor; ?>
    <table border="1" cellpadding="10">
        <tr><th>Column 1</th><th>Column 2</th><th>Time</th><th>Column 4</th></tr>
        <?php foreach($final as $key => $value): ?>
            <tr>
            <?php foreach($value as $index => $element): ?>
                <td><?php echo !is_array($element) ? $element : implode(',', $element); ?></td>
            <?php endforeach; ?>
            </tr>
        <?php endforeach; ?>
    </table>
    

    Just a sample

    0 讨论(0)
  • 2021-01-01 05:35

    This is a working code based on your example

    <?php
    $json = '{
        "qqq": [
            {
                "a": "Conne",
                "b": "1",
                "c": "2014-05-19T15:40:06+05:30",
                "d": {
                    "d1": "dani",
                    "d2": {
                        "d2a": "1",
                        "d2b": "inmin",
                        "d2c": "1",
                        "d2d": "1",
                        "d2e": "1",
                        "d2f": "1"
    
                    },
                    "d3": "1",
                    "d4": "web",
                    "d5": "8e11e4f63",
                    "d6": "admin"
                },
                "e": "145"
            },
            {
                "a": "igroup",
                "b": "1235",
                "c": "2014-05-27T11:23:11+05:30",
                "d": {
                    "d1": "sev",
                    "d2": {
                        "d2a": "1",
                        "d2b": "admin",
                        "d2c": "1",
                        "d2d": "1",
                        "d2e": "1",
                        "d2f": "1"
    
                    },
                    "d3": "7",
                    "d4": "c",
                    "d5": "changed",
                    "d6": "eev"
                },
                "e": "132"
            },
            {
                "a": "igroup2",
                "b": "1235",
                "c": "2014-05-27T11:23:11+05:30",
                "d": {
                    "d1": "sev",
                    "d2": {
                        "d2a": "1",
                        "d2b": "admin",
                        "d2c": "1",
                        "d2d": "1",
                        "d2e": "1",
                        "d2f": "1"
    
                    },
                    "d3": "7",
                    "d4": "c",
                    "d5": "changed",
                    "d6": "eev"
                },
                "e": "132"
            },
            {
                "a": "igroup3",
                "b": "1235",
                "c": "2014-05-27T11:23:11+05:30",
                "d": {
                    "d1": "sev",
                    "d2": {
                        "d2a": "1",
                        "d2b": "admin",
                        "d2c": "1",
                        "d2d": "1",
                        "d2e": "1",
                        "d2f": "1"
    
                    },
                    "d3": "7",
                    "d4": "c",
                    "d5": "changed",
                    "d6": "eev"
                },
                "e": "132"
            },
            {
                "a": "igroup4",
                "b": "1235",
                "c": "2014-05-27T11:23:11+05:30",
                "d": {
                    "d1": "sev",
                    "d2": {
                        "d2a": "1",
                        "d2b": "admin",
                        "d2c": "1",
                        "d2d": "1",
                        "d2e": "1",
                        "d2f": "1"
    
                    },
                    "d3": "7",
                    "d4": "c",
                    "d5": "changed",
                    "d6": "eev"
                },
                "e": "132"
            },
            {
                "a": "igroup5",
                "b": "1235",
                "c": "2014-05-27T11:23:11+05:30",
                "d": {
                    "d1": "sev",
                    "d2": {
                        "d2a": "1",
                        "d2b": "admin",
                        "d2c": "1",
                        "d2d": "1",
                        "d2e": "1",
                        "d2f": "1"
    
                    },
                    "d3": "7",
                    "d4": "c",
                    "d5": "changed",
                    "d6": "eev"
                },
                "e": "132"
            },
            {
                "a": "igroup6",
                "b": "1235",
                "c": "2014-05-27T11:23:11+05:30",
                "d": {
                    "d1": "sev",
                    "d2": {
                        "d2a": "1",
                        "d2b": "admin",
                        "d2c": "1",
                        "d2d": "1",
                        "d2e": "1",
                        "d2f": "1"
    
                    },
                    "d3": "7",
                    "d4": "c",
                    "d5": "changed",
                    "d6": "eev"
                },
                "e": "132"
            },
            {
                "a": "igroup7",
                "b": "1235",
                "c": "2014-05-27T11:23:11+05:30",
                "d": {
                    "d1": "sev",
                    "d2": {
                        "d2a": "1",
                        "d2b": "admin",
                        "d2c": "1",
                        "d2d": "1",
                        "d2e": "1",
                        "d2f": "1"
    
                    },
                    "d3": "7",
                    "d4": "c",
                    "d5": "changed",
                    "d6": "eev"
                },
                "e": "132"
            },
            {
                "a": "igroup8",
                "b": "1235",
                "c": "2014-05-27T11:23:11+05:30",
                "d": {
                    "d1": "sev",
                    "d2": {
                        "d2a": "1",
                        "d2b": "admin",
                        "d2c": "1",
                        "d2d": "1",
                        "d2e": "1",
                        "d2f": "1"
    
                    },
                    "d3": "7",
                    "d4": "c",
                    "d5": "changed",
                    "d6": "eev"
                },
                "e": "132"
            },
            {
                "a": "igroup9",
                "b": "1235",
                "c": "2014-05-27T11:23:11+05:30",
                "d": {
                    "d1": "sev",
                    "d2": {
                        "d2a": "1",
                        "d2b": "admin",
                        "d2c": "1",
                        "d2d": "1",
                        "d2e": "1",
                        "d2f": "1"
    
                    },
                    "d3": "7",
                    "d4": "c",
                    "d5": "changed",
                    "d6": "eev"
                },
                "e": "132"
            }
        ]
    }';
    echo '<pre>';
    $jsonarray = json_decode($json,true);
    $page = !isset($_GET['page']) ? 1 : $_GET['page'];
    $limit = 5; 
    $offset = ($page - 1) * $limit;
    $total_items = count($jsonarray['qqq']); 
    $total_pages = ceil($total_items / $limit);
    $array = array_splice($jsonarray['qqq'], $offset, $limit);
    
    for($j=1;$j<=$total_pages;$j++) {
        echo "<span><a href='test.php?page=$j'>$j</a></span>";
    }
    ?>
    
    <table id="show" >
            <thead >
            <tr >
                <th>1stheader</th>
                <th>2stheader</th>
                <th>3stheader</th>
                <th>4stheader</th>
                <th>5stheader</th>
            </tr>
            </thead>
            <tbody>
            <?php
            for($i=0; $i<5; $i++)
            {
                $a= $array[$i]['a'];
                $b= $array[$i]['d']['d1'] ;
                $c= $array[$i]['d']['d2']['d2a'] ;
                $d= $array[$i]['b'];
                $e= $array[$i]['c'];
    
                ?>
                <tr >
                    <td><?php echo $a; ?></td>
                    <td><?php echo $b  ?></td>
                    <td><?php echo $c;   ?></td>
                    <td><?php echo $d;   ?></td>
                    <td><?php echo $e;  ?></td>
                </tr>
            <?php }  ?>
            </tbody>
        </table>
    
    0 讨论(0)
  • 2021-01-01 05:50

    I well give you small example and hope help you:

    jQuery:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(function(){
            //init pagenation
                 var page =  $("#page option:selected").val();
                 $.each($("tr"), function(key, value) {
                        if($(this).attr("id") != page){
                            $(this).css("display", "none");
                        }else{
                            $(this).css("display", "block");
                        }
                    });
    
            //do pagenation          
                $("#page").change(function(){
                     var page =  $("#page option:selected").val();
                     $.each($("tr"), function(key, value) {
                            if($(this).attr("id") != page){
                                $(this).css("display", "none");
                            }else{
                                $(this).css("display", "block");
                            }
                        }); 
                });
             });                
    </script>
    

    html+php:

    <?php
        $myArr = array('employee-1', 'employee-2', 'employee-3', 'employee-4', 'employee-5');
        $perPage = 2;//The number of items per page
        $output = '<table>';
        $counter = 0;
        $option = 1;// page ids
        foreach($myArr as $name){
            $output .= "<tr id='$option'><td>$name</td></tr>";
            $counter++;
            if($counter == $perPage) {$option++; $counter = 0;}
        }
        $output .= '</table>';
        $output .= "<select id='page'>";
        for($i=1; $i <= $option; $i++){
            $output .= "<option value='$i'>$i</option>";
        }
        echo $output; 
    ?>
    

    but for your code :

    jQuery:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(function(){
            //init pagenation
                 var page =  $("#page option:selected").val();
                 $.each($(".myTr"), function(key, value) {
                    var idInLoop = $(this).attr("id");
                        if(idInLoop != page){
                            $(this).css("display", "none");
                        }else{
                            $(this).css("display", "block");
                        }
                    });
    
            //do pagenation          
                $("#page").change(function(){
                     var page =  $("#page option:selected").val();
                     $.each($(".myTr"), function(key, value) {
                        var idInLoop = $(this).attr("id");
                            if(idInLoop != page){
                                $(this).css("display", "none");
                            }else{
                                $(this).css("display", "block");
                            }
                        });
                });
             });                
    </script>
    

    php+html:

    <?php
        $output = ' <table id="show" >
                        <thead >
                        <tr id = "header">
                            <th>1stheader</th>
                            <th>2stheader</th>
                            <th>3stheader</th>
                            <th>4stheader</th>
                            <th>5stheader</th>
                        </tr>
                        </thead>
                        <tbody>';
        $perPage = 2;//The number of items per page
        $counter = 0;
        $option = 1;// page ids
    
        for($i=0; $i<$x; $i++){
            $a= $array[$i]['a'];
            $b= $array[$i]['d']['d1'] ;
            $c= $array[$i]['d']['d2'] ;
            $d= $array[$i]['b'];
            $e= $array[$i]['c'];
    
            $output .= "<tr class='myTr' id='$option' >";
                $output .= "<td>$a</td>";
                $output .= "<td>$b</td>";
                $output .= "<td>$c</td>";
                $output .= "<td>$d</td>";
                $output .= "<td>$e</td>";
            $output .= "</tr>";
    
            $counter++;
            if($counter == $perPage) {$option++; $counter = 0;}
        }
        $output .= "</tbody></table>";  
    
        $output .= "<select id='page'>";
        for($i=1; $i <= $option; $i++){
            $output .= "<option value='$i'>$i</option>";
        }
        echo $output;    
    ?>
    
    0 讨论(0)
提交回复
热议问题