2

データベースから json 配列にデータをクエリして、最終的には JavaScript で力有向グラフを生成したいと考えています。Json 配列は次のようになります。ただし、ノードには複数の隣接関係がある場合とない場合があります。隣接関係セクションがノードごとに異なり、ノードの隣接関係の数に応じて調整できる json 配列をクエリするにはどうすればよいですか?

Var JSON =[ 
 {
  "adjacencies": [
    {
      "nodeTo": "graphnode9", 
      "nodeFrom": "graphnode5", 
      "data": {}
    }
  ], 
  "data": {
    "$color": "#416D9C", 
    "$type": "star"
  }, 
  "id": "graphnode5", 
  "name": "graphnode5"
},
];

または彼らは持つことができます

Var JSON =[ 
 {
  "adjacencies": [
    {
      "nodeTo": "graphnode9", 
      "nodeFrom": "graphnode5", 
      "data": {}
    },
    {
      "nodeTo": "graphnode9", 
      "nodeFrom": "graphnode5", 
      "data": {}
    },
    {
      "nodeTo": "graphnode9", 
      "nodeFrom": "graphnode5", 
      "data": {}
    }
  ], 
  "data": {
    "$color": "#416D9C", 
    "$type": "star"
  }, 
  "id": "graphnode5", 
  "name": "graphnode5"
},
];

または彼らは何も持つことができません

Var JSON =[ 
 {
  "adjacencies": [], 
  "data": {
    "$color": "#416D9C", 
    "$type": "star"
  }, 
  "id": "graphnode5", 
  "name": "graphnode5"
},
];

これまでのところ私の試みは次のとおりですが、これは1つの隣接のみを許可するjsonを生成するだけです。ノードが持つ隣接の数を調整するJsonクエリをセットアップするにはどうすればよいですか? data と id セクションを 1 回ロードするだけで、adjacenies を変更できるようにしますか?

これが私のデータベース構造です

nodes                 Relationships                      
-----                 -------------
id int(11),           id int(11),
name varchar(35),    goingto int(11), //this is the destination node from the id relation 
color varchar(7),     data varchar(0) null
type varchar (12),    Foreign key (id) references nodes(id)
Primary key (id)       

engine = innodb    

そして、ここに私の試みがあります

function getjson(){  
 $db = adodbConnect();
$query = "SELECT nodes.*, relationships.* FROM nodes inner JOIN relationships ON nodes.id =   relationships.id";
$result = $db -> Execute($query);

while($row=$result->FetchRow())
{
  $id= (float)$row['id'];
  $name = $row['name'];
  $color1 = $row['color'];
  $type1 = $row['type'];
  $to= (float)$row['goingto']; 
  $thumb =$row['thumb']; //image path

  $array[] = array(
  "adjacencies" => array( array(
  "nodeTo" => "$to",
  "nodeFrom" => "$id",
  "data" => array() )),
  "data" => array(
  "$"."color" => $color1,
  "$"."type" => $type1 ),
  "id" => $id,
  "name" => "<img src='".$thumb."' height='25' width='25' alt='root'/><label>".$name."</label>");
}

$json = json_encode($array);
print "$json";
//return $json;
}
4

1 に答える 1