誰か(ユーザー)のクリックがメインアクティビティのボタンである場合、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);
}
私は私が間違ってやっているか、私はやっていないよか分からない助けてください。
ご連絡ください。テーブル間に 'JOIN'を作成し、それらのテーブルに共通する値を取得する必要があると思います。 – Hypnobrew
この '$ sql ="のような変数を '$ result'の前に使用してください。SELECT * FROM superinfo、publisher WHERE superinfo.s_publisherid = publisher.p_id AND(s_power BETWEEN $ minvalue AND $ maxvalue)"; '
と 'echo $ sql; ' –
出力されたクエリを確認してください –