我没有从PHP直接访问数据库。如果是这样,我本可以简单地做分页。在这里,我向PHP Web服务发送GET请求,并将数据库的结果作为JSON提取。我有一个表,我想将数据库值显示在其中。由于数据库表包含1000多条记录,我想显示分页数据。
$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中。
如何使用PHP?
对JSON数组进行分页我的JSON数据是这样的:
{
"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表格
<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>
答案 0 :(得分:11)
如果你真的想用PHP做,你可以自己卷起来。但我强烈建议使用jquery插件来进行分页以使其更容易。话虽这么说,如果你想要自己卷起来,你可以做这样的事情(有点乱,但是这样的事情。)考虑这个例子:
$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>
答案 1 :(得分:2)
这是一个基于您的示例的工作代码
<?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>
答案 2 :(得分:1)
我很乐意给你一个小例子,希望能帮到你:
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;
?>
但是对于你的代码:
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;
?>
答案 3 :(得分:0)
你有几种选择,我建议的最好的两种选择如下:
PHP解决方案:
使用会话,(在每个需要访问会话变量的php文件之前放置session_start();
,还添加一个脚本以使会话超时)
如果未设置会话变量,则将DB输出存储到会话变量。
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'];
}
然后,您可以通过发送对特定值范围的请求来简单地对数据进行分页。
或者,您可以使用Datatables之类的JavaScript解决方案 并加载所有信息并让数据表过滤它,或让数据表直接与其他PHP服务器通信。