issue when i get data from remote.

Hello.

 

I’m studying how to get data from remote using this tutorial : 

 

https://coronalabs.com/blog/2012/11/20/how-to-download-json-data-from-mysql-using-corona-sdk/

 

I used the code but it don’t insert data on my database sqlite. The variable “movie” is always nil, but if i print event.response the console show me the datas :

 From server: [[“discus",“poma”],[“discus”,“poma”]]

 

 

 where i mistake?

 

It seems that there is a issue during Json decode phase.

 

i allegate the code.

--php code \<?php $host="xxxxx"; $username="xxxxxxx"; $db\_name="xxxxxxxx"; // Create connection $conn = mysqli\_connect($host, $username) or die("Error " . mysqli\_error($connection)); mysql\_select\_db("$db\_name") or die ("cannot select DB"); $sql = "select \* from `Pesci`"; $result = mysql\_query($sql); $json = array(); if(mysql\_num\_rows($result)){while($row=mysql\_fetch\_row($result)){ $json[]=$row; } } mysql\_close($db\_name); echo json\_encode($json); ?\> --Client code local sqlite3 = require ( "sqlite3" ) local myNewData local json = require ( "json" ) local decodedData local db local SaveData = function () -- Save new data to a sqlite file -- Open SQLite database, if it doesn't exist, create database local path = system.pathForFile( "movies.sqlite", system.DocumentsDirectory ) db = sqlite3.open( path ) print( path ) -- Set up the table if it doesn't exist local tablesetup = "CREATE TABLE IF NOT EXISTS mymovies (id INTEGER PRIMARY KEY, movie, year);" db:exec( tablesetup ) print( tablesetup ) -- Save data to database local counter = 1 local index = "movie"..counter local movie = decodedData[index] print( movie ) while ( movie ~= nil ) do local tablefill ="INSERT INTO mymovies VALUES (NULL,'" .. movie[2] .. "','" .. movie[3] .."');" print( tablefill ) db:exec( tablefill ) counter = counter+1 index = "movie"..counter movie = decodedData[index] end -- Everything is saved to SQLite database; close database db:close() -- Load database contents to screen -- Open database local path = system.pathForFile( "movies.sqlite", system.DocumentsDirectory ) db = sqlite3.open( path ) print( path ) -- Print all of the table contents local sql = "SELECT \* FROM mymovies" for row in db:nrows(sql) do local text = row.movie .. " " .. row.year local t = display.newText( text, 20, 30\*row.id, native.systemFont, 24 ) t:setFillColor( 0.6 ) end db:close() end local function networkListener( event ) if ( event.isError ) then print( "Network error!" ) else myNewData = event.response print ( "From server: " .. myNewData ) decodedData = ( json.decode( myNewData ) ) SaveData() end end network.request( "http://acquariu.altervista.org/down.php", "GET", networkListener )

The first problem I see is I get a 404 Page Not Found error when I hit the API call in my web browsers. If you can’t connect to the page/script from the browser, network.request() isn’t going to find it either.

Sorry rob.

I changed file php 4 hours ago.

However i changed some things and now the code run fine.

I post the new code :

\<?php $host="xxxx"; //replace with your hostname $username="xxxxxx"; //replace with your username $db\_name="xxxxxx"; $con=mysql\_connect($host, $username)or die("cannot connect"); mysql\_select\_db("$db\_name") or die ("cannot select DB"); $sql = "SELECT \* FROM `Pesci`" ; //replace with your table name $result = mysql\_query($sql); $json = array(); while ($row = mysql\_fetch\_assoc($result)) { $json[]=$row; } mysql\_close($db\_name); echo json\_encode($json); ?\>

Client

local function networkListener( event ) if ( event.isError ) then print( "Network error!" ) else local ll = {} ll\_index = 1 local db = {nome = "ll", path = nil, conn = nil} db.path = system.pathForFile("data.db"), system.ResourceDirectory db.conn = sqlite.open( db.path ) myNewData = event.response print ( "From server: " .. myNewData ) decodedData = ( json.decode( myNewData ) ) for i=1, #decodedData do print (decodedData[i]) local query = [[INSERT INTO Pesci ("nome", "famiglia", "soprannome", "nomeComune", "Localita","Diffusione","dimensione","phmin","phmax","khmin","khmax","ghmin","ghmax","tempMin","tempmax","PosVasca","Descrizione","image" ) VALUES ("]] .. decodedData[i]["nome"] .. [[","]] .. decodedData[i]["famiglia"].. [[","]] .. decodedData[i]["soprannome"].. [[","]] .. decodedData[i]["nomeComune"].. [[","]] .. decodedData[i]["Localita"].. [[","]] .. decodedData[i]["Diffusione"].. [[","]] .. decodedData[i]["dimensione"].. [[","]] .. decodedData[i]["phmin"].. [[","]] .. decodedData[i]["phmax"].. [[","]] .. decodedData[i]["khmin"].. [[","]] .. decodedData[i]["khmax"].. [[","]] .. decodedData[i]["ghmin"].. [[","]] .. decodedData[i]["ghmax"].. [[","]] .. decodedData[i]["tempMin"].. [[","]] .. decodedData[i]["tempmax"].. [[","]] .. decodedData[i]["PosVasca"].. [[","]] .. decodedData[i]["Descrizione"].. [[","]] .. decodedData[i]["image"].. [[");]] local riga = db.conn:exec( query ) end end end network.request( "http://acquariu.altervista.org/downloadPesci.php", "GET", networkListener )

The first problem I see is I get a 404 Page Not Found error when I hit the API call in my web browsers. If you can’t connect to the page/script from the browser, network.request() isn’t going to find it either.

Sorry rob.

I changed file php 4 hours ago.

However i changed some things and now the code run fine.

I post the new code :

\<?php $host="xxxx"; //replace with your hostname $username="xxxxxx"; //replace with your username $db\_name="xxxxxx"; $con=mysql\_connect($host, $username)or die("cannot connect"); mysql\_select\_db("$db\_name") or die ("cannot select DB"); $sql = "SELECT \* FROM `Pesci`" ; //replace with your table name $result = mysql\_query($sql); $json = array(); while ($row = mysql\_fetch\_assoc($result)) { $json[]=$row; } mysql\_close($db\_name); echo json\_encode($json); ?\>

Client

local function networkListener( event ) if ( event.isError ) then print( "Network error!" ) else local ll = {} ll\_index = 1 local db = {nome = "ll", path = nil, conn = nil} db.path = system.pathForFile("data.db"), system.ResourceDirectory db.conn = sqlite.open( db.path ) myNewData = event.response print ( "From server: " .. myNewData ) decodedData = ( json.decode( myNewData ) ) for i=1, #decodedData do print (decodedData[i]) local query = [[INSERT INTO Pesci ("nome", "famiglia", "soprannome", "nomeComune", "Localita","Diffusione","dimensione","phmin","phmax","khmin","khmax","ghmin","ghmax","tempMin","tempmax","PosVasca","Descrizione","image" ) VALUES ("]] .. decodedData[i]["nome"] .. [[","]] .. decodedData[i]["famiglia"].. [[","]] .. decodedData[i]["soprannome"].. [[","]] .. decodedData[i]["nomeComune"].. [[","]] .. decodedData[i]["Localita"].. [[","]] .. decodedData[i]["Diffusione"].. [[","]] .. decodedData[i]["dimensione"].. [[","]] .. decodedData[i]["phmin"].. [[","]] .. decodedData[i]["phmax"].. [[","]] .. decodedData[i]["khmin"].. [[","]] .. decodedData[i]["khmax"].. [[","]] .. decodedData[i]["ghmin"].. [[","]] .. decodedData[i]["ghmax"].. [[","]] .. decodedData[i]["tempMin"].. [[","]] .. decodedData[i]["tempmax"].. [[","]] .. decodedData[i]["PosVasca"].. [[","]] .. decodedData[i]["Descrizione"].. [[","]] .. decodedData[i]["image"].. [[");]] local riga = db.conn:exec( query ) end end end network.request( "http://acquariu.altervista.org/downloadPesci.php", "GET", networkListener )