如何在PHP中对JSON数据进行分页? [英] How to do Pagination for JSON data in PHP?

查看:112
本文介绍了如何在PHP中对JSON数据进行分页?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我没有从PHP直接访问数据库的权限.如果是这样,我可以简单地进行分页.在这里,我将GET请求发送到PHP Web服务,并将数据库的结果作为JSON提取.我有一个表,我想在其中显示数据库值.由于数据库表包含1000多个记录,因此我想显示分页的数据.

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 database is fetched as JSON. And I have a table and I want to show the database values into it. Since database table contains more than 1000 records, I want to show the data paginated.

$json_data_fromdb= httpGet($ur3l."fromtable?u=".$var1."&ip=".$var2);
$array = json_decode($json_data_fromdb, true);
$x=count($array['qqq']);
$array = $array['qqq'];

上面给出的是GET请求,相应的JSON存储在$ array中.

The above given is the GET request and the corresponding JSON is stored in $array.

如何使用PHP分页到JSON数组?

How can I do pagination to a JSON array using PHP??

我的JSON数据如下:

My JSON data is like this:

{
    "qqq": [
        {
            "a": "Conne",
            "b": "1",
            "c": "2014-05-19T15:40:06+05:30",
            "d": {
                "d1": "dani",

                "d6": "admin"
            }

        },
        {
            "a": "igroup'",
            "b": "1235",
            "c": "2014-05-27T11:23:11+05:30",
            "d": {
                "d1": "sev",

                "d6": "eev"
            }

        }
    ]
}

下面是我的HTML表格

And below given is my HTML table

 <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<$x; $i++)
        {
            $a= $array[$i]['a'];
            $b= $array[$i]['d']['d1'] ;
            $c= $array[$i]['d']['d2'] ;
            $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>

推荐答案

如果您真的想在PHP中进行操作,则可以自己汇总.但我强烈建议您使用jquery插件进行分页,以使其更容易.话虽如此,如果您想汇总自己的内容,则可以执行以下操作(有点混乱,但执行以下操作.)请考虑以下示例:

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>

> 只是示例

这篇关于如何在PHP中对JSON数据进行分页?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆