2016-04-12 8 views
0

jquery birds-eyeの例で移動地図検索を行っています。私は以下のPHPコードを使ってmysqlデータをjsonに変換しましたmysqlデータをフェッチし、ページあたりのレコード数が限られているjsonにエンコードします。

header('Content-Type: application/json'); 
include('dbhconfig.inc.php'); 

$response = array(); 

$stmt = $dbh->prepare("SELECT * FROM venddata"); 
$stmt->execute(); 
//$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
foreach($rows as &$r) { // with reference 
    // explode with comma, map with floatval 
    $r['latlon'] = array_map('floatval', explode(',', $r['latlon'])); 
} 
echo json_encode(array('results' => $rows)); // json encode 

jsonのすべてのレコードを表示しています。しかし、私は、ページあたり10個のレコードしか表示せず、jsonでページ数と総数を表示したいと考えています。下記の例をご覧ください。

http://sbadb.herokuapp.com/v1/bizs その10件のレコードを示す、ページの一番下に私は上記の例のように表示したいコード

"meta": { 
    "page": 1, 
    "per_page": 10, 
    "count": 493, 
    "total_pages": 50 
    } 

下回りました。そして、MySQLのためにフェッチされたデータは、私は、JSONで多くの知識を持っていけない

http://www.zesteve.com/jsondata.php

です。いくつかの助けが必要

以下のコードはjsファイルを使用しています。

response_params_pagination: { 
      page: function(data) { 
      return data.meta.page; 
      }, 
      per_page: function(data) { 
      return data.meta.per_page; 
      }, 
      total_pages: function(data) { 
      return data.meta.total_pages; 
      }, 
      count: function(data) { 
      return data.meta.count; 
      } 
     }, 

結論は、私もそれがJSONでメタコンテンツの上に含めるべきであるJSONにMySQLのデータをページ分割したいです。

答えて

1

これをJSONで行うのは適切な方法ではありません。たとえば、LIMITを使用してMySQLでデータのページを設定する必要があります。

SELECT * FROM venddata LIMIT 10 OFFSET <yourpage*10> 

(サイドノート:あなたは、SQLインジェクションからクエリを保護することを確認してください)

問い合わせは(10オフセット)11で始まる10行を選択します。最初のページのオフセットを省略します。今すぐ行う必要があるのは、PHPスクリプトにページ番号を渡してSQLクエリを構築することだけです。

既に使用可能なメタ設定配列を使用して、よりダイナミックにします。

+0

私はjsonデータで "meta"を使用して動作させる必要があります –

関連する問題