Android: (Update) การแก้ไขข้อมูลบน Mysql

สวัสดีครับหายไปนาน บทความนี้ผมมาอธิบายต่อจากบทความในกลุ่มการจัดการฐานข้อมูลบน Mysql (หลังจากบทความที่แล้ว Insert) ซึ้งผมแบ่งเนื้อหามาอธิบายทีละเล็กน้อยเนื้อหาจะได้ไม่เยอะจนเกินไป ในส่วนนี้คือการแก้ไขข้อมูล(Update) ในฐานข้อมูล Mysql ดูบทความที่เกี่ยวข้องก่อนหน้าซักหน่อยครับ

–  เชื่อมต่อฐานข้อมูล Mysql บนเซิฟเวอร์

–  (Insert) การเพิ่มข้อมูลบน Mysql

!! ควรย้อนไปอ่านบทความ “เชื่อมต่อฐานข้อมูล Mysql บนเซิฟเวอร์” ก่อนนะครับ

 

โค้ดตัวอย่าง

สามารถดาวน์โหลดโปรเจ็คตัวอย่างได้ที่ -> MysqlExample(Update)

!! ใช้ฐานข้อมูลชุดเดิมจากบทความ เชื่อมต่อฐานข้อมูล Mysql บนเซิฟเวอร์

 

อธิบายฐานข้อมูล

ก่อนจะเข้าเรื่องเตือนความจำกันซักหน่อยนะ อธิบายฐานข้อมูลของตัวอย่างที่แล้วๆมานะครับ ในฐานข้อมูลมี 1 ตารางชื่อว่า member โดยมีโครงสร้างของตารางตามที่แสดงใน รูปที่ 1 และ มีข้อมูลตัวอย่างในตารางตาม รูปที่ 2

Screenshot from 2014-12-18 22:04:18รูปที่ 1 แสดงรายละเอียดตาราง member

Screenshot from 2014-12-18 22:12:53

รูปที่ 2 ตัวอย่างข้อมูลในตาราง member

 

อธิบายโค้ดตัวอย่าง

Update (แก้ไขข้อมูล)

update_data.php

ไฟล์นี้ทำการรับค่า id , username และ pass ผ่าน http post (แอนดอร์ยส่งมา) และเพิ่มแก้ไขข้อมูลในตาราง member ในแถวตามทีเรากำหนด id ไว้

!! ไฟล์นี้อยู่ในเซิฟเวอร์นะครับ หรือ localhost

!! ในไฟล์นี้ผู้อ่านต้องทำการเปลี่ยน รายละเอียดในการเชื่อมต่อฐานข้อมูลเป็นของตัวเองในส่วนที่ผมไฮไลท์สีแดงไว้

 <?php   
 header("content-type:text/javascript;charset=utf-8");    
 $con=mysql_connect('mysql_server','mysql_username','mysql_pass')or die(mysql_error());    
 mysql_select_db('db_name')or die(mysql_error());    
 mysql_query("SET NAMES UTF8");   
 $id = $_POST['id'];  
 $username = $_POST['username'];  
 $pass = $_POST['pass'];  
 $sql="UPDATE member SET username = '$username', pass = '$pass' WHERE id = '$id'";   
 $res=mysql_query($sql);    
 mysql_close();   
 ?>   

MainActivity.java

ใน class MainActivity  ผมได้เพิ่มฟังก์ชั่น onItemClick() ไว้เพื่อให้เวลากดเลือกItem ใน ListView จะทำการเรียก Intent ไปยัง Update_Activity โดยจะส่งพารามิเตอร์ไปด้วยชื่อว่า id (เมือไปถึง Update_Activity จะได้รู้ว่าผู้ใช้ทำการเลือกอะไรมา)

   @Override  
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {  
     Intent intent = new Intent(this,Update_Activity.class);  
     intent.putExtra("id",position+1+"");  
     startActivity(intent);  
   }  

Update_Activity.java

Class Update_Activity ขั้นตอนแรกนั้นจะทำการรับข้อมูลจากที่ Intent มาโดยจะเก็บ parameter ที่ชื่อ id ไว้

     Bundle extra = getIntent().getExtras();  
     id = extra.getString("id","1");  

หลังจากนั้นเมื่อเรากรอกข้อมูลในฟอร์มเรียบร้อยและกดปุ่ม Update ก็จะเรียกฟังก์ชั้น onClick() ทำงานโดยจะเรียกใช้ฟังก์ชั่น updateUser() ของ Class MysqlConnector ในการแก้ไขข้อมูลโดยมีพารามิเตอร์ 3 ตัวได้แก่ id,username และ pass

       case R.id.btn_Update:  
         MysqlConnector.updateUser(id,edt_username.getText().toString(),edt_pass.getText().toString());  
         this.finish();  
         break;  

MysqlConnector.java

ใน Class MysqlConnector ผมอธิบายแค่ฟังก์ชั่น updateUser() นะครับ โดยส่วนแรกจะทำการเตรียมพารามิเตอร์เพื่อส่งไปยังเซิฟเวอร์โดยมีพารามิเตอร์ id,username และ pass

       ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();  
       nameValuePairs.add(new BasicNameValuePair("id",id));  
       nameValuePairs.add(new BasicNameValuePair("username",username));  
       nameValuePairs.add(new BasicNameValuePair("pass",pass));  

หลังจากนั้นทำการส่ง Http post ไปยัง update_data.php

       HttpClient httpclient = new DefaultHttpClient();  
       HttpPost httppost = new HttpPost("your_url/update_data.php"); // https://10.0.2.2/  
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));  
       HttpResponse response = httpclient.execute(httppost);  
       HttpEntity entity = response.getEntity();  
       is = entity.getContent();  

ครับตัวอย่างการ Update ข้อมูลบนฐานข้อมูล Mysql ก็จบลงแต่เพียงเท่านี้บทความต่อไปจะเป็นการ Delete หรือลบข้อมูลก็ไม่ยากไปกว่ากันครับ

ผลลัพธ์ตัวอย่าง

Screenshot_2015-01-31-00-41-26Screenshot_2015-02-21-21-51-06Screenshot_2015-02-21-21-51-11

About octoboy


Android Developer, Study Master degree of Computer Engineering at Prince of Songkla university.