Sneha Sneha - 6 months ago 24
SQL Question

How to Update Data using PHP MYSQL in Android

I am writing an app in which I need to update data using PHP MySQL, and every time I am getting message "Update Data Successfully". But whenever I see into my database, I am not getting any changes in values.

Logcat says:

09-04 12:00:50.176: D/gralloc_goldfish(538): Emulator without GPU emulation detected.
09-04 12:08:38.646: D/InputEventConsistencyVerifier(538): KeyEvent: ACTION_UP but key was not down.
09-04 12:08:38.646: D/InputEventConsistencyVerifier(538): in com.android.internal.view.menu.ExpandedMenuView@4136ec30
09-04 12:08:38.646: D/InputEventConsistencyVerifier(538): 0: sent at 552986000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MENU, scanCode=229, metaState=0, flags=0x8, repeatCount=0, eventTime=552986, downTime=552899, deviceId=0, source=0x101 }
09-04 12:08:39.885: D/(538): UserLoginAppointmentActivity txtPhone[before] :: android.widget.EditText@41389238
09-04 12:08:39.885: D/(538): UserLoginAppointmentActivity txtPass[before] :: android.widget.EditText@4138acb0
09-04 12:08:40.205: W/TextLayoutCache(538): computeValuesWithHarfbuzz -- need to force to single run
09-04 12:08:42.976: D/dalvikvm(538): GC_CONCURRENT freed 131K, 3% free 10157K/10375K, paused 6ms+4ms
09-04 12:08:46.357: D/InputEventConsistencyVerifier(538): KeyEvent: ACTION_UP but key was not down.
09-04 12:08:46.357: D/InputEventConsistencyVerifier(538): in android.widget.EditText@4138acb0
09-04 12:08:46.357: D/InputEventConsistencyVerifier(538): 0: sent at 561313000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_TAB, scanCode=15, metaState=0, flags=0x8, repeatCount=0, eventTime=561313, downTime=561190, deviceId=0, source=0x101 }
09-04 12:08:49.746: D/(538): UserLoginAppointmentActivity txtPhone :: android.widget.EditText@41389238
09-04 12:08:49.746: D/(538): UserLoginAppointmentActivity txtPass :: android.widget.EditText@4138acb0
09-04 12:08:50.066: D/(538): UserLoginAppointmentActivity resultServer :: {"StatusID":"1","UserID":"24","Error":"Login Ok"}
09-04 12:08:50.066: D/(538): UserLoginAppointmentActivity strStatusID[before] :: 0
09-04 12:08:50.066: D/(538): UserLoginAppointmentActivity strUserID[before] :: 0
09-04 12:08:50.066: D/(538): UserLoginAppointmentActivity strError[before] :: Unknow Status!
09-04 12:08:50.066: D/(538): UserLoginAppointmentActivity strStatusID[after] :: 1
09-04 12:08:50.076: D/(538): UserLoginAppointmentActivity strUserID[after] :: 24
09-04 12:08:50.076: D/(538): UserLoginAppointmentActivity strError[after] :: Login Ok
09-04 12:08:50.105: D/(538): UserLoginAppointmentActivity UserID Intent :: 24
09-04 12:08:51.496: D/dalvikvm(538): GC_CONCURRENT freed 204K, 4% free 10345K/10695K, paused 5ms+5ms
09-04 12:08:55.475: D/(538): sAppointmentID :: 24
09-04 12:08:55.475: D/(538): sAppointmentID :: 53
09-04 12:08:56.166: D/(538): resultServer - getByMemberIDR:: {"UserID":"24","AppointmentID":"53","Type":"Cardiology","Date":"12-09-2013","Time":"22:15","Status":"Pending"}
09-04 12:08:56.166: D/(538): strUserID :: 24
09-04 12:08:56.176: D/(538): strAppointmentID :: 53
09-04 12:08:56.176: D/(538): strType :: Cardiology
09-04 12:08:56.176: D/(538): strDate :: 12-09-2013
09-04 12:08:56.176: D/(538): strTime :: 22:15
09-04 12:11:06.866: D/dalvikvm(538): GC_CONCURRENT freed 278K, 4% free 10459K/10887K, paused 7ms+7ms
09-04 12:15:36.425: D/(538): resultServer - updateData:: {"StatusID":"1","Message":"updated"}
09-04 12:15:37.015: D/dalvikvm(538): GC_CONCURRENT freed 330K, 5% free 10572K/11015K, paused 7ms+9ms


PHP Script:

<?php
$objConnect = mysql_connect("localhost","root","");
$objDB = mysql_select_db("android");

$strUserID = $_POST["sUserID"];
$strAppointmentID = $_POST["sAppointmentID"];

$strType = $_POST["sType"];
$strDate = $_POST["sDate"];
$strTime = $_POST["sTime"];

/*** Update ***/
$strSQL = " UPDATE book_appointment SET
Type = '".$strType."',
Date = '".$strDate."',
Time = '".$strTime."'
WHERE AppointmentID = '".$strAppointmentID."' ";

$objQuery = mysql_query($strSQL);
if(!$objQuery)
{
$arr['StatusID'] = "0";
$arr['Message'] = "Cannot save data!";
}
else
{
$arr['StatusID'] = "1";
$arr['Message'] = "updated";
}
mysql_close($objConnect);
echo json_encode($arr);
?>


UpdateActivity.java:-

public class UpdateActivity extends Activity {

private static final String tag = null;

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update);

// Permission StrictMode
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}

showInfo();

// btnSave
Button btnSave = (Button) findViewById(R.id.btnSave);
// Perform action on click
btnSave.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(SaveData())
{
// When Save Complete
Intent newActivity = new Intent(UpdateActivity.this,RescheduleActivity.class);
startActivity(newActivity);
}
}
});


// btnCancel
final Button btnCancel = (Button) findViewById(R.id.btnCancel);
// Perform action on click
btnCancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent newActivity = new Intent(UpdateActivity.this,RescheduleActivity.class);
startActivity(newActivity);
}
});

}

public void showInfo()
{
// txtMemberID,txtUsername,txtPassword,txtConPassword,txtName,txtEmail,txtTel
final TextView tUserID = (TextView)findViewById(R.id.txtUserID);
final TextView tAppointmentID = (TextView)findViewById(R.id.txtAppointmentID);
final TextView tType = (TextView)findViewById(R.id.txtType);
final TextView tDate = (TextView)findViewById(R.id.txtDate);
final TextView tTime = (TextView)findViewById(R.id.txtTime);


Button btnSave = (Button) findViewById(R.id.btnSave);
Button btnCancel = (Button) findViewById(R.id.btnCancel);

String url = "http://10.0.2.2/appointments/getByMemberIDR.php";

Intent intent= getIntent();
final String UserID = intent.getStringExtra("UserID");
final String AppointmentID = intent.getStringExtra("AppointmentID");

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("sUserID", UserID));
params.add(new BasicNameValuePair("sAppointmentID", AppointmentID));

String resultServer = getHttpPost(url,params);
Log.d(tag, "resultServer - getByMemberIDR:: " + resultServer);

String strUserID = "";
String strAppointmentID = "";
String strType = "";
String strDate = "";
String strTime = "";

JSONObject c;
try {
c = new JSONObject(resultServer);

strUserID = c.getString("UserID");
Log.d(tag, "strUserID :: " + strUserID);
strAppointmentID = c.getString("AppointmentID");
Log.d(tag, "strAppointmentID :: " + strAppointmentID);
strType = c.getString("Type");
Log.d(tag, "strType :: " + strType);
strDate = c.getString("Date");
Log.d(tag, "strDate :: " + strDate);
strTime = c.getString("Time");
Log.d(tag, "strTime :: " + strTime);

if(!strUserID.equals(""))
{
tUserID.setText(strUserID);
tAppointmentID.setText(strAppointmentID);
tType.setText(strType);
tDate.setText(strDate);
tTime.setText(strTime);
}
else
{
tUserID.setText("====");
tAppointmentID.setText("====");
tType.setText("====");
tDate.setText("====");
tTime.setText("====");
btnSave.setEnabled(false);
btnCancel.requestFocus();
}

} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


public boolean SaveData()
{
// txtMemberID,txtPassword,txtName,txtEmail,txtTel

final EditText txtType = (EditText)findViewById(R.id.txtType);
final EditText txtDate = (EditText)findViewById(R.id.txtDate);
final EditText txtTime = (EditText)findViewById(R.id.txtTime);

//Dialog
final AlertDialog.Builder ad = new AlertDialog.Builder(this);

ad.setTitle("Error! ");
ad.setIcon(android.R.drawable.btn_star_big_on);
ad.setPositiveButton("Close", null);

String url = "http://10.0.2.2/appointments/updateData.php";

List<NameValuePair> params = new ArrayList<NameValuePair>();

params.add(new BasicNameValuePair("sType", txtType.getText().toString()));
params.add(new BasicNameValuePair("sDate", txtDate.getText().toString()));
params.add(new BasicNameValuePair("sTime", txtTime.getText().toString()));

String resultServer = getHttpPost(url,params);
Log.d(tag, "resultServer - updateData:: " + resultServer);

/*** Default Value ***/
String strStatusID = "0";
String strMessage = "Unknow Status!";

JSONObject c;
try {
c = new JSONObject(resultServer);
strStatusID = c.getString("StatusID");
strMessage = c.getString("Message");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

// Prepare Save Data
if(strStatusID.equals("0"))
{
ad.setMessage(strMessage);
ad.show();
return false;
}
else
{
Toast.makeText(UpdateActivity.this, "Update Data Successfully", Toast.LENGTH_SHORT).show();
}

return true;
}

public String getHttpPost(String url,List<NameValuePair> params) {
StringBuilder str = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);

try {
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse response = client.execute(httpPost);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) { // Status OK
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
str.append(line);
}
} else {
Log.e("Log", "Failed to download result..");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return str.toString();
}
}

Answer

i am not sure but i think you should need to use below lines in SaveData():

    final TextView tUserID = (TextView)findViewById(R.id.txtUserID);
    final TextView tAppointmentID = (TextView)findViewById(R.id.txtAppointmentID);

so your SavaData() should look like this:

public boolean SaveData()
        {
        final TextView txtUserID = (TextView)findViewById(R.id.txtUserID);
        final TextView txtAppointmentID = (TextView)findViewById(R.id.txtAppointmentID);
        final EditText txtType = (EditText)findViewById(R.id.txtType);
        final EditText txtDate = (EditText)findViewById(R.id.txtDate);
        final EditText txtTime = (EditText)findViewById(R.id.txtTime);

        //Dialog
        final AlertDialog.Builder ad = new AlertDialog.Builder(this);

        ad.setTitle("Error! ");
        ad.setIcon(android.R.drawable.btn_star_big_on);
        ad.setPositiveButton("Close", null);

        String url = "http://10.0.2.2/appointments/updateData.php";

        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("sUserID", txtUserID.getText().toString()));
        params.add(new BasicNameValuePair("sAppointmentID", txtAppointmentID.getText().toString()));
        params.add(new BasicNameValuePair("sType", txtType.getText().toString()));
        params.add(new BasicNameValuePair("sDate", txtDate.getText().toString()));
        params.add(new BasicNameValuePair("sTime", txtTime.getText().toString()));

        String resultServer  = getHttpPost(url,params);
        Log.d(tag, "resultServer - updateData:: " + resultServer);

        /*** Default Value ***/
        String strStatusID = "0";
        String strMessage = "Unknow Status!";

        JSONObject c;
        try {
        c = new JSONObject(resultServer);
        strStatusID = c.getString("StatusID");
        strMessage = c.getString("Message");
        } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }

        // Prepare Save Data
        if(strStatusID.equals("0"))
        {
        ad.setMessage(strMessage);
        ad.show();
        return false;
        }
        else
        {
        Toast.makeText(UpdateActivity.this, "Update Data Successfully", Toast.LENGTH_SHORT).show();
        }        

        return true;
        }

As we know you are using UserID and AppointmentID to fetch all appointments, so whenever you are doing changes it requires that particular UserID and AppointmentID to point that row, which you have clicked...may be the reason

please let me know this :)

Comments