Данные ODB C в JSON отправляют 'null' в PHP - я пытаюсь создать динамическое c TreeView с результатом ODB C - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь сделать древовидное представление с данными из MS SQL. Я получаю данные с функциями ODB C. И я конвертирую эти данные в массив с несколькими уровнями. И я закодировал массив в json, но как только я пытаюсь увидеть вывод json, он отправляет 'null'.

Я хотел создать древовидное представление с классом PHP или JS / JQuery плагин. Мне нужен плагин, который я могу легко использовать в будущем. Если вы знаете, как это сделать с помощью PHP Class или плагина JS, этот код сошника здесь поможет мне

$ds= "Driver={SQL Server};Server=theserver";
$con = odbc_connect($ds, "user","password", SQL_CUR_USE_ODBC) or die("Erreur ODBC dans $sql : <br>Erreur : ".odbc_errormsg()." from database ".$database_name);
$res = odbc_exec($con, $sql) or die(204);

$tmp;
$rows = array();

//$res = executeSQL_ODBC($sql2);
$parentID = ""; 
$parent1ChildID = "";   
//$data = array();
$data2[0] = array('TRACE_ID','TRACE_DESCRIPTION','START_TS','PARENT_TRACE_ID');
$i = 1;
while ($row = odbc_fetch_array($res)){
  // $rows[] = $row;
  $data2[$i] = array(
    $row['TRACE_ID'],
    $row['TRACE_DESCRIPTION'],
    $row['START_TS'],
    $row['PARENT_TRACE_ID']
  ); 
  $i++;
    $sub_data["id"] = $row['TRACE_ID'];
    $sub_data["name"] = $row['TRACE_DESCRIPTION'];
    $sub_data["start_ts"] = $row['START_TS'];
    $sub_data["parent_id"] = $row['PARENT_TRACE_ID'];
    $data[] = $sub_data;
}
 // On recupere dans un tableau temporaire d'affichage l'identifiant de tous les elements
foreach($data2 as $key => &$value){
  $ouput[$value["id"]] = &$value;
  if ($value['parent_id'] == 0){
    //echo ('<li><input type="checkbox" id="item-2" /><label for="item-2">'); echo $value["name"]; echo "</label>"; 
  }
}
//echo ('<ul>');
foreach($data as $key => &$value){
  //echo "OK1";

  //if($value['parent_id'] && isset($output[$value["parent_id"]])){
    //echo "OK2";
    $ouput[$value["parent_id"]]["nodes"][] = &$value; // Verifie les liens de parenter et associe le/les fils au pere

    //echo' <li><input type="checkbox" id="item-2-2-0" /><label for="item-2-2-0">';  echo $value['START_TS'].' '.$value['name']; echo '</label></li>';
  //}
  //echo ('</ul></li>');
}
//echo ('</ul>');
foreach($data as $key => &$value) {
  //echo "OK3";
  if($value['parent_id'] && isset($output[$value["parent_id"]])){ // Test pour verifier si l'id = id du parent - TEST KO
    unset($data[$key]); // Nettoye le tableau 
    //echo "OK4";
  }
}
odbc_close($con);
$json = array_values($data2);
echo json_encode($json);

$show_json = json_encode($json , JSON_FORCE_OBJECT);
if ( json_last_error_msg()=="Malformed UTF-8 characters, possibly incorrectly encoded" ) {
    $show_json = json_encode($API_array, JSON_PARTIAL_OUTPUT_ON_ERROR );
}
if ( $show_json !== false ) {
    echo($show_json); 
   //echo safe_json_encode($show_json);
} else {
    die("json_encode fail: " . json_last_error_msg());
}

Заранее спасибо за вашу помощь.

...