2014-10-30 2 views
0

У меня есть эта база данных:Формат JSON в правильном пути из базы данных MySQL

enter image description here

Мне нужно, чтобы получить этот вывод JSON с PHP PDO:

{ 
    "data": [ 
     { 
      "ID": "<div class=\"btn btn-danger\">1</div>", 
      "naziv": "some data from database", 
      "vrsta": "some data from database", 
     }, 
     { 
      "ID": "<div class=\"btn btn-danger\">2</div>", 
      "naziv": "some data from database", 
      "vrsta": "some data from database", 
     } 
    ] 
} 

Так как вы можете видеть, что я нужен для изменения данных до кодирования JSON ... Мне нужно добавить некоторые html и css.

Я пытаюсь сделать это с помощью:

/* select all the weekly tasks from the table googlechart */ 
$result = $db->prepare('SELECT ID,naziv,vrsta FROM investicije'); 
$result->execute(); 

/* Extract the information from $result */ 
foreach($result as $r) { 
    $temp = array(); 
    // the following line will be used to slice the Pie chart 
    $temp['ID'] = '<div class="btn btn-danger">'.$r['ID'].'</div>'; 
    $temp['vrsta'] = $r['vrsta']; 
    $temp['naziv'] = $r['naziv']; 
} 

$output = ['data' => $temp]; 
$jsonTable = json_encode($output); 

Это не делает правильный формат JSON, как я ставлю выше.

UPDATE:

JS:

$(document).ready(function() { 
    $('#example').dataTable({ 
     "ajax": "table1.php", 
     "columns": [ 
      { "data": "ID" }, 
      { "data": "naziv" }, 
      { "data": "vrsta" }, 

     ] 
    }); 
}); 

HTML

<div class="container"> 
<table id="example" class="table table-striped table-bordered table-responsitive" cellspacing="0" width="100%"> 
     <thead> 
      <tr> 
       <th>ID</th> 
       <th>Naziv</th> 
       <th>Vrsta</th> 

      </tr> 
     </thead> 

     <tfoot> 
      <tr> 
       <th>ID</th> 
       <th>Naziv</th> 
       <th>Vrsta</th> 
      </tr> 
     </tfoot> 
    </table> 
    </div> 
+1

Как в стороне, зачем смешивать прямые данные и содержимое HTML в одном ответе. Оставьте создание элемента HTML DOM на уровне вызывающего пользовательского интерфейса. –

+0

Как я могу это сделать? Неплохая практика для смешивания json с данными DOM? –

+0

Итак, я предполагаю, что вы используете 'json_encode()' для отправки этих данных в качестве ответа на запрос (возможно, запрос AJAX), так как сериализации его не нужно будет сериализовать, если бы ему понадобилась какая-то другая область PHP-приложения. Предполагая, что это предположение верно, тогда, очевидно, есть другое место, где вы представляете остальную часть HTML для страницы. Почему вы хотите «скрыть» часть реализации этой страницы в PHP-скрипте, который просто используется для извлечения данных из базы данных? Теперь, если вы хотите изменить класс на div, например, вам придется изменить скрипт PHP. –

ответ

0

Прямо сейчас вы переписав $temp переменную без его использования. Вы должны переместить $output = ['data' => $temp]; в петлю Еогеасп и изменить его немного:

foreach($result as $r) { 
    $temp = array(); 
    // the following line will be used to slice the Pie chart 
    $temp['ID'] = '<div class="btn btn-danger">'.$r['ID'].'</div>'; 
    $temp['vrsta'] = $r['vrsta']; 
    $temp['naziv'] = $r['naziv']; 

    $output['data'][] = $temp; 
} 
+0

спасибо за это, спасибо большое. Неплохая практика для смешивания html и данных в JSON и как это решить? –

+0

@JamesD. Обычно вам не нужно хранить html в базе данных; если вы используете возвращенный json в javascript, вы можете построить html там, как вы считаете нужным, используя только данные. – jeroen

+0

Но я не хранил html в базе данных, я добавляю html только в JSON ... как вы можете видеть из базы данных mysql, приведенной выше в изображении –

0

Вы переписав $temp массив на каждой итерации цикла. Вы, вероятно, захотите:

foreach($result as $r) { 
    $temp[] = array(....); 
     ^^---array push shorthand; 
} 

вместо этого.

+0

спасибо, что правильно –