I have 2 activities. First activity has and form which user can insert some information. Then there is a button which lead to second activity where user insert some more information and buton Save which save in MySQL database.
I use intent.putExtra
but doesn't save anything in DB. Since I'm new to android I'm not sure that this is correct. I've used as reference this post How to get extra data from intent in android?
This is first activity
public class Reservation extends Activity {
static String Name;
static String Email;
static String Phone;
static String Comment;
static String DateTime;
static String numberOfPeople;
private EditText editText1, editText3, editText2, editText4, txtDate, editText5;
private Button btnMenues, btnCalendar, btnTimePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.reservation);
editText1 = (EditText) findViewById(R.id.personName);
editText3 = (EditText) findViewById(R.id.personPhone);
editText2 = (EditText) findViewById(R.id.personEmail);
editText4 = (EditText) findViewById(R.id.personComment);
txtDate = (EditText) findViewById(R.id.datePicker);
editText5 = (EditText) findViewById(R.id.editText5);
btnCalendar = (Button) findViewById(R.id.btnCalendar);
btnMenues = (Button) findViewById(R.id.continueWithReservation);
btnMenues.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Name = editText1.getText().toString();
//Phone = editText3.getText().toString();
//Email = editText2.getText().toString();
//Comment = editText4.getText().toString();
//DateTime = txtDate.getText().toString();
//DateTime = txtTime.getText().toString();
//numberOfPeople = numberOfPeoples.getText().toString();
//new SummaryAsyncTask().execute((Void) null);
Intent intent = new Intent(Reservation.this, ReservationSecond.class);
String Name = editText1.getText().toString();
String Email = editText2.getText().toString();
String Phone = editText3.getText().toString();
String Comment = editText4.getText().toString();
String DateTime = txtDate.getText().toString();
String numberOfPeople = editText5.getText().toString();
intent.putExtra(Name, Name.getBytes().toString());
intent.putExtra(Email, Email.getBytes().toString());
intent.putExtra(Phone, Phone.getBytes().toString());
intent.putExtra(Comment, Comment.getBytes().toString());
intent.putExtra(DateTime, DateTime.getBytes().toString());
intent.putExtra(numberOfPeople, numberOfPeople.getBytes().toString());
startActivity(intent);
}
});
}
}
and this is second activity which has to receive the data and save in BD
public class ReservationSecond extends Activity {
String getName;
String getEmail;
String getPhone;
String getComment;
String getDateTime;
String getnumberOfPeople;
private Button btnMenues;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.reservation_second);
btnMenues = (Button) findViewById(R.id.finish);
btnMenues.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bundle extras = getIntent().getExtras();
if (extras != null) {
getName = extras.getString("Name");
getEmail = extras.getString("Email");
getPhone = extras.getString("Phone");
getComment = extras.getString("Comment");
getDateTime = extras.getString("DateTime");
getnumberOfPeople = extras.getString("numberOfPeople");
}
new SummaryAsyncTask().execute((Void) null);
startActivity(getIntent());
}
});
}
class SummaryAsyncTask extends AsyncTask<Void, Void, Boolean> {
private void postData(String getNameToData, String getEmailData, String getPhoneData,
String getCommentData, String getDateTimeData, String getnumberOfPeopleData) {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://link/saveReservation.php");
try {
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
nameValuePairs.add(new BasicNameValuePair("Name", getNameToData));
nameValuePairs.add(new BasicNameValuePair("Email", getEmailData));
nameValuePairs.add(new BasicNameValuePair("Phone", getPhoneData));
nameValuePairs.add(new BasicNameValuePair("Comment", getCommentData));
nameValuePairs.add(new BasicNameValuePair("Date", getDateTimeData));
nameValuePairs.add(new BasicNameValuePair("numberOfPeople", getnumberOfPeopleData));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
}
catch(Exception e)
{
Log.e("log_tag", "Error: "+e.toString());
}
}
@Override
protected Boolean doInBackground(Void... params) {
postData(getName, getEmail, getPhone, getComment, getDateTime, getnumberOfPeople );
return null;
}
}
}
Update. In second activity like this?
if (extras != null) {
extras.getString("Name");
extras.getString("Email");
extras.getString("Phone");
extras.getString("Comment");
extras.getString("DateTime");
extras.getString("numberOfPeople");
}
instead of
if (extras != null) {
String Name = extras.getString("Name");
String Email = extras.getString("Email");
String Phone = extras.getString("Phone");
String Comment = extras.getString("Comment");
String DateTime = extras.getString("DateTime");
String numberOfPeople = extras.getString("numberOfPeople");
}
This is the getReservation.php
$icon = mysql_connect("localhost","user","password");
if(!$icon)
{
die('Could not connect : ' . mysql_erroe());
}
mysql_select_db("database", $icon)or die("database selection error");
echo json_encode($data);
$Name=$_POST['Name'];
$Phone=$_POST['Phone'];
$Email=$_POST['Email'];
$Comment=$_POST['Comment'];
$DateTime=$_POST['DateTime'];
$numberOfPeople=$_POST['numberOfPeople'];
mysql_query("INSERT INTO reservation (Name, Phone, Email, Comment, DateTime, numberOfPeople)
VALUES ('$Name', '$Phone', '$Email', '$Comment', NOW(), '$numberOfPeople')",$icon);
mysql_close($icon);