Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > Mobile > Mobile Forum > Android ช่วยด้วยครับ ทำ Login จากที่ศึกษา Android Edit/Update Data to Web Server Database (Web Server) แต่ทำไมมันส่งค่าสลับกัน



 

Android ช่วยด้วยครับ ทำ Login จากที่ศึกษา Android Edit/Update Data to Web Server Database (Web Server) แต่ทำไมมันส่งค่าสลับกัน

 



Topic : 094704



โพสกระทู้ ( 39 )
บทความ ( 0 )



สถานะออฟไลน์




ผมศึกษาการทำ Android จากเว็บนี้ บอกได้เต็มปากว่าสุดยอดที่สุด เวิร์กที่สุดเท่าที่ดูจากหลายๆเว็บครับ เมื่อศึกษาแล้วก็เลยอยากต่อยอด แต่ก็เกิดปัญหาครับ ปัญหาคือ ถ้ากรอกข้อมูลถูกต้อง มันจะโชว์ไดอะลอก ว่า "คุณป้อนข้อมูลผิดพลาด" แล้วก็ไปหน้า Main
แต่ถ้ากรอกข้อมูลผิดๆ มันจะโชว์ "ยินดีต้อรับเข้าสู่ระบบ แล้วก็ไปหน้า Main เหมือนกันครับ ช่วยด้วยครับ
คือ มันจะโชว์ผลลัพท์สลับกัน และไม่ว่า ผิดหรือถูกก็ไปหน้า Main ก็เลยงง สงสัยว่าผิดตรงไหนอย่างไรครับ ขอบคุณครับ

ไฟล์ userLogin.php

Code (PHP)
<?
	$objConnect = mysql_connect("localhost","apivatcom_ad","android");
	$objDB = mysql_select_db("apivatcom_mydb");
	
	/*** ตัวอย่างข้อมูลที่รับมา......เมื่อมีการกรอกข้อมูลมาจากฝั่ง android
		$_POST["sUsername"] = "a";
		$_POST["sPassword"] = "b";
	*/

/*** รับค่าที่ส่งมาเก็บไว้ในตัวแปร  ***/
	$strUsername = $_POST["sUsername"];
	$strPassword = $_POST["sPassword"];

	/*** ตรวจสอบว่า  Username กับ Password ตรงกันหรือเปล่า ***/
	$strSQL = "SELECT * FROM member WHERE Username = '".$strUsername."' and Password = '".$strPassword."' ";
	$objQuery = mysql_query($strSQL);
	$objResult = mysql_fetch_array($objQuery);
	if($objResult)
	{
		$arr['StatusID'] = "0"; 
		$arr['Error'] = "คุณพิมพ์ชื่อ หรือ รหัสผ่านผิด!";	
		echo json_encode($arr);
		exit();
	}


	$objQuery = mysql_query($strSQL);
	if(!$objQuery)
	{
		$arr['StatusID'] = "0"; 
		$arr['Error'] = "ไม่สามารถเข้าสู่ระบบได้!";	
	}
	else
	{
		$arr['StatusID'] = "1"; 
		$arr['Error'] = "";	
	}

	/**
		$arr['StatusID'] // (0=Failed , 1=Complete)
		$arr['Error'] // Error Message
	*/
	
	mysql_close($objConnect);
	
	echo json_encode($arr);
?>


อันนี้ส่วน Android

Code (Android-Java)
  final Button btnSave = (Button) findViewById(R.id.btnSave);
        btnSave.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	if(Login())
            	{
            		Intent i = new Intent(LoginActivity.this,MainActivity.class);
            		startActivity(i);
            	}
            }	
        });
        
        // ปุ่มลงทะเบียน  ให้ไปที่ AddDataActivity
        final Button btnAddNew = (Button) findViewById(R.id.btnNext);
        btnAddNew.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	
            		Intent i = new Intent(LoginActivity.this,AddDataActivity.class);
            		startActivity(i);
            }	
        });
    }
    
    public boolean Login()
    {
        // Matching
        final EditText txtUsername = (EditText)findViewById(R.id.txtUsername); 
        final EditText txtPassword = (EditText)findViewById(R.id.txtPassword);
        
     // แสดง Dialog
    	final AlertDialog.Builder ad = new AlertDialog.Builder(this);

		ad.setTitle("ผิดพลาด! ");
		ad.setIcon(android.R.drawable.btn_star_big_on); 
		ad.setPositiveButton("Close", null);

		//ตรวจสอบ  Username
		if(txtUsername.getText().length() == 0)
		{
            ad.setMessage("กรุณาพิมพ์ ชื่อผู้ใช้ ");
            ad.show();
            txtUsername.requestFocus();
            return false;
		}
		// ตรวจสอบ Password
		if(txtPassword.getText().length() == 0 )
		{
            ad.setMessage("กรุณาพิมพ์ รหัสผ่าน ");
            ad.show();
            txtPassword.requestFocus();
            return false;
		}
    	
	///// ติดต่อไปที่ไฟล์ userLogin.php ใน server เพื่อทำการเข้าสู่ระบบ/////////////////////////
 		String url = "http://www.apivat.com/android/userLogin.php";
 		
		List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("sUsername", txtUsername.getText().toString()));
        params.add(new BasicNameValuePair("sPassword", txtPassword.getText().toString()));
        
    	 String resultServer  = getHttpPost(url,params);
        
        /*** Default Value ***/
    	String strStatusID = "0";
    	String strError = "คุณป้อนข้อมูลผิดพลาด";
		try {
			JSONObject	c = new JSONObject(resultServer);
        	strStatusID = c.getString("StatusID");
        	strError = c.getString("Error");
		} catch (JSONException e) {
			e.printStackTrace();
		}

		if(strStatusID.equals("0"))
		{
            ad.setMessage(strError);
            ad.show();
		}
		else
		{
			Toast.makeText(LoginActivity.this, "ยินดีต้อรับเข้าสู่ระบบ", Toast.LENGTH_SHORT).show();
			txtUsername.setText("");
			txtPassword.setText("");
		}
	return true;
}




Tag : Mobile







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-05-04 16:20:51 By : apivat View : 1506 Reply : 9
 

 

No. 1



โพสกระทู้ ( 39 )
บทความ ( 0 )



สถานะออฟไลน์


ขอโทษครับ ถามเสร็จก็ลองค้นหาอีกทีเจอแล้ว..ขอบคุณแอดมินเป็นอย่างสูงครับ
https://www.thaicreate.com/mobile/android-check-login-user-password.html






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-04 16:58:21 By : apivat
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

จัดไปครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-04 21:04:58 By : mr.win
 

 

No. 3



โพสกระทู้ ( 39 )
บทความ ( 0 )



สถานะออฟไลน์


จากกระทู้ https://www.thaicreate.com/mobile/android-check-login-user-password.html
ผมถามอีกหน่อยครับ ถ้าสมาชิก Login เข้ามาแล้ว ก็ไปที่หน้า DetailActivity ผมก็เลยทำปุ่ม Intent ไปหน้าทำข้อสอบ ซึ่งใช้ SQLite
เมื่อทำข้อสอบเสร็จ ได้คะแนนเรียบร้อย เอาผลการสอบไปแสดงใน TextView ได้ถูกต้อง

Bundle b = getIntent().getExtras();
int score= b.getInt("score");
txtScore = Integer.toString(score);


คำถามก็คือ ผมต้องการเอาคะแนนนี้ไปบันทึกลงในฐานข้อมูล mysql ด้วย ในตาราง member
โดยในตารางเดิมมีฟิลด์ Username Password Name Email Tel ผมเลยเพิ่มอีก 1 ฟิลด์คือ scroe

ผมไม่เข้าใจวิธีการครับ จะต้องเขียนโค๊ดยังไงครับว่าคนที่ Login และสอบตอนนี้ คะแนนจะไปบันทึกในช่อง Score ในเรคอร์ดเขา
ผมยังไม่ค่อยเข้าใจเรื่องการส่งค่า รับค่าเท่าไรครับ
เข้าใจว่าต้องมีไฟล์ php สำหรับรับค่าไป Update ในช่อง Score ใช่ไหมครับ ช่วยอนุเคราะห์ตัวอย่างให้ด้วยครับ
และทางฝั่ง Addroid ละครับจะเขียนยังไง

ขอบคุณท่านมากๆ ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-04 21:48:55 By : apivat
 


 

No. 4



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

เข้าไปอ่านบทความ HttpPost ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-04 23:24:59 By : mr.win
 


 

No. 5



โพสกระทู้ ( 39 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับ ได้เข้าไปอ่านบทความ HttpPost ผมลองทำ ตามตัวอย่างได้ผลสำเร็จเหมือนตัวอย่างเลยครับ

ทีนี้ผมทดสอบทำไฟล์ php แต่รันผ่านเว็บให้ไปบันทึกคะแนนในฟิลด์ Score นั้นก็ทำได้สำเร็จแล้วครับ

ทีนี้ทางฝั่ง Addroid (ผมเข้าใจแบบนี้ถูกไหมครับ) ว่าเมื่อ Login เข้าระบบแล้ว เวลา Intent ไปหน้า Activity ถัดไป
ก็ส่งค่าตัวแปร ID ของผู้ที่ลอกอินขณะนี้คือ MemberID ไป ตามโค๊ดนี้

newActivity.putExtra("MemberID", strMemberID);

สมมุติว่าผมส่งค่านี้ไปที่หน้า QuizActivity แล้วทีนี้ผมจะต้องทำการเขียนรับค่า MemberID คนนี้ด้วยใช่ไหมครับ ?
ตรงนี้แหละที่ผมไม่ทราบว่าเขียนอย่างไร หรือมีวิธีการอย่างไร
และจาก QuizActivity ผมส่งค่าไปประมวลผลคะแนนไปที่ ResultActivity เพื่อจะส่งค่าไปบันทึกใน Mysql อีกที
สิ่งที่ต้องการความช่วยเหลือก็คือ ผมจะเขียนการรับค่าและส่งค่า MemberID อย่างไรครับ
ขอความอนุเคราะห์โค๊ดตัวอย่างด้วยนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-05 09:00:50 By : apivat
 


 

No. 6



โพสกระทู้ ( 177 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


Code (Java)
// หน้าส่ง
Intent i = new Intent(LoginActivity.this, QuizActivity.class);
i.putExtra("MemberID", "std0011");
startActivity(i);



// หน้ารับ ใน onCreate
Bundle extras = getIntent().getExtras();
String memberID = extras.getString("MemberID");


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-05 09:26:24 By : คนงานตัดอ้อย
 


 

No. 7



โพสกระทู้ ( 39 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณครับ ยังไม่เลยสำเร็จครับ ช่วยตรวจสอบโค๊ดให้หน่อยครับ มันขึ้น unfortunately, http has stopped

การ Intent ในหน้า Login: ส่งไปที่ DetailActivity (ทำตามตัวอย่างในเว็บทุกอย่าง ในหน้านี้แสดงข้อมูลได้ถูกต้อง)
Code
Intent newActivity = new Intent(LoginActivity.this,DetailActivity.class);
newActivity.putExtra("MemberID", strMemberID);
startActivity(newActivity);


จากนั้น การ Intent ในหน้า DetailActivity: ส่งไปที่QuizlActivity (ทำตามตัวอย่างที่ท่านแนะนำ)
Code
// หน้ารับ ใน onCreate
Bundle extras = getIntent().getExtras();
String memberID = extras.getString("MemberID");

// หน้าส่ง
Intent i = new Intent(DetailActivity.this, QuizActivity.class);
i.putExtra("MemberID", "MemberID");
startActivity(i);


จากนั้น การ Intent ในหน้า QuizActivity: ส่งไปที่ ResultActivity ซึ่งแสดงคะแนนได้ถูกต้อง แต่เมื่อกดตกลง ก็จะ error เลยครับ
อันนี้คือหน้า Result ครับ
Code
//รับค่า MemberID
Bundle extras = getIntent().getExtras();
String strMemberID = extras.getString("MemberID");

AlertDialog.Builder popDialog = new AlertDialog.Builder(this);
popDialog.setIcon(android.R.drawable.btn_star_big_on);
popDialog.setTitle("สรุปผลการทำแบบทดสอบ");
popDialog .setMessage("คุณทำได้ " + txtScore+" คะแนน");

// Button OK
popDialog.setPositiveButton("ตกลง",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {

String url = "http://www.apivat.com/android/saveScore.php";

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("sMemberID", "MemberID"));
params.add(new BasicNameValuePair("sScore", txtScore));

String resultServer = getHttpPost(url,params);
/*** Default Value ***/
String strStatusID = "0";
String strMemberID = "0";
String strScore = "0";
String strError = "Unknow Status!";

try {
JSONObject c = new JSONObject(resultServer);
strStatusID = c.getString("StatusID");
strMemberID = c.getString("MemberID");
strScore = c.getString("Score");
strError = c.getString("Error");

} catch (JSONException e) {
e.printStackTrace();
}
Intent i = new Intent(getApplicationContext(),
ResultActivity.class);
startActivity(i);
}
})
// Button Cancel
.setNegativeButton("กลับเมนูหลัก",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//dialog.cancel();
startActivity(new Intent(ResultActivity.this,MainActivity.class));
}
});
popDialog.create();
popDialog.show();
}
/////////////////////////////////////
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();
}
/////////////////////////


และส่วนที่เป็นไฟล์ saveScore.php ครับ
Code
<?
$objConnect = mysql_connect("localhost","apivatcom_ad","android");
$objDB = mysql_select_db("apivatcom_mydb");

// $_POST["sMemberID"] = "1"; // for Sample

$strMemberID = $_POST["sMemberID"];
$strScore = $_POST["sScore"];

$strSQL = "UPDATE member SET Score='$strScore' where MemberID ='$strMemberID' ";

$objQuery = mysql_query($strSQL);
if(!$objQuery)
{
$arr['StatusID'] = "0";
$arr['Error'] = "No No Oh!";
}
else
{
$arr['StatusID'] = "1";
$arr['Error'] = "";
}

/**
$arr['StatusID'] // (0=Failed , 1=Complete)
$arr['Error'] // Error Message
*/

mysql_close($objConnect);

echo json_encode($arr);
?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-05 10:24:39 By : apivat
 


 

No. 8



โพสกระทู้ ( 39 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แล้วคร๊าบบบบบ มาขอบคุณอีกครั้งครับ ผมเพิ่ม final เข้าไป...ข้างหน้า

final String MemberID = extras.getString("MemberID");

สำเร็จแล้วครับ ขอบพระคุณ Admin เป็นอย่างสูงที่ช่วยเหลือจนสำเร็จครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-05 12:37:19 By : apivat
 


 

No. 9



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ที่คุณถาม ๆ มา มันมีในตัวอย่างหมดแล้วครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-05-05 12:47:47 By : mr.win
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Android ช่วยด้วยครับ ทำ Login จากที่ศึกษา Android Edit/Update Data to Web Server Database (Web Server) แต่ทำไมมันส่งค่าสลับกัน
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่