Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Data column(s) for axis #0 cannot be of type string error in google chart

I tried to populate google chart datatable in server side using PHP.I got JSON file properply, but the Chart not display in client Application. I got error-Data column(s) for axis #0 cannot be of type string . My coding is below here.

After fetching data from database,

$colarray=array(array("id"=>"","label"=>"userid","pattern"=>"","type"=>"number"),array("id"=>"","label"=>"name","pattern"=>"","type"=>"string"));

  $final=array();
    for($i=0;$i<$rows;$i++) 
    {
     $id[$i]=pg_fetch_result($res1,$i,'id');
     $name[$i]=pg_fetch_result($res1,$i,'name');
     $prefinal[$i]=array("c"=>array(array("v"=>$name[$i]),array("v"=>$name[$i])));
     array_push($final,$prefinal[$i]);
    }


    $table['cols']=$colarray;
    $table['rows']=$final;
    echo json_encode($table);

My Output Json:

{
  "cols":[
    {"id":"","label":"userid","pattern":"","type":"number"},
    {"id":"","label":"name","pattern":"","type":"string"}
   ],
  "rows":[
    {"c":[{"v":"101"},{"v":"Aircel"}]},
    {"c":[{"v":"102"},{"v":"Srini"}]},
    {"c":[{"v":"103"},{"v":"Tamil"}]},
    {"c":[{"v":"104"},{"v":"Thiyagu"}]},
    {"c":[{"v":"105"},{"v":"Vasan"}]},
    {"c":[{"v":"107"},{"v":"Senthil"}]},
    {"c":[{"v":"108"},{"v":"Sri"}]},
    {"c":[{"v":"109"},{"v":"Docomo"}]},
    {"c":[{"v":"106"},{"v":"Innodea"}]}
    ]
}

How to solve this issue?

like image 781
Ramprasad Avatar asked Feb 08 '12 14:02

Ramprasad


4 Answers

To extend on @sajal's accurate answer: Change the last line of your code from:

echo json_encode($table);

to:

echo json_encode($table, JSON_NUMERIC_CHECK);

This will tell json_encode to recognize numbers and abstain from wrapping them in quotes (Available since PHP 5.3.3.). http://php.net/manual/en/json.constants.php#constant.json-numeric-check

like image 129
Bernhard Wagner Avatar answered Nov 07 '22 10:11

Bernhard Wagner


You specify type of userid as number... but pass string.. thats causing the problem.

I just wasted 30 mins with the opposite problem ...

Your output json should look like :-

{
  "cols":[
    {"id":"","label":"userid","pattern":"","type":"number"},
    {"id":"","label":"name","pattern":"","type":"string"}
   ],
  "rows":[
    {"c":[{"v":101},{"v":"Aircel"}]},
    {"c":[{"v":102},{"v":"Srini"}]},
    {"c":[{"v":103},{"v":"Tamil"}]},
    {"c":[{"v":104},{"v":"Thiyagu"}]},
    {"c":[{"v":105},{"v":"Vasan"}]},
    {"c":[{"v":107},{"v":"Senthil"}]},
    {"c":[{"v":108},{"v":"Sri"}]},
    {"c":[{"v":109},{"v":"Docomo"}]},
    {"c":[{"v":106},{"v":"Innodea"}]}
    ]
}
like image 38
sajal Avatar answered Nov 07 '22 10:11

sajal


On a BarChart, one of the columns (the second one) has to be a number. That can cause this error message.

like image 39
Noumenon Avatar answered Nov 07 '22 08:11

Noumenon


In your drawChart() function, you are probably using google.visualization.arrayToDataTable, and this does not allow any nulls. Please use addColumn function explicitly

like image 21
Ken.Fukizi Avatar answered Nov 07 '22 08:11

Ken.Fukizi