2015-06-02 2 views
-1

Я новичок в программировании на Android, и я застрял в середине SQL-запроса с условием Where. Я хочу сохранить свои данные из базы данных в arraylist. Но мой сценарий всегда терпит неудачу с сообщением об ошибке. Кто-нибудь знает? Благодаря, преждеБаза данных Android с MySQL Где пункт

SearchActivity.java

public class SearchActivity extends Activity { 
    private RadioGroup radiosexGroup; 
    private RadioButton radiosexButton; 
    public SeekBar seekBar; 
    public ArrayList<detailKosan> listKosan = new ArrayList<>(); 

    int progress; 

    private ProgressDialog pDialog; 

    // URL to get contacts JSON 
    private static String url = "http://192.168.1.133/php_kukelkos/search_kosan.php"; 

    // JSON Node names 
    private static final String TAG_KOSAN = "arrayKosan"; 
    private static final String TAG_ID = "id"; 
    private static final String TAG_NAMAKOS = "namaKosan"; 
    private static final String TAG_ALAMAT = "alamat"; 
    private static final String TAG_SEX = "gender"; 
    private static final String TAG_TLP = "tlp"; 
    private static final String TAG_HARGA = "harga"; 
    private static final String TAG_KAMAR = "jmlKamar"; 
    private static final String TAG_FASILITAS = "fasilitas"; 
    private static final String TAG_KET = "keterangan"; 
    private static final String TAG_LAT = "lat"; 
    private static final String TAG_LNG = "lng"; 

    // contacts JSONArray 
    JSONArray arrayKosan = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search); 
     textView.setText("Rp 0 - Rp 0"); 
     seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 

      @Override 
      public void onProgressChanged(SeekBar seekBar, int progresValue, boolean fromUser) { 
       progress = progresValue * 500000; 
       textView.setText("Rp 0 - Rp " + progress); 
      } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) { 
       textView.setText("Rp 0 - Rp " + progress); 
      } 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 
      } 
     }); 

     //Fungsi Button Search 
     search.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       searchKosan(); 
       Intent menuSearch = new Intent(SearchActivity.this, ListKosanActivity.class); 
       startActivity(menuSearch); 
       finish(); 
      } 
     }); 

    public void searchKosan(){ 
     int selected = radiosexGroup.getCheckedRadioButtonId(); 
     radiosexButton = (RadioButton) findViewById(selected); 
     String buttonradio = radiosexButton.getText().toString(); 
     String msg = ""; 
     String keyval[][]= {{"harga", String.valueOf(progress)},{"gender", buttonradio}}; 
     AsyncTask<String, Void, String> asycn = new myAsyncData(SearchActivity.this, keyval, "Loading..."); 
     asycn.execute(url); 
     String data = ""; 
     boolean state = false; 

     try { 
      JSONObject jobj = null; 
      try { 
       data = asycn.get().toString(); 
      } catch (ExecutionException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 
      try { 
       jobj = new JSONObject(data); 
       msg = jobj.getString("message").toString(); 
       state = jobj.getBoolean("state"); 
       // Getting JSON Array node 
       arrayKosan = jobj.getJSONArray(TAG_KOSAN); 

       /** 
       * Updating parsed JSON data into Arraylist_detail 
       **/ 
       for (int i = 0; i < arrayKosan.length(); i++) { 
        try { 
         JSONObject c = arrayKosan.getJSONObject(i); 
         int id = Integer.parseInt(TAG_ID); 
         String namaKosan = c.getString(TAG_NAMAKOS); 
         String alamat = c.getString(TAG_ALAMAT); 
         String sex = c.getString(TAG_SEX); 
         String tlp = c.getString(TAG_TLP); 
         int harga = c.getInt(TAG_HARGA); 
         String kamar = c.getString(TAG_KAMAR); 
         String fasilitas = c.getString(TAG_FASILITAS); 
         String ket = c.getString(TAG_KET); 
         String lat = c.getString(TAG_LAT); 
         Double latt = Double.parseDouble(lat); 
         String lng = c.getString(TAG_LNG); 
         Double lngg = Double.parseDouble(lng); 
         LatLng PosisiMarker = new LatLng(latt, lngg); 

         listKosan.add(new detailKosan(id, namaKosan, alamat, sex, tlp, harga, kamar, fasilitas, ket, latt, lngg)); 

        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

       } 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

     catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     String title = (!state) ? "Error" : "Success"; 

     if(title.equals("Success")) { 
      Toast.makeText(getApplicationContext(), msg , Toast.LENGTH_LONG).show(); 
      finish(); 
      Intent i = new Intent(SearchActivity.this, ListKosanActivity.class); 
      startActivity(i); 
     } 
     else { 
      AlertDialog.Builder b = new AlertDialog.Builder(SearchActivity.this); 
      b.setTitle(title); 
      b.setMessage(msg); 
      b.setNegativeButton("Dismiss", null); 
      AlertDialog a = b.create(); 
      a.show(); 
     } 
    } 
} 

И это мой .php файл

<?php 

if ($_POST) { 
    $response = array(); 

    // include db connect class 
    require_once __DIR__ . '/db_connect.php'; 
    $db = new DB_CONNECT(); 

    $harga = $_POST["harga"]; 
    $gender  = $_POST["gender"]; 
    $fasilitas = $_POST["fasilitas"]; 

    if(!empty($harga)&&!empty($gender)) { 
     $ins= mysql_query("SELECT * from tbkosan where harga <='".$harga."' and gender = '".$gender"'"); 

     if (mysql_num_rows($ins> 0) { 
     $response["state"] = true;  
     $response["message"] = "Success"; 
     $response["arrayKosan"] = array(); 

     while ($row = mysql_fetch_array($ins)) { 
      // temp user array 
      $dataa= array(); 
      $dataa["id"] = $row["id"]; 
      $dataa["namaKosan"] = $row["namaKosan"]; 
      $dataa["alamat"] = $row["alamat"]; 
      $dataa["gender"] = $row["gender"]; 
      $dataa["tlp"] = $row["tlp"]; 
      $dataa["harga"] = $row["harga"]; 
      $dataa["jmlKamar"] = $row["jmlKamar"]; 
      $dataa["fasilitas"] = $row["fasilitas"]; 
      $dataa["keterangan"] = $row["keterangan"]; 
      $dataa["lat"] = $row["lat"]; 
      $dataa["lng"] = $row["lng"]; 

     // push single product into final response array 
     array_push($result["arrayKosan"], $dataa); 
     } 
     // success 
     $response["success"] = 1; 

     // echoing JSON response 
     echo json_encode($response); 
     } 
     else { 
      $response["success"] = 0; 
      $response["message"] = "Data tidak ada"; 
     } 
    } 
    else { 
    $response["success"] = 0; 
    $response["message"] = "Harap isi data search terlebih dulu!"; 
    echo json_encode($result); 
    } 
} 


?> 

и это мой ServiceHandler.java

public class ServiceHandler { 

    static String response = null; 
    public final static int GET = 1; 
    public final static int POST = 2; 

    public ServiceHandler() { 

    } 

    /** 
    * Making service call 
    * @url - url to make request 
    * @method - http request method 
    * */ 
    public String makeServiceCall(String url, int method) { 
     return this.makeServiceCall(url, method, null); 
    } 

    /** 
    * Making service call 
    * @url - url to make request 
    * @method - http request method 
    * @params - http request params 
    * */ 
    public String makeServiceCall(String url, int method, 
            List<NameValuePair> params) { 
     try { 
      // http client 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 
      HttpEntity httpEntity = null; 
      HttpResponse httpResponse = null; 

      // Checking http request method type 
      if (method == POST) { 
       HttpPost httpPost = new HttpPost(url); 
       // adding post params 
       if (params != null) { 
        httpPost.setEntity(new UrlEncodedFormEntity(params)); 
       } 

       httpResponse = httpClient.execute(httpPost); 

      } else if (method == GET) { 
       // appending params to url 
       if (params != null) { 
        String paramString = URLEncodedUtils 
          .format(params, "utf-8"); 
        url += "?" + paramString; 
       } 
       HttpGet httpGet = new HttpGet(url); 

       httpResponse = httpClient.execute(httpGet); 

      } 
      httpEntity = httpResponse.getEntity(); 
      response = EntityUtils.toString(httpEntity); 

     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return response; 

    } 
} 

и результат: предупреждающий ящик без сообщения и кнопка dismiss (извините, я не могу опубликовать pic hehe)

+0

Ваш PHP/запрос имеет [SQL-уязвимости] (http://bobby-tables.com/) в нем. – halfer

+0

Здесь вам потребуется выполнить некоторую отладку. Вызывается PHP API? Если да, изучили ли вы его исходный вывод на стороне Java? – halfer

+0

@halfer Да, я знаю его слабые повторы SQL-инъекции, но я не фокусируюсь на этом. Я не изучал его сырой выход в java, и я не знаю, как это сделать в студии Android. Мне нужно сделать это на моем устройстве –

ответ

0

mysql_query ("SELECT * from tbkosan, где harga < = '$ harga' и gender = '$ gender'");

0

У меня была такая же проблема, так как это одна из твоих я решил использовать залпа библиотеку на андроид части, где она помогла мне пройти входной переменной в PHP, где положение относятся к этой должности и проверить ответ:

How to parse multiple rows with jsonOject

или следовать функции followithing учебник часы под названием функция StoreUserInfo и относятся ко второй части к деятельности под названием RegisterActivity.java это может помочь вам извлечь, используя, где пункт:

https://www.androidtutorialpoint.com/androidwithphp/android-login-and-registration-with-php-mysql/

Смежные вопросы