Use the JSON_NUMERIC_CHECK option to json_encode(). See http://php.net/manual/en/function.json-encode.php for prerequisites and details.
Allen On Thu, Jul 12, 2012 at 3:44 PM, Adam Hardarson <[email protected]>wrote: > Ok, after fixing somethings on my page I get the graph to show but without > any "content". And after digging around I think this is the issue: > > {"c":[{"v":"Top"},{"v":"61"},{"v":"57"}]} > > The values (61 and 57) have " " beside them. If I hardcode a variable > without the " " it works... > > So, how do I get rid of them? :) > > Cheers > Adam > > > Den torsdagen den 12:e juli 2012 kl. 18:35:24 UTC+2 skrev asgallant: > >> Is the json string being echo'd properly? Take a look at the rendered >> HTML to see (open page, right-click, select "view source" or something >> similar, depending on your browser). If it shows up, post the output HTML >> here. If it doesn't show up, post your PHP script here. >> >> On Wednesday, July 11, 2012 7:31:26 PM UTC-4, Adam Hardarson wrote: >>> >>> Nice work! >>> >>> I am however still getting the Table has no columns.× >>> >>> I copied the code from a google example but there is still something >>> wrong! >>> >>> This is what the script looks like: >>> <script type="text/javascript" >>> src="https://www.google.com/**jsapi<https://www.google.com/jsapi> >>> "></script> >>> <script type="text/javascript"> >>> google.load("visualization", "1", {packages:["corechart"]}); >>> google.setOnLoadCallback(**drawChart); >>> function drawChart() { >>> var data = new google.visualization.**DataTable(<?php echo >>> $dataTable; ?>); >>> >>> var options = { >>> title: 'MP' >>> }; >>> >>> var chart = new google.visualization.**AreaChart(document.** >>> getElementById('chart_div')); >>> chart.draw(data, options); >>> } >>> </script> >>> </head> >>> >>> take care >>> Adam >>> >>> Den onsdagen den 11:e juli 2012 kl. 22:41:05 UTC+2 skrev asgallant: >>>> >>>> I changed it up a bit to fit whatever column structure you like: >>>> >>>> $sqlCols = array( >>>> 'Matning', >>>> 'Top', >>>> 'In', >>>> 'Pre', >>>> 'Int' >>>> ); >>>> $result124 = mysql_query(" >>>> SELECT Matningsnamn AS Matning, >>>> Top, >>>> In, >>>> Pre, >>>> Int >>>> FROM myDB WHERE Id ='$first' OR Id ='$second'" >>>> ); >>>> $rawRows = array(); >>>> $cols = array(); >>>> // set up domain column >>>> $cols[] = array( >>>> 'type' => 'string', >>>> 'label' => 'Foo (rename as you like)' >>>> ); >>>> while($r = mysql_fetch_assoc($result124)) { >>>> $cols[] = array( >>>> 'type' => 'string', >>>> 'label' => $r[$sqlCols[0]] >>>> ); >>>> $rawRows[] = $r; >>>> } >>>> >>>> $outRows = array(); >>>> for ($i = 1; $i < count($rawRows[0]); $i++) { >>>> $temp = array(); >>>> $temp[0] = array('v' => $sqlCols[$i]); >>>> for ($j = 0; j < count($rawRows); j++) { >>>> if ($rawRows[$j]['Matning'] == $cols[1]['label']) { >>>> $temp[1] = array('v' => $rawRows[$j][$sqlCols[$i]]); >>>> } >>>> else if ($rawRows[$j]['Matning'] == $cols[2]['label']) { >>>> $temp[2] = array('v' => $rawRows[$j][$sqlCols[$i]]); >>>> } >>>> } >>>> $outRows[] = array('c' => $temp); >>>> } >>>> >>>> $dataTable = json_encode(array( >>>> 'cols' => $cols, >>>> 'rows' => $outRows >>>> )); >>>> >>>> //.... then in the javascript, use: >>>> >>>> var data = new google.visualiz**ation.DataTable(<?php echo $**dataTable >>>> ; ?>); >>>> >>>> Make sure you are using a DataTable constructor and not the >>>> arrayToDataTable method. I tried out the JSON string you posted and it >>>> works fine for me. >>>> >>>> On Wednesday, July 11, 2012 3:23:00 PM UTC-4, Adam Hardarson wrote: >>>>> >>>>> That solved that problem but now i get Table has no columns.× >>>>> if I print the json I get: >>>>> >>>>> {"cols":[{"type":"string","**label":"Value >>>>> #"},{"type":"string","label":"**Test 1"},{"type":"string","label":"**Test >>>>> 2"}], >>>>> "rows":[{"c":[{"v":"Value1"},{**"v":"61"},{"v":"66"}]},{"c":[{** >>>>> "v":"Value2"},{"v":"90"},{"v":**"83"}]},{"c":[{"v":"Value3"},{** >>>>> "v":"37"},{"v":"71"}]},{"c":[{**"v":"Value4"},{"v":"48"},{"v":** >>>>> "84"}]}]} >>>>> >>>>> For this to work I changed my original code like this: >>>>> >>>>> $result124 = mysql_query(" >>>>> SELECT Matningsnamn AS Matning, >>>>> Top AS Value1, >>>>> In AS Value2 , >>>>> Pre AS Value3 , >>>>> Int ASValue4 >>>>> FROM myDB WHERE Id ='$first' OR Id ='$second'" >>>>> >>>>> So I realize that I wrote that the "columnnames" were Value1, Value2, >>>>> Value3 and Value 4 but this was just to illustrate. The column names is >>>>> totally different from that, will that screw the code up or is it easy to >>>>> edit to display the real names? Or even better is it possible to enter the >>>>> labels manually and just getting the values from the database? So that >>>>> when I choose a new row from the dropdown only the values changes? >>>>> >>>>> Sorry for confusing everything!!!! >>>>> >>>>> Adam >>>>> >>>>> Den onsdagen den 11:e juli 2012 kl. 20:30:18 UTC+2 skrev asgallant: >>>>>> >>>>>> I forgot the $'s in front of the i's there, try this: >>>>>> >>>>>> for ($i = 1; $i < count($rawRows[0]); $i++) { >>>>>> >>>>>> On Wednesday, July 11, 2012 2:04:09 PM UTC-4, Adam Hardarson wrote: >>>>>>> >>>>>>> Hi again, thank you so much for your assistance! >>>>>>> >>>>>>> However it's not working so I the page for syntax error and got a Parse >>>>>>> error: syntax error, unexpected T_INC, expecting ')' in test.php on >>>>>>> line 37. >>>>>>> >>>>>>> That's where the for loop starts... I can't see what the problem >>>>>>> might be?! >>>>>>> >>>>>>> >>>>>>>> $result124 = mysql_query(" >>>>>>>> SELECT Matningsnamn AS Matning, >>>>>>>> Value1, >>>>>>>> Value2 , >>>>>>>> Value3 , >>>>>>>> Value4 >>>>>>>> FROM myDB WHERE Id ='$first' OR Id ='$second'" >>>>>>>> ); >>>>>>>> $rawRows = array(); >>>>>>>> $cols = array(); >>>>>>>> // set up domain column >>>>>>>> $cols[] = array( >>>>>>>> 'type' => 'string', >>>>>>>> 'label' => 'Value #' >>>>>>>> ); >>>>>>>> while($r = mysql_fetch_assoc($result124)) { >>>>>>>> $cols[] = array( >>>>>>>> 'type' => 'string', >>>>>>>> 'label' => $r['Matning'] >>>>>>>> ); >>>>>>>> $rawRows[] = $r; >>>>>>>> } >>>>>>>> >>>>>>>> $outRows = array(); >>>>>>>> for ($i = 1; i < count($rawRows[0]); i++) { >>>>>>>> $temp = array(); >>>>>>>> $temp[0] = array('v' => "Value$i"); >>>>>>>> for ($j = 0; j < count($rawRows); j++) { >>>>>>>> if ($rawRows[$j]['Matning'] == $cols[1]['label']) { >>>>>>>> $temp[1] = array('v' => $rawRows[$j]["Value$i"]); >>>>>>>> } >>>>>>>> else if ($rawRows[$j]['Matning'] == $cols[2]['label']) { >>>>>>>> $temp[2] = array('v' => $rawRows[$j]["Value$i"]); >>>>>>>> } >>>>>>>> } >>>>>>>> $outRows[] = array('c' => $temp); >>>>>>>> } >>>>>>>> >>>>>>>> $dataTable = json_encode(array( >>>>>>>> 'cols' => $cols, >>>>>>>> 'rows' => $outRows >>>>>>>> )); >>>>>>>> >>>>>>>> You can then output this into the DataTable constructor: >>>>>>>> >>>>>>>> var data = new google.visualiz**ation.DataTable(<?php echo $** >>>>>>>> dataTable; ?>); >>>>>>>> >>>>>>> >>>>>>> Seeing the end of the tunnel... :) >>>>>>> >>>>>>> Adam >>>>>>> >>>>>> >>>>> Den onsdagen den 11:e juli 2012 kl. 20:30:18 UTC+2 skrev asgallant: >>>>>> >>>>>> I forgot the $'s in front of the i's there, try this: >>>>>> >>>>>> for ($i = 1; $i < count($rawRows[0]); $i++) { >>>>>> >>>>>> On Wednesday, July 11, 2012 2:04:09 PM UTC-4, Adam Hardarson wrote: >>>>>>> >>>>>>> Hi again, thank you so much for your assistance! >>>>>>> >>>>>>> However it's not working so I the page for syntax error and got a Parse >>>>>>> error: syntax error, unexpected T_INC, expecting ')' in test.php on >>>>>>> line 37. >>>>>>> >>>>>>> That's where the for loop starts... I can't see what the problem >>>>>>> might be?! >>>>>>> >>>>>>> >>>>>>>> $result124 = mysql_query(" >>>>>>>> SELECT Matningsnamn AS Matning, >>>>>>>> Value1, >>>>>>>> Value2 , >>>>>>>> Value3 , >>>>>>>> Value4 >>>>>>>> FROM myDB WHERE Id ='$first' OR Id ='$second'" >>>>>>>> ); >>>>>>>> $rawRows = array(); >>>>>>>> $cols = array(); >>>>>>>> // set up domain column >>>>>>>> $cols[] = array( >>>>>>>> 'type' => 'string', >>>>>>>> 'label' => 'Value #' >>>>>>>> ); >>>>>>>> while($r = mysql_fetch_assoc($result124)) { >>>>>>>> $cols[] = array( >>>>>>>> 'type' => 'string', >>>>>>>> 'label' => $r['Matning'] >>>>>>>> ); >>>>>>>> $rawRows[] = $r; >>>>>>>> } >>>>>>>> >>>>>>>> $outRows = array(); >>>>>>>> for ($i = 1; i < count($rawRows[0]); i++) { >>>>>>>> $temp = array(); >>>>>>>> $temp[0] = array('v' => "Value$i"); >>>>>>>> for ($j = 0; j < count($rawRows); j++) { >>>>>>>> if ($rawRows[$j]['Matning'] == $cols[1]['label']) { >>>>>>>> $temp[1] = array('v' => $rawRows[$j]["Value$i"]); >>>>>>>> } >>>>>>>> else if ($rawRows[$j]['Matning'] == $cols[2]['label']) { >>>>>>>> $temp[2] = array('v' => $rawRows[$j]["Value$i"]); >>>>>>>> } >>>>>>>> } >>>>>>>> $outRows[] = array('c' => $temp); >>>>>>>> } >>>>>>>> >>>>>>>> $dataTable = json_encode(array( >>>>>>>> 'cols' => $cols, >>>>>>>> 'rows' => $outRows >>>>>>>> )); >>>>>>>> >>>>>>>> You can then output this into the DataTable constructor: >>>>>>>> >>>>>>>> var data = new google.visualiz**ation.DataTable(<?php echo $** >>>>>>>> dataTable; ?>); >>>>>>>> >>>>>>> >>>>>>> Seeing the end of the tunnel... :) >>>>>>> >>>>>>> Adam >>>>>>> >>>>>> -- > You received this message because you are subscribed to the Google Groups > "Google Visualization API" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/google-visualization-api/-/vYbus56w8LQJ. > > To post to this group, send email to > [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-visualization-api?hl=en. > -- You received this message because you are subscribed to the Google Groups "Google Visualization API" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-visualization-api?hl=en.
