passing spinner selected data from android to php - php

I need to read data from an external database with hundreds of items. so for i am trying to pass spinner selected value to php
android code is here:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.icd);
states = getResources().getStringArray(R.array.Diseases);
t1 = (TextView) findViewById(R.id.textView1);
spinner = (Spinner) findViewById(R.id.country_spinner);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, states);
dataAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
#Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
value = spinner.getSelectedItem().toString();
// define the parameter
postParameters.add(new BasicNameValuePair("789", value));
try {
CustomHttpClient.executeHttpGet("789");
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String response = null;
// call executeHttpPost method passing necessary parameters
try {
response = CustomHttpClient.executeHttpPost(
urlheart,
// in case of remote server
// "http://omega.uta.edu/~kmr2464/jsonscript.php",
postParameters);
// store the result returned by PHP script that runs
// MySQL query
String result = response.toString();
// parse json data
try {
returnString = "";
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
Log.i("log_tag", "id: " + json_data.getInt("id")
+ ", name: " + json_data.getString("name")
);
returnString += "\n" + "Name ="
+ json_data.getString("icd_disease") + "\n"
+ " Symptoms = "
+ json_data.getInt("icd_symptoms") + "\n"
+ " "
+ json_data.getString("icd_treatment");
}
} catch (JSONException e) {
Log.e("log_tag", "Error parsing data " + e.toString());
}
try {
t1.setText(returnString);
} catch (Exception e) {
Log.e("log_tag", "Error in Display!" + e.toString());
;
}
} catch (Exception e) {
Log.e("log_tag",
"Error in http connection!!" + e.toString());
}
}
#Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
php:
if(isset($_POST['789'])){
$id = $_POST['789'];
$sql = "SELECT * FROM icd WHERE icd_disease = 'id'";
$result = mysql_query($sql);
while($row=mysql_fetch_assoc($result))
$output[]=$row;
print(json_encode($output));
mysql_close();
My question is how can I pass the data from spinner android to php query so the query will only return the proper items only aginst selected item

Try this:
if(isset($_POST['789'])){
$id = $_POST['789'];
$sql = "SELECT * FROM icd WHERE icd_disease = '$id'";
$result = mysql_query($sql);
while($row=mysql_fetch_assoc($result))
$output[]=$row;
print(json_encode($output));
mysql_close();

Related

How to send array and variable from php to android app?

I need help.
Have seen similar questions but I cant still do it. So I post mine.
php codes runs well so far. Ijust dont know how to get the array.
How can I get the array from php and list it in my alertdialog like this:
soy sauce - $1
onion - $1
total= $2
Or is this possible or not? Or maybe please tell me what to add in here.
Thanks for your time in advance. Any form of help would be appreciated.
This are my codes:
public class updateData2 extends AsyncTask<String, String, String> {
#Override
protected String doInBackground(String... params) {
ArrayList<NameValuePair> postVars = new ArrayList<>();
postVars.add(new BasicNameValuePair("JSON", String.valueOf(EverythingJSON)));
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://abcabc.com/buy_now.php");
try {
httppost.setEntity(new UrlEncodedFormEntity(postVars));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
HttpResponse response = httpclient.execute(httppost);
String responseBody = EntityUtils.toString(response.getEntity());
} catch (ClientProtocolException e) {
e.printStackTrace();
Log.v("MAD", "Error sending... ");
} catch (IOException e) {
e.printStackTrace();
Log.v("MAD", "Error sending... ");
}
return null;
}
#Override
protected void onPostExecute(String result) {
Toast.makeText(Cart.this,EverythingJSON.toString(), Toast.LENGTH_LONG).show();
AlertDialog.Builder builder = new AlertDialog.Builder(Cart.this);
builder.setTitle("ORDER:");
builder.setMessage(EverythingJSON.toString());
builder.setPositiveButton("Confirm",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
}
});
builder.show();
}
}
php
<?php
require "conn.php";
$total = 0;
// $ing = array("ampalaya", "soy sauce");
$JSON_Received = $_POST["JSON"];
$obj = json_decode($JSON_Received, true);
$products_name_array = array();
$products_price_array = array();
// foreach($ing as $value){
foreach($obj['ques'] as $value){
$sql="select MIN(product_price) , product_id , store_id , product_name,product_unit_of_measure , product_price ,product_stock from products where product_name like '%$value%'";
$result2 = mysqli_query($conn, $sql);
if(mysqli_num_rows($result2) > 0){
while($row = mysqli_fetch_assoc($result2)){
$product_id=$row['product_id'];
$store_id=$row['store_id'];
$product_name=$row['product_name']; $products_name_array[] = $product_name;
$product_unit_of_measure=$row['product_unit_of_measure'];
$product_price=$row['product_price']; $products_price_array[] = $product_price;
$total = $total+$product_price;
}}
}
foreach($products_name_array as $key => $value) {
echo $products_name_array[$key] . " - " . "$" . $products_price_array[$key] . ".00" ."<br>";
}
echo "</br>";
echo "</br>";
echo "TOTAL IS: ".$total. ".00";
?>
example:
getArray.php
<? echo json_encode($your_array);?>
and in android use for example retrofit library(http client)
interface phpApi{
#GET("url/getArray.php")
Call<YourObject> getArray();
}

App crashes if no data available in mysql database

my application crashes when Serialno and city is not available in database, sometimes it shows "No Data is Available", and some times it crashes, All i need is to display toast when ever Serial number and city is not present in database.
public String getvalues()
{
String uri = "http://www.lorryguru.com/retusno.php?city="+Citys+"&serialno="+SerialNo;
HttpGet httpGet = new HttpGet(uri);
HttpClient client = new DefaultHttpClient();
HttpResponse response;
StringBuilder stringBuilder = new StringBuilder();
try {
response = client.execute(httpGet);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
int b;
while ((b = stream.read()) != -1)
{
stringBuilder.append((char) b);
}
}
catch (ClientProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
JSONArray arr = new JSONArray(stringBuilder.toString());
//result = jsonObj.getJSONArray(TAG_RESULT);
JSONObject c = arr.getJSONObject(0);
id = c.getString(TAG_ID);
district = c.getString(TAG_DISTRICT);
cit = c.getString(TAG_CITY);
serial_no = c.getString(TAG_SERIALNO);
gende = c.getString(TAG_GENDER);
wareno = c.getString(TAG_WARENO);
befor = c.getString(TAG_BEFORE);
afte = c.getString(TAG_AFTER);
latitude = c.getString(TAG_LATITUDE);
longitude = c.getString(TAG_LONGITUDE);
return "success";
}
catch (JSONException e)
{
return "No Data is Available";
//e.printStackTrace();
}
}
my php script is
<?php
require "init.php";
$serialno = $_REQUEST["serialno"];
$city = $_REQUEST["city"];
$sql = "SELECT * FROM dogs_details WHERE serial_no='".$serialno."' &&city='".$city."' ";
$res = $con->query($sql);
$result = array();
while($row = mysqli_fetch_array($res)){
if($row['after_dog']=="")
{
$afterimage="No Image";
}
else
{
$afterimage=$row['after_dog'];
}
array_push($result,
array('id'=>$row['id'],
'district'=>$row['district'],
'city'=>$row['city'],
'serialno'=>$row['serial_no'],
'gender'=>$row['gender'],
'wareno'=>$row['ware_no'],
'before'=>$row['before_dog'],
'after'=>$afterimage,
'latitude'=>$row['latitude'],
'longitude'=>$row['longitude']
));
}
echo json_encode($result);
mysqli_close($con);
?>
My postExecute is below
protected void onPostExecute(String s) {
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
dialog.hide();
Toast.makeText(getApplicationContext(), s, Toast.LENGTH_SHORT).show();
dis.setText("District " + district);
city.setText("City " + cit);
serialno.setText("Serial No. " + serial_no);
gender.setText("Gender " + gende);
Picasso.with(Serialno.this).load(befor).into(before);
if (afte.equals("No Image")) {
after.setImageDrawable(getResources().getDrawable(R.drawable.load));
} else {
Picasso.with(Serialno.this).load(afte).into(after);
}
// loction.setText("Latitude "+latitude+" "+"Longitude "+longitude);
Showing_Map();
}
Check nullity of all fields of JsonObject and then try to use them. For example:
try
{
JSONArray arr = new JSONArray(stringBuilder.toString());
//result = jsonObj.getJSONArray(TAG_RESULT);
JSONObject c = arr.getJSONObject(0);
if(c.isNull(TAG_ID)
id="";
else
id = c.getString(TAG_ID);
if(c.isNull(TAG_DISTRICT)
district="";
else
district = c.getString(TAG_DISTRICT);
..........................
...............................
return "success";
}
catch (JSONException e)
{
return "No Data is Available";
//e.printStackTrace();
}
And in onPostExecute show Toast:
protected void onPostExecute(String s) {
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
dialog.hide();
Toast.makeText(getApplicationContext(), s, Toast.LENGTH_SHORT).show();
dis.setText("District " + district);
//Toast when city is null
if(cit.equals(""))
Toast.makeText(getApplicationContext(), YOUR_MESSSAGE, Toast.LENGTH_SHORT).show();
//Toast when serail_no is null
if(serail_no .equals(""))
Toast.makeText(getApplicationContext(), YOUR_MESSSAGE, Toast.LENGTH_SHORT).show();
city.setText("City " + cit);
serialno.setText("Serial No. " + serial_no);
gender.setText("Gender " + gende);
Picasso.with(Serialno.this).load(befor).into(before);
if (afte.equals("No Image")) {
after.setImageDrawable(getResources().getDrawable(R.drawable.load));
} else {
Picasso.with(Serialno.this).load(afte).into(after);
}
// loction.setText("Latitude "+latitude+" "+"Longitude "+longitude);
Showing_Map();
}

POST string with keys and values in android to php

i want to send all contacts with contact name and number in one row in one array in my android application like
john => "+92312xxxxxxx" ,
Right now i'm using namevaluepairs to post two arrays but it's not working like :
public class ContactList extends Activity {
public TextView outputText;
String phoneNumber = null;
String names = null;
String[] keyValue;
String[] kes;
int Count;
String s = "";
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact_list);
outputText = (TextView) findViewById(R.id.textView1);
fetchContacts();
//Http connection
InputStream is=null;
List<NameValuePair> nameValuePairs =new ArrayList<NameValuePair>(1);
for (int i = 0; i < Count ; i++)
{
nameValuePairs.add(new BasicNameValuePair("CN[]", keyValue[i]));
nameValuePairs.add(new BasicNameValuePair("names[]",kes[i]));
Log.i("Response", "you sent :" +kes[i]+" :"+ keyValue[i] + "\n ");
}
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.1.107/older/ContactList.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}
catch(ClientProtocolException e)
{
Log.e("ClientProtocol","Log_tag");
e.printStackTrace();
System.out.println("Excep: "+e);
}
catch(IOException e)
{
Log.e("Log_tag","IOException");
e.printStackTrace();
}
String result = "";
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
reader.close();
is.close();
result=sb.toString();
Log.i("Response", "result "+ result);
}
catch(Exception e)
{
Log.e("log_tag", "Error converting result "+e.toString());
}
//result = "[{\"0\":\"Muhaimin\",\"1\":\"3\",\"2\":\"o+\"}]";
try
{
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++)
{
s= s +";"+ jArray.getString(i) + "\n";
}
}
catch (Exception e)
{
Log.e("Response", "error fetching indexes" + e);
}
String[] friends= s.split(";");
StringBuffer output = new StringBuffer();
for (int i = 0; i < friends.length; i++)
{
Log.i("List","Your friends namee"+friends[i]);
output.append("\n Your friend's number"+ friends[i]);
}
}
//Fetch Contacts
public void fetchContacts() {
// String email = null;
Uri CONTENT_URI = ContactsContract.Contacts.CONTENT_URI;
String _ID = ContactsContract.Contacts._ID;
String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME;
String HAS_PHONE_NUMBER = ContactsContract.Contacts.HAS_PHONE_NUMBER;
Uri PhoneCONTENT_URI = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String Phone_CONTACT_ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID;
String NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER;
// Uri EmailCONTENT_URI = ContactsContract.CommonDataKinds.Email.CONTENT_URI;
//String EmailCONTACT_ID = ContactsContract.CommonDataKinds.Email.CONTACT_ID;
// String DATA = ContactsContract.CommonDataKinds.Email.DATA;
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(CONTENT_URI, null,null, null, null);
// Loop for every contact in the phone
Count = cursor.getCount();
if (cursor.getCount() > 0) {
keyValue= new String[Count];
kes= new String[Count];
while (cursor.moveToNext()) {
String contact_id = cursor.getString(cursor.getColumnIndex( _ID ));
String name = cursor.getString(cursor.getColumnIndex( DISPLAY_NAME ));
int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex( HAS_PHONE_NUMBER )));
if (hasPhoneNumber > 0) {
// Query and loop for every phone number of the contact
Cursor phoneCursor = contentResolver.query(PhoneCONTENT_URI, null, Phone_CONTACT_ID + " = ?", new String[] { contact_id }, null);
while (phoneCursor.moveToNext())
{
int i=0;
String stu = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER));
phoneNumber +=":"+ stu;
names +=":" + name;
Log.i("List",stu + name +"\n" );
}
phoneCursor.close();
}
}
}
keyValue = phoneNumber.split(":");
kes = names.split(":");
Log.i("List","24th"+keyValue[23]);
Toast.makeText(getApplicationContext(), "99th "+keyValue[909] ,Toast.LENGTH_LONG).show();
}
PHP after receiving contacts will match them and return only those which have a match with database contacts. And then it returns contacts with names
i'm stuck with sending and receving part
Here is php code
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'verification');
define('DB_USER','root');
define('DB_PASSWORD','');
// 1. Create a database connection
$connection = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD);
if (!$connection) {
die("Database connection failed: " . mysqli_error());
}
// 2. Select a database to use
$db_select = mysqli_select_db($connection, DB_NAME);
if (!$db_select) {
die("Database selection failed: " . mysqli_error());
}
$PhoneNum= $_POST["CN"];
$i=0;
$j=0;
$friends = array();
$Invite = array();
unset ($PhoneNum[0]);
foreach ($PhoneNum as $i=> $element){
//or do whatever you need to do to that variable
$query="SELECT Number FROM `user` WHERE Number=$element";
$query_exec = mysqli_query($connection ,$query);
if (!$query_exec)
{ echo mysql_error(); }
ELSE {
if(mysqli_num_rows($query_exec)>0)
{
$friends["$j"]= $PhoneNum[$i];
$j++;
}
else
{
;
}}
}
echo (json_encode($friends));
?>
You'll get a URL now that would look like:
www.example.com/yourscript?CN[]=keyValue1&names[]=key1&CN[]=keyValue2&names[]=key2 etc.. going on untill your whole list has looped.
I doubt that is what your PHP script wants to receive, you probably want to send the POST for each time you increment the loop. But thats just conjecture untill you post more information/code.
Instead send a JSON array as the value of the nameValuePair and convert it to a PHP array using json_decode function in the server side.

Posting gps coordinates on php server from android phone

What I am trying is I get my current location (the coordinates) and i want to post those coordinates on a server. I have made a server using WAMP. I have written php code and the code in java but its showing me error in the POST word. Please tell me if its correct or if i can modify it!!
PHP CODE
<?php
echo 'Hello, world!';
$json = $_GET['jsonpost'];//get the post you sent...
$data = json_decode($json); //decode the json formatted string...
print_r($data);
$id = $data->id;
$devid = $data->devid;
$latitude = $data->latitude;
$longitude = $data->longitude;
$service = $data->service;
$con = mysql_connect("","","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("a5234826_ul", $con);
$devid = $_POST['devid'];
$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];
echo "devid" +$devid;
echo "latitude" + $latitude;
echo "longitude" + $longitude;
$sql = "INSERT INTO `a5234826_ul`.`locations` (
`id` ,
`devid` ,
`latitude` ,
`longitude` ,
`service`
)
VALUES (
NULL , '$devid', '$latitude', '$longitude', '$service'
)";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con);
echo json_encode($variable);
?>
EDITED
LocationService.java
#Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
public int onStartCommand(Intent intent, int flags, int startId) {
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "lock");
wl.acquire();
context = this;
final String who = intent.getStringExtra("who");
final LocationManager locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
final LocationListener listener = new LocationListener(){
// start location changed
public void onLocationChanged(Location loc) {
double latitude = loc.getLatitude();
double longitude = loc.getLongitude();
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://.../serverFile.php");
JSONObject json = new JSONObject();
TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
String devid = telephonyManager.getDeviceId();
String postData = "{\"request\":{\"type\":\"locationinfo\"},\"userinfo\":{\"latitude\":\""+latitude+"\",\"longitude\":\""+longitude+"\",\"devid\":\""+devid+"\"}}";
try {
json.put("longitude", longitude);//place each of the strings as you did in postData method
json.put("latitude", latitude);
json.put("devid", devid);
JSONArray postjson=new JSONArray();
postjson.put(json);
httppost.setHeader("json",json.toString());
httppost.getParams().setParameter("jsonpost",postjson);
HttpResponse response = httpclient.execute(httppost);
// for JSON retrieval:
if(response != null)
{
InputStream is = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
String jsonStr = sb.toString(); //take the string you built place in a string
JSONObject rec = new JSONObject(jsonStr);
String longitudecord = rec.getString("lon");
String latitudecord = rec.getString("lat");
// ...
}
}catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (who.equals("me")){
Intent i = new Intent(context.getPackageName()+".LocationReceived");
i.putExtra("lat", String.valueOf(latitude));
i.putExtra("longitude", String.valueOf(longitude));
i.putExtra("accuracy", String.valueOf(loc.getAccuracy()));
context.sendBroadcast(i);
Notification notif = new Notification();
NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
notif.tickerText = "Location Found!";
notif.icon = R.drawable.ic_launcher;
notif.flags = Notification.FLAG_AUTO_CANCEL;
notif.when = System.currentTimeMillis();
Intent notificationIntent = new Intent(context, TestLocatorActivity.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
notificationIntent.putExtra("lat", String.valueOf(latitude));
notificationIntent.putExtra("longitude", String.valueOf(longitude));
notificationIntent.putExtra("accuracy", String.valueOf(loc.getAccuracy()));
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notif.setLatestEventInfo(context, "Location Found!", "Click to open.", contentIntent);
nm.notify(0, notif);
} else {
SmsManager smsMan = SmsManager.getDefault();
smsMan.sendTextMessage(who, null, "http://maps.google.com/maps?q=loc:"+latitude+","+longitude, null, null);
smsMan.sendTextMessage(who, null, "Latitude: "+latitude+"\nLongitude: "+longitude, null, null);
}
locMan.removeUpdates(this);
try {
wl.release();
} catch (Exception e){
e.printStackTrace();
}
stopSelf();
}
public void onProviderDisabled(String provider){
}
public void onProviderEnabled(String provider) {
//Log.i(tag, "GPS IS ON");
}
public void onStatusChanged(String provider, int status, Bundle extras){
switch(status) {
case LocationProvider.OUT_OF_SERVICE:
case LocationProvider.TEMPORARILY_UNAVAILABLE:
case LocationProvider.AVAILABLE:
break;
}
} };
locMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
locMan.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, listener);
return 2;
}
}
The main problem I can see here is that You are talking about POST but in Your android LocationService You are creating an HttpGet object:
HttpGet httppost = new HttpGet("http://.../serverFile.php");
and then from nowhere a httpost variable is used as post:
post.setHeader("json",json.toString());
post.getParams().setParameter("jsonpost",postjson);
In PHP I'm not sure what are You trying to achieve by this:
$_SERVER['HTTP_JSON'];
cos I'm sure there is no such index. Instead call
$_POST['jsonpost']; // <-- that is the parameter name from Your JAVA code...
or
$_GET['jsonpost']; // <-- that is the parameter name from Your JAVA code...
It almost looks like You COPY + PASTE the code from similar question here (which this one should be a duplicate of!): Sending Data From Android To Server with JSON data .
EDIT : OK, let's assume that Your android JAVA code is OK and You are sending data through GET. Then You will have to repair Your PHP - try this:
<?php
echo 'Hello, world!';
$json = $_GET['jsonpost']; // get the json you sent through GET...
$data = json_decode($json); // decode the json formatted string...
print_r($data); // print out the $data variable to see whether everything is OK...
$devid = $data->devid;
$longitude = $data->longitude;
$latitude = $data->latitude;
$con = mysql_connect("","","") or die('Could not connect: ' . mysql_error());
mysql_select_db("a5234826_ul", $con);
echo "devid" +$devid;
echo "latitude" + $latitude;
echo "longitude" + $longitude;
$sql = "INSERT INTO `a5234826_ul`.`locations` (
`devid`,
`latitude`,
`longitude`
) VALUES (
'$Devid',
'$latitude',
'$longitude'
);";
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
mysql_close($con);
echo json_encode($variable);
You should proceed with the print_r($data); and see whether the data arrived and whether the JSON was decoded and also to see what properties it contains.
EDIT 2 Due to posted logcat: Did You read the error from the logcat? It is so clear!!! Programmer should of course understand what an error message is saying and should thing about what he is doing, not just copy+pasting pieces of code from somewhere without thinking of it... In Your manifest.xml You need to add a permision READ_PHONE_STATE - read about permissions here: http://developer.android.com/reference/android/Manifest.permission.html and about adding permissions to manifest.xml here: http://developer.android.com/guide/topics/security/security.html#permissions.

Send parameter to server from android application

I have an android application that requests data from my mysql database. This works fine but when I try to send a parameter for how many items to retrieve I get nothing.
This is my java code:
result = "";
client = new DefaultHttpClient();
post = new HttpPost("http://www.XXX.XXXX.XX/XX.php");
nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("itemsToGet", itemsToGet));
try {
post.setEntity((new UrlEncodedFormEntity(nameValuePairs)));
response = client.execute(post);
entity = response.getEntity();
inputStream = entity.getContent();
} catch (UnsupportedEncodingException e) {
Log.e(TAG, e.toString());
} catch (ClientProtocolException e) {
Log.e(TAG, e.toString());
} catch (IOException e) {
Log.e(TAG, e.toString());
}
try {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream ,"iso-8859-1"), 8);
stringBuilder = new StringBuilder();
String line = null;
while((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line + "\n");
}
inputStream.close();
result = stringBuilder.toString();
} catch (UnsupportedEncodingException e) {
Log.e(TAG, e.toString());
} catch (IOException e) {
Log.e(TAG, e.toString());
}
try {
JSONArray jsonArray = new JSONArray(result);
for(int i = 0; i < jsonArray.length(); i++) {
JSONObject object = jsonArray.getJSONObject(i);
Log.i(TAG, object.getString("namn") + " " + i);
}
} catch (JSONException e) {
Log.e(TAG, e.toString());
}
And this is my server side PHP code:
<?php
mysql_connect("XXX.XXX.com", "XXX", "XXX") or die(mysql_error());
mysql_select_db("XXXXXXX") or die(mysql_error());
$data = mysql_query("SELECT * FROM artikel") or die(mysql_error());
$itemsToGet = intval($_POST['itemsToGet']);
$counter = 0;
while($info = mysql_fetch_array( $data ) && $counter < $itemsToGet)
{
$databaseInfo[] = $info;
$counter++;
}
print(json_encode($databaseInfo));
?>
I solved it. The condition in the while-loop was incorrect.
while($info = mysql_fetch_array( $data ) && $counter < $itemsToGet)
It should be
while(($info = mysql_fetch_array( $data )) && ($counter < $itemsToGet))

Categories