我正在制作一个WordPress插件,以便与我们的图书馆系统集成。我正在尝试创建一个带有搜索表单的页面来搜索数据库。我在我们的库服务器上创建了一个API(它位于我们的本地网络上),因此该站点可以与我们的库后端进行交互。
我正在尝试对从API中提取的结果进行分页,数据在json中。我创建了以下代码来从API获取json并将其转换为PHP数组,但它还没有实现搜索:
add_shortcode("book_search_form", "book_search_form");
function book_search_form() {
$api_url = get_option('api_url');
$api_key = get_option('api_key');
$data = file_get_contents("$api_url/book/index.php/name/awesome/$api_key");
$data = (array)json_decode($data, true);
echo '<pre>';
var_dump($data);
echo '</pre>';
}
这是输出:
array(2) {
[0]=>
array(22) {
["barcode"]=>
string(12) "000015427928"
["name"]=>
string(74) "Janice VanCleave's 201 awesome, magical, bizarre & incredible experiments."
["author"]=>
string(12) "Janice Pratt"
["author_last"]=>
string(9) "VanCleave"
["publisher"]=>
string(11) "Wiley: 1994"
["year_pub"]=>
string(0) ""
["edition"]=>
string(0) ""
["genre"]=>
string(0) ""
["checkout"]=>
string(5) "false"
["series"]=>
string(0) ""
["callnum"]=>
string(5) "507.8"
["fiction"]=>
string(5) "false"
["in_house"]=>
string(5) "false"
["timestamp"]=>
string(10) "1374711656"
["outto"]=>
string(0) ""
["duedate"]=>
string(1) "0"
["ISBN"]=>
string(10) "0585339376"
["media_type"]=>
string(0) ""
["print"]=>
string(5) "false"
["BOXID"]=>
string(0) ""
["uid"]=>
string(1) "0"
["printed"]=>
string(4) "true"
}
[1]=>
array(22) {
["barcode"]=>
string(12) "000015429634"
["name"]=>
string(50) "Our Awesome Earth: Its Mysteries and Its Splendors"
["author"]=>
string(4) "Paul"
["author_last"]=>
string(6) "Martin"
["publisher"]=>
string(35) "Natl Geographic Society: March 1994"
["year_pub"]=>
string(0) ""
["edition"]=>
string(0) ""
["genre"]=>
string(0) ""
["checkout"]=>
string(5) "false"
["series"]=>
string(0) ""
["callnum"]=>
string(3) "050"
["fiction"]=>
string(5) "false"
["in_house"]=>
string(5) "false"
["timestamp"]=>
string(10) "1382550052"
["outto"]=>
string(0) ""
["duedate"]=>
string(1) "0"
["ISBN"]=>
string(10) "0870445456"
["media_type"]=>
string(0) ""
["print"]=>
string(5) "false"
["BOXID"]=>
string(0) ""
["uid"]=>
string(1) "0"
["printed"]=>
string(5) "false"
}
}
我正在尝试创建分页,因为某些查询包含50本或更多的书籍。我之前用mysql做过这个,但我无法弄清楚如何使用数组。
谢谢!
答案 0 :(得分:5)
以下是您将用于分页的代码的原型,只需更改它以获得所需的结果。
if(isset($_GET['page']) && isset($_GET['paramsfordataonnextpage']))
{
$page=$_GET['page']; // get the value of the page from your url
$recordsPerPage=10; // number of records you want on your page
$array=//from your service
$index=($page*$recordsPerPage)-1;
$recordsToBeDisplayed = array_slice($array,$index,$recordsPerPage);// this array contains all the records you would want to display on a page;
$total_pages=ceil(count($array)/$recordsPerPage);
}
else {
//use default values
}
<html>...<body><div id="records"><!-- use the array created above to display records -->
</div>
<div id="pagination">
for($j=1;$j<=$total_pages;$j++){
if($j==$page)
{?>
<li style="display: inline;"><a href="/yourpaginationpage.php?paramsfordataonnextpage=&page=<?=$j?>"><u><?=$j?></u></a></li>
<?}else{?>
<li style="display: inline;"><a href="/yourpaginationpage.php?paramsfordataonnextpage=&page=<?=$j?>"><?=$j?></a></li>
<?}}?>
</div>
</body>
...
</html>
答案 1 :(得分:2)
一个简单而干净的示例,用于对数组进行分页,工作和测试OK:)
function PaginateArray($input, $page, $show_per_page) {
$page = $page < 1 ? 1 : $page;
$start = ($page - 1) * ($show_per_page);
$offset = $show_per_page;
$outArray = array_slice($input, $start, $offset);
var_export($outArray);
}
$input = array("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20");
//page 1
PaginateArray($input, 1, 3);//inputs: array, page, records per page
/*
array (
0 => '1',
1 => '2',
2 => '3',
)
*/
//page 2
PaginateArray($input, 2, 3);//inputs: array, page, records per page
/*
array (
0 => '4',
1 => '5',
2 => '6',
)
*/