2012-11-28 3 views
-1

나는 안드로이드에서 PHP로 데이터를 전송하는 데 도움이 필요합니다. 나는이 Java 코드를 안드로이드 용으로 가지고있다.안드로이드에서 PHP로 데이터 보내기

public void sendToDb() 
{ 
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
    nameValuePairs.add(new BasicNameValuePair("pLat",Double.toString(lat))); 
    nameValuePairs.add(new BasicNameValuePair("pLng",Double.toString(lng))); 

    try{ 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new  
       HttpPost("http://123456.com/welcome.php"); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     Log.i("postData", response.getStatusLine().toString()); 
    } 

    catch(Exception e) 
    { 
     Log.e("log_tag", "Error in http connection "+e.toString()); 
    }   
} 

저는이 코드를 가지고 있습니다. 내 휴대 전화에서 데이터를 보낼 때

<?php 
$pLat = $_POST['pLat']; 
$pLng = $_POST['pLng']; 

$result = mysql_query("update Users set lat='$pLat',lon='$pLng' where username='ozi');  
if (mysql_affected_rows()==0) 
    { 
    $query = "INSERT INTO Users "; 
    $query .= "(lat,lon) VALUES ('$pLat','$pLng')"; 
    } 
} 
?> 

이 문제가되지 않습니다하지만 난 널하지만 비어 있지 MySQL의 위도와 많은 행을보고 한 후. 코드에 문제가 있습니까?

+0

PHP 스크립트에서'print_r ($ _ POST);'를 사용하여 실제로 얻은 것을 확인하십시오. –

+0

새로 고침이란 무엇입니까? 브라우저에서 새로 고침하면 항상 빈 페이지가 표시됩니다. – Vinnie

+0

@Vinnie 이걸 어떻게 볼 수 있을까요? 나는 그것이 아약스와 함께 할 수 있다고 생각하지만이 새로 고침 자동 스크립트를 모르겠다 – Ozan

답변

0

귀하의 의견을 읽은 후, 당신이하려는 것은 (나는 생각합니다) 지속되는 데이터입니다. php 파일은 당신이 가지고있는 코드를 실행 만합니다. POST 변수는 요청에 전달하면 살아납니다. 요청은 POST 변수와 함께 Android 앱에서 가져오고 Android 앱에 대한 응답은 올바른 결과를 갖습니다.

브라우저에서 오는 요청은 "GET"이며 PLAT 또는 PLNG 변수를 전송하지 않습니다, 그래서 변수는 출력이 없습니다.

이것은 사용자가 알아야하는 HTTP의 매우 기본적인 개념입니다.

당신이하려는 것은 데이터를 어딘가에 저장하는 것입니다. PHP는 MySQL과 같은 데이터베이스에 저장하거나 단순히 POST 변수를 로컬 파일에 출력하여이를 수행 할 수 있습니다. 빠른 Google 검색은 파일을 저장하고 데이터베이스를 여는 방법을 보여줍니다. 지옥, 너는 너 자신에게 전자 우편에서 그 (것)들을 다만 보낼조차 수있다.

PHP 스크립트는 스크립트의 수명 동안 만 변수를 저장 한 다음 메모리에서 영구히 해제합니다. PHP의 힘을 사용하여 다른 곳의 변수를 저장하는 것은 전적으로 귀하의 몫입니다.

+0

고맙습니다. 지금 SQL에 추가하려고합니다. – Ozan

0

나는 이미 여기 광기를 볼 수 있습니다. 왜 전화가 안드로이드 장치에서 왔을 때 where username= { $_SESSION['username']}을 지정합니까? 어떤 세션이 있습니까? 또한 실패 할 경우 사용자 이름없이 삽입합니다. 그런 다음 쿼리를 실행하지 마십시오.

if (mysql_affected_rows()==0) 
    { 
    $query = "INSERT INTO Users "; 
    $query .= "(username, lat,lon) VALUES ('ozi', '$pLat','$pLng')"; 
    mysql_query($query) or die(mysql_error()); // <---- this would need to be run 
    } 
} 

나는이 두 가지 매우 중요한 관찰을 먼저 수정 한 다음 질문을 좀 더 타겟이 분명한 문제로 업데이트하는 것이 좋습니다. 그런 다음이 대답을 더욱 유용하게 업데이트 할 수 있습니다.

+0

이 업데이트되었습니다. 나는 그것을 편집했다. – Ozan

+0

및 업데이트했습니다. PDO를 살펴보십시오. mysql_은 많이 사용되지 않습니다. –

+0

답변 해 주셔서 감사합니다. 마지막 게시물 (예전 질문에 대한 링크)에 대해 생각해 보면 창의적 이었습니까? :)) – Ozan