2017-09-01 11 views
0

answered_questions動作しませんランダム生成は、Androidアプリで

enter image description here

私は、これらのテーブルと、次のPHPスクリプトを持っているの

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


//makes it work 
$category = (string)filter_input(INPUT_GET, 'category'); 
$game_id = (string)filter_input(INPUT_GET, 'game_id'); 

require_once('dbConnect.php'); 

$query = "SELECT question FROM questions 
    WHERE category = '$category' 
    and question 
    NOT IN 
    (SELECT question 
    FROM answered_questions 
    WHERE game_id='$game_id')ORDER BY Rand() limit 1"; 

$r = (mysqli_query($con, $query)); 

$res = mysqli_fetch_array($r); 

$result = array(); 

array_push($result, array(
     "question" => $res['question'], 
    ) 
); 

echo json_encode(array("result" => $result)); 

mysqli_close($con); 

} 

Androidがアプリを実行するまではすべて動作します。 getQuestionボタンをクリックするかメソッドを呼び出すと、アプリはすでに回答している質問を生成します。アプリは

private void getQuestion() { 

    String url =""; 

    String cat = category.getText().toString(); 
    String id = game_id.getText().toString(); 

    if (cat.equals("Control Questions")){ 
     url = "http://192.168.0.20/Articulate/getControlQuestion.php?game_id="+id; 
    }else { 
     url = "http://192.168.0.20/Articulate/getQuestion.php?category="+cat+"&game_id="+id; 
    } 

    StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      showJSON(response); 
     } 
    }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
       } 
      }); 

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

private void showJSON(String response){ 
    String ques=""; 
    try { 
     JSONObject jsonObject = new JSONObject(response); 
     JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); 
     JSONObject collegeData = result.getJSONObject(0); 
     ques = collegeData.getString("question"); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    question.setText(ques); 
} 

答えて

0

は、なぜあなたは、単に2つのテーブルをマージし、ブール値(tinyint型)フィールドansweredを追加しない]をクリックし、それぞれと答えた質問表にない質問を発生させることを意図していますか?あなたのSQLリクエストをSELECT question FROM questions WHERE category = '$category' AND answered = 0

+0

に変更する必要があります。ステータスが返答されたり、NULLになったり、渡されたりする可能性があり、残りのアプリケーションの変更が必要になります。そして、上記のクエリが動作していないと考えても、アプリケーションが – cmc12345

+0

でも多くのユーザーによって再生されるため、1つのテーブルを持つと、game_idがなくてもテーブルが更新されますすべてのユーザーのために – cmc12345

+0

Ok ok ^^、あなたのデータベースを作成しようとしましたが、あなたが書いたリクエストを実行しようとしました。私は問題が他の場所にあると思う、おそらくあなたがURLに入れたカテゴリまたはgame_idに – RasAlGhul

関連する問題