1

MySQL テーブルからデータを取得し、以下の形式で JSON 出力を作成しようとしています。

{
    markers: [
    {
       latitude: 57.7973333,
       longitude: 12.0502107,
       title: "Angered",
       content: "Representing :)"
    },
    {
       latitude: 57.6969943,
       longitude: 11.9865,
       title: "Gothenburg",
       content: "Swedens second largest city"
    }
  ]
}

JSONを生成するために使用しているPHPは次のとおりです

$model  = array();

    $query = "SELECT title, content, lat, lng FROM locations_tbl";

    //Get records from database
    $result = mysql_query($query, $con);

    if(mysql_num_rows($result)) {
        while($e = mysql_fetch_assoc($result)) {
            $model['title'][]       = $e['title'];
            $model['content'][] = $e['content'];
            $model['lat'][]     = $e['lat'];
            $model['lng'][]     = $e['lng'];
        }
    }

    header('Content-type: application/json');
    print json_encode(array('marker'=>$model));

以下は、上記のコードで得られる出力です。

{
   marker: {
      title: [
          "Marker 1",
          "Marker 2",
          "Marker 3",
          "Marker 4",
          "Marker 5"
       ],
       content: [
          "Text 1",
          "Text 2",
          "Text 3",
          "Text 4",
          "Text 5"
       ],
       lat: [
          "46.99065400",
          "47.03520400",
          "47.20387700",
          "47.62574900",
          "47.43443400"
       ],
       lng: [
          "-122.92164800",
          "-122.81614600",
          "-122.24486400",
          "-122.14453800",
          "-122.46088200"
       ]
   }
}

助言がありますか?

4

3 に答える 3

3

次のように配列を作成します。

    $i = 0;
    while($e = mysql_fetch_assoc($result)) {
        $model[$i]['title']       = $e['title'];
        $model[$i]['content']     = $e['content'];
        $model[$i]['lat']         = $e['lat'];
        $model[$i]['lng']         = $e['lng'];
        $i++;
    }
于 2013-07-31T05:36:56.337 に答える
2

これを試して

       $i = 0;
       while($e = mysql_fetch_assoc($result)) {
            $model[$i]['title']       = $e['title'];
            $model[$i]['content'] = $e['content'];
            $model[$i]['lat']     = $e['lat'];
            $model[$i]['lng']     = $e['lng'];
            $i++;
        }

それが役立つことを願っています

于 2013-07-31T05:36:11.717 に答える
2

すべてのマーカーに対して実際に新しい配列を作成することはありません。

$model = array("markers" => array());
if(mysql_num_rows($result)) {
    while($e = mysql_fetch_assoc($result)) {
        $marker = array();
        $marker['title']    = $e['title'];
        $marker['content']  = $e['content'];
        $marker['lat']      = $e['lat'];
        $marker['lng']      = $e['lng'];
        $model["markers"][] = $marker;
    }
}
于 2013-07-31T05:36:24.920 に答える