2013-07-31 5 views
1

Я пытаюсь взять данные из таблицы MySQL и создать вывод JSON в следующем формате.PHP MySQL JSON output

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

Вот PHP Я использую для создания JSON

$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" 
     ] 
    } 
} 

Любые предложения?

+0

@ user2495292 Ваш JSON не является valid, вы можете использовать этот валидатор для проверки действительности. http://jsonlint.com/ –

+0

Я исправил ваш JSON, проверьте, правильно ли это JSON? http://pastebin.com/BeLxGZKy –

ответ

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++; 
    } 
+0

Спасибо, что исправил его! –

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++; 
     } 

Я надеюсь, что это поможет

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; 
    } 
}