마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 mysql php 연동 문의드립니다.

0 추천
public class LogInActivity extends Activity implements OnClickListener{
  
 private TextView titleTextView;
 private TextView joinTextView; 
 private EditText edtId;
 private EditText edtPass; 
 
 private Button btnlog;
 private Button btnfindId;
 private Button btnfindPass;
 private Button btnJoin;
 
 private String mID = "";
 private String mPASS = "";
 private String id = "";
 private String pass = ""; 
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.login);
  
  Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/NanumBarunGothicBold.ttf"); 
  
  titleTextView = (TextView) findViewById(R.id.title_text);
  titleTextView.setTypeface(typeFace);
  
  edtId = (EditText)findViewById(R.id.edt_id);
  edtPass = (EditText)findViewById(R.id.edt_pass);
  
  Button btnlog = (Button)findViewById(R.id.btn_login);
  Button btnJoin= (Button)findViewById(R.id.btn_join);
  Button btnfindId = (Button)findViewById(R.id.btn_find_id);
  Button btnfindPass = (Button)findViewById(R.id.btn_find_password);
  findViewById(R.id.btn_join).setOnClickListener(this);
  findViewById(R.id.btn_login).setOnClickListener(this);
  findViewById(R.id.btn_find_id).setOnClickListener(this);
  findViewById(R.id.btn_find_password).setOnClickListener(this);     
 }
 
 public void onClick(View v) {
   switch (v.getId()) {
  case R.id.btn_login: {
   
   id = edtId.getText().toString(); // 사용자 입력된 아이디 값을 id 변수에 넣습니다.
   pass = edtPass.getText().toString();// 사용자 입력된 패스워드를 pass변수에 넣습니다.   
   
   Log.d("TAG", "22222"+mID);
   Log.d("TAG", "22222"+mPASS);
   Log.d("TAG", "22222"+id);
   Log.d("TAG", "22222"+pass);
   
   GetData task1 = new GetData();
   task1.execute(new String[]{"http://192.168.42.219/select.php"});
   
   if(id.equals(mID) && pass.equals(mPASS)){  // 사용자 입력 : id , DB데이터ID : mID 비교
    
      
   Intent intent = new Intent(LogInActivity.this, MainActivity.class); 
   }
   
   else
     Toast.makeText(this, "비밀번호를 다시 확인해주세요", Toast.LENGTH_SHORT).show();
   
         break;
  }       
         
     }
  
 }
 
 public class GetData extends AsyncTask<String, Void, Boolean>{  
  
        String text = "";        
  
   @Override
   protected void onPreExecute() {
    //dialog.setMessage("데이터를 읽어오는중..");
    //dialog.show();
   }  
  
   @Override
   protected Boolean doInBackground(String... urls) {    
   
    for(String url1 : urls){   
     try{    
            
      HttpClient httpclient = new DefaultHttpClient();
      HttpPost httppost = new HttpPost(url1);      
      
      HttpResponse response = httpclient.execute(httppost);
      
            Log.d("TAG", "111"+url1); 
//     
            String result = Html.fromHtml(EntityUtils.toString(response.getEntity()).trim()).toString();
            onConverter(result);
       }
       catch(Exception e){
        e.printStackTrace();
     
       }
    
      }
    return true;
   }
  
   private void onConverter(String result) {
    String key = "result";
    JSONObject jsonObj = null;
    
    try {
     jsonObj = new JSONObject(result);
     
     if (null != jsonObj) {
     
      JSONArray JsonArray = new JSONArray();
      
      if (jsonObj.has(key)) {
       JsonArray = jsonObj.getJSONArray(key);
      }
      
      
      if (null != JsonArray && JsonArray.length() > 0) {
       JSONObject ItemjsonObj = JsonArray.getJSONObject(0);
       
       mID = ItemjsonObj.getString("id");
       mPASS = ItemjsonObj.getString("password");
      }
      
     }
    } catch(Exception e) {
     Log.e("TAG", "LOGINERROR ::: " + e.toString());
    }
    
   }
 }       
   protected void onPostExecute(Boolean result){
    if(result == true){
     
     Log.d("TAG", "1111111"+result);
     Log.d("TAG", "1111111"+mID);
     Log.d("TAG", "1111111"+mPASS);
              
    }    
      }
 
}

------------------------------------------ select.php --------------------------------------

<?php
include_once('connection.php');
$query = "SELECT id, password FROM register";

$result = mysql_query($query) or die('Error in query : $query' . mysql_error());

while($row = mysql_fetch_assoc($result)){
      $output[] = $row;
}
print (json_encode($output));

?>

------------------------------------------ connection.php--------------------------------

<?php
$server_name = '127.0.0.1';
$user_name = 'root';
$password = '1111';

$con = mysql_connect($server_name, $user_name, $password) or die('Server Error: ' . mysql_error());

// 데이터베이스 셀렉트

$database_name = 'db1';
mysql_select_db($database_name) or die ('DB Error : Unable to select db');

mysql_query("SET NAMES 'utf8'");

?>

sta48 (290 포인트) 님이 2015년 5월 13일 질문
- 로그에는 딱히 에러 안잡히구요.

   2222                           <----- 여기에 DB에서 가져온 아이디값

   2222                           <------- 여기에 DB에서 가져온 패스워드값

   2222아이디입력값

   2222패스워드입력값

이렇게 4개 로그만 뜨고 그 뒤로 실행을 못하거든요...
select.php 웹상에서 실행시켜보니 db데이터 출력도 잘하는데... 무슨 이유인지 어디부터 체크해봐야 하나요..?


AsyncTask (비동기쓰레드) 실행자체를 못하는거 같은데..http 웹접속도 못하고..
로그 오류 표시도 안나네용..ㅠㅠ

1개의 답변

+1 추천
server 와 동일한 network 망인지 확인해보세요
aucd29 (218,390 포인트) 님이 2015년 5월 13일 답변
넵 보니깐 이상한 공유기로 접속되어있었네요..
네트워크 문제는 해결했는데
json 파싱을 못했다고 로그 에러가 나오는데 제가 올린 json파싱구문이 틀린 건가용.. php 아시면 같이 봐주실 수 있으신가요 ㅠㅠ?
05-13 20:53:06.650: D/TAG(17755): 111http://192.168.42.219/select.php
05-13 20:53:06.670: E/TAG(17755): LOGINERROR ::: org.json.JSONException: Value [{"id":"sta48","password":"1111"}] of type org.json.JSONArray cannot be converted to JSONObject
이렇게요..ㅠㅠ
제이슨 어레이를 제이슨 오버젝트로 받아서 그래요
[{}] <--- 에서 [] <--- 어레이입니다
JSONArray array = new JSONArray(jsonObject.getString("key"));
JsonObject object = array.get(1);
이렇게 받아서 쓰세요
php 에서 json 객체를 array 로 생성하지 말고 object 로 변경하세요 현재

  $output[] = $row;

이렇게 되어 있는데

$res = array('id' => $row['id'], 'pw' => $row['password']); 식으로 하세요
그리고 마지막으로 json_encode($res); 식인거죠

php 한 9년 동안 안해서 문법은 정확하지 않을 수도 있습니다.
...