2013-04-17 9 views
0

Я использую php для подключения к моей базе данных psql и имею некоторый исходный код для подключения к базе данных, доступа к таблице и установки столбца в массив и т. Д. Я, однако, изо всех сил пытался получить мои данные в желаемом формате что мой код уже запущен. Мой вход находится в иерархической форме Json, как показано ниже.Как создать иерархический json, используя данные из базы данных psql?

function getData() { 
    return { 
"name": "data", 
"children": [ 
    { 
    "name": "America", 
    "children": [ 
    { 
    "name": "MA", 
    "children": [ 
     {"name": "Westborough", "order": 30}, 
     {"name": "Southborough", "order":20} 
    ] 
    }, 
    { 
    "name": "NH", 
    "children": [ 
     {"name": "Nashua", "order": 12} 
    ] 
    }, 
    { 
    "name": "CA", 
    "children": [ 
     {"name": "SanFransico", "order": 17} 
    ] 
    } 
    ] 
} 
] 
}; 

Это код, который я в настоящее время с помощью PHP:

<?php 

    // attempt a connection 
$dbh = pg_connect("host=localhost dbname=sample user=postgres"); 
if (!$dbh) { 
    die("Error in connection: " . pg_last_error()); 
}  

// execute query 
$sql = "SELECT * FROM dataset"; 
$result = pg_query($dbh, $sql); 
if (!$result) { 
    die("Error in SQL query: " . pg_last_error()); 
}  

//Sets the column at 1 to an array 
$arr = pg_fetch_all_columns($result, 1); 


// free memory 
pg_free_result($result);  

// close connection 
pg_close($dbh); 

?> 

Это формат таблицы базы данных

Database table

Заранее спасибо :)

ответ

0

я просто закодирую купол для вас. Вам нужно проверить на yourselt

$dbh = pg_connect("host=localhost dbname=sample user=postgres"); 

$ret = array(); 
$ret['name'] = 'data'; 
$ret['children'] = get_chilren($dbh,0); 

return json_encode($ret); 


while ($line = pg_fetch_array($result)) { 

} 


function get_chilren($dbh,$parentid){ 
    var $cret = array(); 
    $sql = "select * from database where parentid=".$parentid 
    $cresult = pg_query($dbh, $sql); 
    if (!$cresult) { 
    echo "An error occured.\n"; 
    exit; 
    } 
    while($chil = pg_fetch_array($cresult)){ // fetch each row 
    $cret['name'] = $chil['name']; 
    $cc = get_chilren($dbh,$chil['id']); 
    if(is_array($cc)) 
    {//when it hava a child 
     $cret['children'] = $cc; 
    }else{ //not hava 
     $cret['order'] = $chil['order']; 
    } 
    } 
    return $cret; 
}