สวัสดีครับหายไปนาน บทความนี้ผมมาอธิบายต่อจากบทความในกลุ่มการจัดการฐานข้อมูลบน Mysql (หลังจากบทความที่แล้ว Insert) ซึ้งผมแบ่งเนื้อหามาอธิบายทีละเล็กน้อยเนื้อหาจะได้ไม่เยอะจนเกินไป ในส่วนนี้คือการแก้ไขข้อมูล(Update) ในฐานข้อมูล Mysql ดูบทความที่เกี่ยวข้องก่อนหน้าซักหน่อยครับ
– เชื่อมต่อฐานข้อมูล Mysql บนเซิฟเวอร์
– (Insert) การเพิ่มข้อมูลบน Mysql
!! ควรย้อนไปอ่านบทความ “เชื่อมต่อฐานข้อมูล Mysql บนเซิฟเวอร์” ก่อนนะครับ
โค้ดตัวอย่าง
สามารถดาวน์โหลดโปรเจ็คตัวอย่างได้ที่ -> MysqlExample(Update)
!! ใช้ฐานข้อมูลชุดเดิมจากบทความ เชื่อมต่อฐานข้อมูล Mysql บนเซิฟเวอร์
อธิบายฐานข้อมูล
ก่อนจะเข้าเรื่องเตือนความจำกันซักหน่อยนะ อธิบายฐานข้อมูลของตัวอย่างที่แล้วๆมานะครับ ในฐานข้อมูลมี 1 ตารางชื่อว่า member โดยมีโครงสร้างของตารางตามที่แสดงใน รูปที่ 1 และ มีข้อมูลตัวอย่างในตารางตาม รูปที่ 2
รูปที่ 1 แสดงรายละเอียดตาราง member
รูปที่ 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"); //
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
ครับตัวอย่างการ Update ข้อมูลบนฐานข้อมูล Mysql ก็จบลงแต่เพียงเท่านี้บทความต่อไปจะเป็นการ Delete หรือลบข้อมูลก็ไม่ยากไปกว่ากันครับ