Я делаю плагин WordPress для интеграции с нашей библиотечной системой. Я пытаюсь создать страницу с формой поиска для поиска в базе данных. Я создал API на нашем сервере библиотеки (он находится в нашей локальной сети), поэтому сайт может взаимодействовать с нашей библиотекой.
Я пытаюсь разбивать на страницы результаты, полученные из API, данные находятся в json. Я создал следующий код, чтобы получить json из API и превратить его в массив 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" } }
-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" } }
-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, но не могу понять, как это сделать с помощью массива.
Благодаря!
Ниже приведен прототип кода, который вы использовали бы для разбивки на страницы, просто измените его, чтобы получить желаемые результаты.
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>
Один простой и чистый пример для разбиения на страницы массива, работы и тестирования 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', ) */