2013-04-15 2 views
0

현재 ArrayList 데이터를 PHP 서버로 보내려고하지만이를 만들 수 없습니다. ArrayList는 foodname, foodprice, quantity, remark 등의 데이터를 포함하며 객체 순서 내에 저장됩니다. 그것은이ArrayList 데이터를 Android에서 PHP 서버로 전송

Order order = new Order(); 

    order.setFood_name(fooddetail.getString(TAG_FOODNAME)); 
    order.setFood_price(fooddetail.getString(TAG_FOODPRICE)); 
    order.setNumber(Integer.toString(number)); 
    order.setRemark(remark.getText().toString().trim()); 

    Global.orderList.add(order); 

같은 것입니다 지금은 PHP 서버로 전달하려면이 내가

try{ 
         httpclient=new DefaultHttpClient(); 
         httppost= new HttpPost("http://10.0.2.2/android_user/print.php"); 
         nameValuePairs = new ArrayList<NameValuePair>(); 
         nameValuePairs.add(new BasicNameValuePair("count", Integer.toString(count))); 
         for(int i=0;i<Global.orderList.size();i++) 
          { 
          nameValuePairs.add(new BasicNameValuePair("username", Global.UserID)); 
          nameValuePairs.add(new BasicNameValuePair("food_name", Global.orderList.get(i).getFood_name())); 
          nameValuePairs.add(new BasicNameValuePair("food_price", Global.orderList.get(i).getFood_price())); 
          nameValuePairs.add(new BasicNameValuePair("quantity", Global.orderList.get(i).getQuantity())); 
          nameValuePairs.add(new BasicNameValuePair("remark", Global.orderList.get(i).getRemark())); 
          } 

         httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
         ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
         final String res = httpclient.execute(httppost, responseHandler); 

         if(res.equalsIgnoreCase("Order successfully sent")) 
         { 
          runOnUiThread(new Runnable() 
          { 
           public void run() 
           { 
            Toast.makeText(OrderListActivity.this,"Order Success", Toast.LENGTH_SHORT).show(); 
           } 
          }); 

          startActivity(new Intent(OrderListActivity.this, LoginActivity.class)); 
         } 
         else if(res.equalsIgnoreCase("Oops! Order failed to submit")) 
         { 
          alertmessage = "Oops! Order failed to submit!"; 
          showAlert(); 
         } 
         else 
         { 
          alertmessage = res.toString(); 
          showAlert(); 
         } 
        } 
        catch(Exception e) 
        { 
         e.printStackTrace(); 
        } 

을 시도 코드이며 이것은 PHP 측 코드

for($i=0; $i<count($_POST['food_name']);$i++) 
    { 
    $food_name = $_POST['food_name'][$i]; 
    $food_price = $_POST['food_price'][$i]; 
    $quantity = $_POST['quantity'][$i]; 
    $remark = $_POST['remark'][$i]; 
    $username = $_POST['username'][$i]; 

    $result = mysql_query("INSERT INTO orderlist(food_name, food_price, quantity, remark, username) VALUES('$food_name', '$food_price', '$quantity','$remark','$username')"); 
    } 

에게 있습니다 내 질문은 데이터의 여러 행을 보내고 데이터베이스에 저장하는 방법입니다. 현재 내가

+0

이상적으로 json 또는 xml 형식으로 보내야합니다. – Shrikant

+0

매우 간단하게 변형 된 –

+0

은 json에서 매우 복잡합니다. 내가 그렇게하는 방법을 모른다 .. –

답변

0

이 시도 .. 하나의 행 또는 데이터의 마지막 행을 저장할 수 있어요 :

$food_name = $_POST['food_name']; 
$food_price = $_POST['food_price']; 
$quantity = $_POST['quantity']; 
$remark = $_POST['remark']; 
$username = $_POST['username']; 

for($i=0; $i<count($_POST['food_name']);$i++) 
{ 
    $result = mysql_query("INSERT INTO orderlist(food_name, food_price, quantity, remark, username) VALUES('$food_name[$i]', '$food_price[$i]', '$quantity[$i]','$remark[$i]','$username[$i]')"); 
} 
+0

이전에 시도했지만 데이터의 첫 번째 행만 가져오고 첫 번째 문자는 데이터베이스로 전송됩니다. –

0

이 문제 : UrlEncodedFormEntity (NameValuePair의) 후에 당신의 객체가 같은 이름을 명시, 그것은 마지막 데이터를 설정 :

nameValuePairs.add(new BasicNameValuePair("username", Global.UserID)); 
nameValuePairs.add(new BasicNameValuePair("food_name", Global.orderList.get(i).getFood_name())); 
nameValuePairs.add(new BasicNameValuePair("food_price", Global.orderList.get(i).getFood_price())); 
nameValuePairs.add(new BasicNameValuePair("quantity", Global.orderList.get(i).getQuantity())); 
nameValuePairs.add(new BasicNameValuePair("remark", Global.orderList.get(i).getRemark())); 

솔루션 당신이 이름을 페어링 접두사를 추가해야 할이 문제 (예 : "이름"+ loopIndexNumber) 또는 전송 데이터가 각각에 대해 개별적으로 데이터를 전송합니다.

관련 문제