java - ArrayList<String> Android to PHP. Insert MySQL -
i have problems trying send arraylist android php , insert arraylist mysql table.
so, first of send list parameters.
list<namevaluepair> list = new arraylist<namevaluepair>(); list.add(new basicnamevaluepair("tag", "registercall")); list.add(new basicnamevaluepair("hourmatch", hourmatch)); list.add(new basicnamevaluepair("datematch", datematch)); list.add(new basicnamevaluepair("listplayers", seleccionados .tostring())); //arraylist<string> list.add(new basicnamevaluepair("idmatch", idmatch));
if print parameters list: [tag=registercall, hourmatch=0931, datematch=2013-08-07, listplayers=[8, 10], idmatch=7].
and in php, collect parameters , send function.
if ($tag == 'registercall') { $hourmatch = $_post['hourmatch']; $datematch = $_post['datematch']; $idmatch = $_post['idmatch']; $listplayers = $_post['listplayers']; $call = $db->registercallmatch($datematch, $hourmatch, $idmatch, $listplayers); if ($call != false) { $response["success"] = 1; $response["msg"] = "insertados"; echo json_encode($response); } else { $response["error"] = 1; $response["error_msg"] = "error en la inserción"; echo json_encode($response); } }
and function is:
public function registercallmatch($datecall, $timecall, $idmatch, $listplayers) { $result = mysql_query("insert call_match (date_call, time_call, idmatch) values ('$datecall', '$timecall', '$idmatch')"); if ($result != null) { $idcall = mysql_insert_id(); if (is_array($listplayers)) { foreach ($listplayers $idplayer) { $result = mysql_query("insert call_player (idcall, idplayer) values ('$idcall','$idplayer')")or die ('unable' . mysql_error()); return true; } } else { return false; } } else { return false; } }
the problem php doesn't recognize arraylist can't insert strings database. if create array in php, function works well.
edit: ok. found problem. if sent string, can´t use array. have convert string , array. idea? string: [8, 10]. have put 8 , 10 in array.
edit: found solution.
we have arraylist , have create string. can use lot of methods use:
iterator = seleccionados.iterator(); stringbuilder listidplayers = new stringbuilder(); int = 0; while (it.hasnext()) { if (i > 0) { listidplayers.append(" ").append(it.next()); i++; } else { listidplayers.append(it.next()); i++; } }
with have string xx xx xx xx xx. space between words.
now go our php , use method explode(). explode() create array.
$players = explode(" ", $listplayers);
and check result array , iterate it.
if ($result != null) { $idcall = mysql_insert_id(); if (is_array($players)) { foreach ($players $idplayer) { $result = mysql_query("insert call_player (idcall, idplayer) values ('$idcall','$idplayer')")or die ('unable' . mysql_error()); } return true; }
very important put return out of foreach.
thank you
i think problem way send data server. send java object php , can't recognize it.
convert string special dividing characters , explode in php(bad practice).
or
i solved such problem in c# on following way (i pretty sure there in java similar way):
multipartformdatacontent form = new multipartformdatacontent(); form.add(new stringcontent(this.date_start), "data[datesearch][date_start]"); form.add(new stringcontent(this.date_end), "data[datesearch][date_end]");
you can see declaration "[...]" recognized array content. maybe can find way code:
multipartformdatacontent list = new multipartformdatacontent(); list.add("registercall","data[tag]")); list.add(hourmatch.tostring(), "data[hourmatch]")); ...
Comments
Post a Comment