Hier habe ich Zugriff auf Kontakte vom Telefon und Anzeige in benutzerdefinierten Listenansicht. Nun muss ich die ausgewählten checkbox Werte zu verschiedenen Zeilen mysql Datenbank einfügen.Hier kann ich einzelne Checkbox Wert in die Datenbank einfügen..wenn ich mehr als einen Wert ausgewählt haben, werden die Daten in der einzelnen Zeile gespeichert .. Welche Änderungen muss ich vornehmen, um die einzelnen Daten in jede Zeile einzufügen? Ich verwende eine PHP-Datei, um Daten in der Datenbank zu speichern.Wie man mehrere Checkbox-Werte in verschiedene Zeilen in die MySQL-Datenbank in Android und PHP einfügt
DisplayContact.java
public class DisplayContact extends Activity implements OnItemClickListener{
//ArrayList to store name and phone number
List<String> name1 = new ArrayList<String>();
List<String> phno1 = new ArrayList<String>();
MyAdapter ma ;
Button select;
private String vault;
public static final String kvault = "vault_no";
public static final String kname = "name";
public static final String kphone = "phone";
public static final String SHARED_PREF_NAME = "myloginapp";
public static final String CONTACTNAME_SHARED_PREF = "name";
public static final String PHONE_SHARED_PREF = "phone";
//We will use this to store the boolean in sharedpreference to track user is loggedin or not
public static final String LOGGEDIN_SHARED_PREF = "loggedin";
public static final String UPLOAD_URL = "http://oursite.com/contacts.php";
Cursor phones;
private static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayShowTitleEnabled(false);
setContentView(R.layout.display);
SharedPreferences sharedPreferences = getSharedPreferences(ProfileLogin.SHARED_PREF_NAME, MODE_PRIVATE);
vault = sharedPreferences.getString(ProfileLogin.EMAIL_SHARED_PREF,"Not Available");
getAllContacts(this.getContentResolver());
ListView lv= (ListView) findViewById(R.id.lv);
ma = new MyAdapter();
lv.setAdapter(ma);
lv.setOnItemClickListener(this);
lv.setItemsCanFocus(false);
lv.setTextFilterEnabled(true);
// adding
select = (Button) findViewById(R.id.button1);
select.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
StringBuilder checkedcontacts= new StringBuilder();
StringBuilder name2 = new StringBuilder();
StringBuilder phone2 = new StringBuilder();
for(int i = 0; i < name1.size(); i++)
{
if(ma.mCheckStates.get(i)==true)
{
checkedcontacts.append(name1.get(i).toString());
checkedcontacts.append(phno1.get(i).toString());
checkedcontacts.append("\n");
name2.append(name1.get(i).toString());
phone2.append(phno1.get(i).toString());
}
else
{
}
}
SharedPreferences sharedPreferences = DisplayContact.this.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE);
//Creating editor to store values to shared preferences
SharedPreferences.Editor editor = sharedPreferences.edit();
//Adding values to editor
editor.putBoolean(LOGGEDIN_SHARED_PREF, true);
editor.putString(CONTACTNAME_SHARED_PREF, name2.toString());
editor.putString(PHONE_SHARED_PREF, phone2.toString());
//Saving values to editor
editor.commit();
Toast.makeText(DisplayContact.this, name2.toString() + " , " + phone2.toString() + " Added to Database", Toast.LENGTH_LONG).show();
uploadImage();
}
});
}
public void uploadImage(){
SharedPreferences sharedPreferences = getSharedPreferences(DisplayContact.SHARED_PREF_NAME, MODE_PRIVATE);
final String name = sharedPreferences.getString(DisplayContact.CONTACTNAME_SHARED_PREF, "Not Available");
final String phone = sharedPreferences.getString(DisplayContact.PHONE_SHARED_PREF, "Not Available");
final String vault_no = vault;
class UploadImage extends AsyncTask<Void,Void,String> {
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(DisplayContact.this,"Please wait...","uploading",false,false);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
if(s.equalsIgnoreCase("Successfully Saved")){
//Intent intent = new Intent(CollegeDetails.this,Work.class);
Toast.makeText(DisplayContact.this, s, Toast.LENGTH_SHORT).show();
// startActivity(intent);
}else{
Toast.makeText(DisplayContact.this,s,Toast.LENGTH_SHORT).show();
}
}
@Override
protected String doInBackground(Void... params) {
RequestHandler rh = new RequestHandler();
//RegisterUserClass rh = new RegisterUserClass();
HashMap<String,String> param = new HashMap<String,String>();
param.put(kvault,vault_no);
param.put(kname,name);
param.put(kphone,phone);
String result = rh.sendPostRequest(UPLOAD_URL, param);
return result;
}
}
UploadImage u = new UploadImage();
u.execute();
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
ma.toggle(arg2);
}
public void getAllContacts(ContentResolver cr) {
int result = ContextCompat.checkSelfPermission(DisplayContact.this, Manifest.permission.READ_CONTACTS);
if (result == PackageManager.PERMISSION_GRANTED){
phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
contactsdisplay();
} else {
requestForLocationPermission();
}
}
private void requestForLocationPermission()
{
if (ActivityCompat.shouldShowRequestPermissionRationale(DisplayContact.this, Manifest.permission.READ_CONTACTS))
{
}
else {
ActivityCompat.requestPermissions(DisplayContact.this, new String[]{Manifest.permission.READ_CONTACTS}, MY_PERMISSIONS_REQUEST_READ_CONTACTS);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)
{
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
getAllContacts(DisplayContact.this.getContentResolver());
contactsdisplay();
}
break;
}
}
public void contactsdisplay() {
while (phones.moveToNext())
{
String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
System.out.println(".................."+name+ "" +phoneNumber);
name1.add(name);
phno1.add(phoneNumber);
}
phones.close();
}
class MyAdapter extends BaseAdapter implements CompoundButton.OnCheckedChangeListener
{ private SparseBooleanArray mCheckStates;
LayoutInflater mInflater;
TextView tv1,tv;
CheckBox cb;
MyAdapter()
{
mCheckStates = new SparseBooleanArray(name1.size());
mInflater = (LayoutInflater)DisplayContact.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return name1.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi=convertView;
if(convertView==null)
vi = mInflater.inflate(R.layout.row, null);
tv= (TextView) vi.findViewById(R.id.contact_name);
tv1= (TextView) vi.findViewById(R.id.phone_number);
cb = (CheckBox) vi.findViewById(R.id.checkBox_id);
tv.setText("Name :"+ name1.get(position));
tv1.setText("Phone No :"+ phno1.get(position));
cb.setTag(position);
cb.setChecked(mCheckStates.get(position, false));
cb.setOnCheckedChangeListener(this);
return vi;
}
public boolean isChecked(int position) {
return mCheckStates.get(position, false);
}
public void setChecked(int position, boolean isChecked) {
mCheckStates.put(position, isChecked);
}
public void toggle(int position) {
setChecked(position, !isChecked(position));
}
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
mCheckStates.put((Integer) buttonView.getTag(), isChecked);
}
}
}
kontakte.php
<?php
session_start();
define('HOST','hostname');
define('USER','username');
define('PASS','password');
define('DB','dbname');
$response = array();
$con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect');
if(!mysqli_connect_errno()){
$error_flag = false;
$contacts = json_decode($_POST['contacts'], true);
foreach($contacts as $contact){
//echo $contact['name'];
// create a new user profile
$sql = "INSERT INTO contacts (vault_no , name, phone, update_at,created_at)
VALUES ('".$contact['vault_no']."', '".$contact['name']."', '".$contact['phone']."', NOW(), NOW())";
if(mysqli_query($con,$sql)){
echo "Successfully Saved";
}else{
$response["error"] = true;
$response["error_msg"] = "INSERT operation failed";
echo json_encode($response);
}
}
}else{
$response["error"] = true;
$response["error_msg"] = "Database connection failed";
echo json_encode($response);
}
?>
Möchten Sie jeden Kontrollkästchenwert in eine separate Zeile einfügen ODER alle Kontrollkästchen (markiert) in einer Zeile speichern? – Gopalakrishnan
Ich möchte jedes Kontrollkästchen Wert in einer separaten Zeile gespeichert werden ... jetzt speichert es alle Wert in einer Zeile .. –