0

私は2つのテーブルを持っています:

表1:

Make       Model 1 ID      Model 2 ID      Model 3 ID
----       ----------      ----------      ----------
Ford       1               4               7
Chevrolet  2               3               5
Dodge      6               8               9

表 2:

ID         Model            Engine
----       -----            ------
1          F-150            Triton V8
2          Silverado        Vortec V8
3          Corvette         LS9 V8
4          Fusion           Duratec I4
5          Camaro           LSA V8
6          Ram              Hemi V8
7          Mustang          Modular V8
8          Grand Caravan    Pentastar V6
9          Challenger       Hemi V8

リンクされたデータを PHP を使用して JSON として出力したい (そうですか? 私はプログラミング用語に少し慣れていません。申し訳ありません)。 JSON 構文が間違っています):

 {
  [
   {
    "make": "Ford",  
    "models": 
     [ 
      { 
      "ID": "1",
      "info": 
         {
         "model": "F-150",
         "engine": "Triton V8", 
         }
      },
      { 
      "ID": "4",
      "info": 
         {
         "model": "Fusion",
         "engine": "Duratec I4", 
         }
      },
      { 
      "ID": "7",
      "info": 
         {
         "model": "Mustang",
         "engine": "Triton V8", 
         }
      },
     ] 
   },
   {
    "make": "Chevrolet",  
    "models": 
     [ 
      { 
      "ID": "2",
      "info": 
         {
         "model": "Silverado",
         "engine": "Vortec V8", 
         }
      },
      { 
      "ID": "3",
      "info": 
         {
         "model": "Corvette",
         "engine": "LS9 V8", 
         }
      },
      { 
      "ID": "5",
      "info": 
         {
         "model": "Camaro",
         "engine": "", 
         }
      },
     ] 
   },   {
    "make": "Dodge",  
    "models": 
     [ 
      { 
      "ID": "6",
      "info": 
         {
         "model": "Ram",
         "engine": "Hemi V8", 
         }
      },
      { 
      "ID": "8",
      "info": 
         {
         "model": "Grand Caravan",
         "engine": "Pentastar V6", 
         }
      },
      { 
      "ID": "9",
      "info": 
         {
         "model": "Challenger",
         "engine": "Hemi V8", 
         }
      },
     ] 
   }
  ]
}

問題は、PHP を使用してこれをどのように行うかです。このかなり長い投稿を最後まで読んでくれてありがとう、そして解決策を考え出してくれたことに感謝します。

jQuery を使用して解決策を提案したい場合は、それも機能します。

4

1 に答える 1

2

あなたのデータベースは間違っています。代わりにこの構造を試してください。

MakeID Make
------ ----
1      Ford
2      Chevrolet
3      Dodge

ModelID MakeID Model          Engine
------- ------ -------------- ------
1       1      F-150          Triton V8
2       2      Silverado      Vortec V8
3       2      Corvette       LS9 V8
4       1      Fusion         Duratec I4
5       2      Camaro         LSA V8
6       3      Ram            Hemi V8
7       1      Mustang        Modular V8
8       3      Grand Caravan  Pentastar V6
9       3      Challenger     Hemi V8

今、あなたはこのようなことをすることができます:

$sql = mysql_query("select * from `table1` join `table2` using (`MakeID`)");
$out = Array();
while($car = mysql_fetch_assoc($sql)) {
    if( !isset($out[$car['MakeID']])) {
        $out[$car['MakeID']] = Array("make"=>$car['Make'],"models"=>Array());
    }
    $out[$car['MakeID']]['models'][] = Array(
        "ID"=>$car['ModelID'],
        "info":Array(
            "model"=>$car['Model'],
            "engine"=>$car['Engine']
        )
    );
}
$out = array_values($out);
echo json_encode($out);
于 2013-02-21T21:51:25.983 に答える