2015-04-02 3 views
2

У меня есть PHP-код, который я использую вместе с sql для получения результатов из базы базы данных по номеру EA и идентификационному номеру для их графического отображения.SQL-данные - кодирование json в определенном формате

<?php 
      $sql= 
       ("SELECT D as y,Total as a,PoweredOn as b 
       FROM MasterUsageTable 
       WHERE ID IN 
       (SELECT ID FROM MasterUsageTable 
       WHERE EA_Number = '$valueEA' AND D BETWEEN #$valueSDate# AND #$valueEDate#)"); 

      $rs = odbc_exec($con, $sqlVMs); 
      if (!$rs) { 
       exit("Enter EA!"); 
      } 
      $data = array(); 
       while ($row = odbc_fetch_array($rs)){ 
        $data[] = $row; 
       }   

      echo json_encode($data); 
     ?> 

В настоящее время пути я получаю мои результаты после JSon кодирования, как это:

[{ "у": "2015-03-26", "а": «16», «b»: «14»}, {"y": "2015-03-26 ", "a": "59", "b": "12"}, {"y": " 2015-03-26 "," a ":" 21 "," b ":" 5 "}, {" y ":" 2015-03-26 "," a ":" 35 "," b " : «12»}, {«y»: «2015-03-26», «a»: «17», «b»: «2»}]

Я надеялся, что существует какой-то способ разделяя их так:

[{ "у": "2015-03-26", "а": "16", "б": "14"}, { "у": "2015-03-26 " , "a": "59", "b": "12"}, {"y": "2015-03-26 ", "a": "21", "b": "5"}], [{"y": "2015-03-26 ", "a": "35", "b": "12"}, {"y": "2015-03-26", "a": " 17 "," b ":" 2 "}]

Таким образом, это множество массивов данных, основанных на том, с каким ID. Надеюсь, что имеет смысл, благодаря

+0

Ваш SQL возвращает один «набор», поэтому нет способа кодировать его, как вы хотите - информации просто нет. Возможно, можно добавить идентификатор в запрос, а затем преобразовать json, но у меня недостаточно навыков, чтобы помочь в этом. Проверьте связанные вопросы - может быть один о вложении карт в карты. – Turophile

+0

Кстати, вы можете удалить идентификатор 'WHERE ID IN (SELECT ID FROM MasterUsageTable' из вашего SQL, и он будет работать так же. – Turophile

ответ

0

Один из способов сделать это было бы использовать внешний контур с помощью ID и внутреннего цикла для получения значений для каждого значения ID, что-то вроде этого:

<?php 
// test data 
$valueSDate = "2015-03-26"; 
$valueEDate = "2015-03-26"; 
$valueEA = "EA1"; 

$allData = array(); 
$con = odbc_connect(
     "Driver={Microsoft Access Driver (*.mdb, *.accdb)};" . 
     "Dbq=C:\\Users\\Public\\Database1.accdb;", 
     "Admin", ""); 
$rs1 = odbc_exec($con, 
     "SELECT DISTINCT ID " . 
     "FROM MasterUsageTable " . 
     "WHERE EA_Number = '$valueEA' " . 
      "AND D BETWEEN #$valueSDate# AND #$valueEDate#"); 
while ($row1 = odbc_fetch_array($rs1)) { 
    $id = $row1["ID"]; 
    $rs2 = odbc_exec($con, 
      "SELECT D as y,Total as a,PoweredOn as b " . 
      "FROM MasterUsageTable " . 
      "WHERE ID = $id AND EA_Number = '$valueEA' " . 
       "AND D BETWEEN #$valueSDate# AND #$valueEDate#"); 
    $idData = array(); 
    while ($row2 = odbc_fetch_array($rs2)) { 
     $idData[] = $row2; 
    } 
    $allData[] = $idData; 
} 

echo json_encode($allData); 
+0

Спасибо человеку, мне как-то удалось разобраться после того, как я спросил об этом, но я надеюсь, что ваше решение будет работать слишком! – Vickie

Смежные вопросы