2016-04-30 12 views
0

誰か(ユーザー)のクリックがメインアクティビティのボタンである場合、2つの値がvolley POSTリクエストの助けを借りてPHPファイルに送信され、 minvalueとmaxvalueと言って、それに応じてmysqlデータベースからデータを選択します。MySQLからデータを選択してアンドロイド・ボレーのリクエストを使用してリサイクル・ビューに表示

ここでPOSTリクエストのための私のコードです:私は何もデータが選択されていないと表示されているコードの上に使用して私のアプリを実行しようとすると

<?php 

$con = mysqli_connect("127.0.0.1","superinfoadmin","","superhero"); 
if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

if($_SERVER['REQUEST_METHOD']=='POST'){ 

$minvalue  = $_POST['minvalue']; 
$maxvalue  = $_POST['maxvalue']; 

$result = mysqli_query($con, "SELECT * FROM superinfo, publisher WHERE superinfo.s_publisherid=publisher.p_id AND (s_power BETWEEN $minvalue AND $maxvalue)"); 

//$result = mysqli_query($con, "INSERT INTO testDB (min, max) VALUES ('$minvalue', '$maxvalue')"); 

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

mysqli_close($con); 

} 
?> 

public void FilterPower(View view) { 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.DATA_URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 

        /*Some Method*/ 
        /*Display data in recyclerview*/ 

        //Initializing Views 
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 
        recyclerView.setHasFixedSize(true); 
        layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); 
        recyclerView.setLayoutManager(layoutManager); 

        //Initializing our superheroes list 
        listSuperHeroes = new ArrayList<>(); 

        //Calling method to get data 
        getData(); 

        /*End Display data in recyclerview*/ 
        /*End Some Method*/ 

       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show(); 
       } 
      }) { 

     @Override 
     protected Map<String,String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 

      params.put("minvalue", "1000"); 
      params.put("maxvalue", "2000"); 
      return params; 
     } 

    }; 

    RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this); 
    requestQueue.add(stringRequest); 

} 

}

私のPHPファイルのコードリサイクルビューで。

しかし、同じ変数を使用してデータベースに値を挿入しようとすると、値が挿入されます。

"IF"ループに入るかどうかをチェックするselect文とinsert文の両方を保持しようとしましたが、DBに値を入力して挿入しますがselect文は実行しません。

しかし、私はelse文を与えてすべてのデータを選択し、それをrecyclerlerviewに表示すると正常に動作しますので、recyclerviewのデータを表示する際に問題はありません。以下は、else文と同じPHPコードです:

if($_SERVER['REQUEST_METHOD']=='POST'){ 

$minvalue  = $_POST['minvalue']; 
$maxvalue  = $_POST['maxvalue']; 

$result = mysqli_query($con, "SELECT * FROM superinfo, publisher WHERE superinfo.s_publisherid=publisher.p_id AND (s_power BETWEEN $minvalue AND $maxvalue)"); 

//$result = mysqli_query($con, "INSERT INTO testDB (min, max) VALUES ('$minvalue', '$maxvalue')"); 

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

mysqli_close($con); 

} 
else{ 

$result = mysqli_query($con, "SELECT * FROM superinfo, publisher WHERE superinfo.s_publisherid=publisher.p_id"); 

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

mysqli_close($con); 
} 

私は私が間違ってやっているか、私はやっていないよか分からない助けてください。

+0

ご連絡ください。テーブル間に 'JOIN'を作成し、それらのテーブルに共通する値を取得する必要があると思います。 – Hypnobrew

+0

この '$ sql ="のような変数を '$ result'の前に使用してください。SELECT * FROM superinfo、publisher WHERE superinfo.s_publisherid = publisher.p_id AND(s_power BETWEEN $ minvalue AND $ maxvalue)"; '
と 'echo $ sql; ' –

+0

出力されたクエリを確認してください –

答えて

0

私はあなたのコード内の任意の問題を参照していますが、任意の出力を取得する場合は、これをチェックしないSELECT`文はかなり怪しい見え `ことを私に

<?php 
$con = mysqli_connect("127.0.0.1","superinfoadmin","","superhero"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
if($_SERVER['REQUEST_METHOD']=='POST'){ 

$minvalue  = $_POST['minvalue']; 
$maxvalue  = $_POST['maxvalue']; 
$sql="SELECT * FROM superinfo, publisher WHERE 
superinfo.s_publisherid=publisher.p_id AND s_power BETWEEN '$minvalue' AND 
'$maxvalue'"; 
echo $sql; 
$result = mysqli_query($con,$sql); 
$output=array(); 
$output = mysqli_fetch_assoc($result); 
    print(json_encode($output)); 
    mysqli_close($con); 
    } 
    ?> 
+0

遅れて返信して申し訳ありませんが、上記の方法はうまくいきません。 – Krishna

関連する問題