Zapis z tabeli sql do json

0

Chciałbym sobie stworzyć z elementów swojej tabeli taki plik json:
http://www.highcharts.com/samples/data/jsonp.php?filename=msft-c.json&callback=? Jak to zrobić najprościej?

Robiłem wcześniej w taki sposób ale każda wartość jest w nawiasie i z legendą:

$result = mysqli_query($db,"SELECT data, temp FROM  `pomiary` WHERE miejsce =  'MOOK'"); 
		//Create an array
		$json_response = array();
		while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
			$row_array['data'] = $row['data'];
			$row_array['temp'] = $row['temp'];
			//push the values in the array
	
			array_push($json_response,$row_array);
		}	

Dostaje to w takiej postaci:
[{"data":"2014-06-18","temp":"6.8"},{"data":"2014-06-18","temp":"7.3"},{"data":"2014-06-18","temp":"7.2"}]
Prosze o pomoc.

1
array_push($json_response,array(strtotime($row['data']), $row['temp']));
// a to po co w ogóle?
$row_array['data'] = $row['data'];
$row_array['temp'] = $row['temp'];
$row_array = $row; // zrobi to samo, ale po co Ci w ogóle dodatkowa zmienna? :P

jeżeli nie zależy Ci na konwersji przez strtotime, to możesz też NIE pobierać danych z $result jako tablica asocjacyjna, tylko po porostu numeryczna (MYSQL_NUM bodajże - szukaj w dokumentacji) i potem tylko array_push($json_response, $row)

zwróć uwagę, że podany przez Ciebie przykład to nie jest plik json.
to jest kod javascript, wywołujący callbacka z wielką tablicą (tablic) jako parametr - tzw. JSONP

0

Ok, zrobiłem to w ten sposób:

$json_response = array();
		while ($row = mysqli_fetch_array($result, MYSQL_NUM)) {
			$row_array = $row;
			array_push($json_response,$row_array);
		}

Dostaje rezultat:
([["2014-06-16","7.7"],["2014-06-17","9.5"],["2014-06-17","6.2"],["2014-06-17","0"],["2014-06-18","0"],["2014-06-18","0"]))
Czyli jakbym chciał teraz JSOP to musze w js to pobrać i wydzielić aby otrzymać to co chcę?

0

nie wiem jak zwracasz wynik, ale coś w rodzaju json_encode($json_response) - dodaj na początku callback( i na końcu ) - i masz to samo (bez znaków nowej linii, ale nie wiem czy Ci to potrzebne?) nazwę callback możesz chcieć pobierać z $_GET - tego nie wiem, kiepsko wyjaśniasz po co Ci to

1

dokładnie tak zwracam:

echo json_encode($json_response);

Dostaje coś takiego:

([[1403049600,"6.8"],[1403049600,"7.3"],[1403049600,"7.2"],[1403049600,"7"],[1403049600,"6"]])

jak się pozbyć tych cudzysłowów przy temperaturze?

Taką formę potrzebuje bo specyfikacja biblioteki do wykresów tego wymaga:)

1
while ($row = mysqli_fetch_array($result, MYSQL_NUM)) {
            $row_array = $row;
            array_push($json_response,$row_array);
        }

coś Ci już mówiłem o tej zmiennej $row_array --- po co Ci ona?!

while ($row = mysqli_fetch_array($result, MYSQL_NUM)) {
            array_push($json_response,array($row[0], (float) $row[1]));
        }
0

Moja pomyłka, całość zrobiłem oczywiście bez zmiennej

$row_array

:)
Właśnie tego mi brakowało (float). Dzięki za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1