2017-04-22 5 views
1

データベースからデータを取得するためにJSON構造を使用しています。データベースの最初の行しか表示されません。最後の行はデータベースに挿入されます。データを取得するだけでデータベースの最初の行が表示され、最後の行がデータベースに挿入されます。

これは私のJavaクラスRetrieveInfo.java

public class RetrieveInfo extends AppCompatActivity implements View.OnClickListener { 

    public static final String DATA_URL = "http://ksvira.edu.in/getBusinessDetails.php"; 
    public static final String KEY_NAME = "name"; 
    public static final String KEY_EMAIL = "email"; 
    public static final String KEY_PHONENUM = "phone"; 
    public static final String KEY_ADDRESS = "address"; 
    public static final String KEY_FAX = "fax"; 
    public static final String KEY_MAILADDRESS = "mailaddress"; 
    public static final String KEY_OPENDATE = "opendate"; 

    public static final String JSON_ARRAY = "result"; 



    private Button buttonGet; 
    private TextView textViewResult; 

    private ProgressDialog loading; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_retrieve_info); 


     buttonGet = (Button) findViewById(R.id.buttonGet); 
     textViewResult = (TextView) findViewById(R.id.textView); 
     buttonGet.setOnClickListener(this); 
    } 

    private void getData() { 

     loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false); 

     //String url = DATA_URL+editTextId.getText().toString().trim(); 
     String url=DATA_URL; 
     StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       loading.dismiss(); 
       showJSON(response); 
      } 
     }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(RetrieveInfo.this,error.getMessage().toString(),Toast.LENGTH_LONG).show(); 
        } 
       }); 

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

    private void showJSON(String response){ 
     String name=""; 
     String email=""; 
     String phonenum =""; 
     String fax = ""; 
     String address=""; 
     String mailaddress = ""; 
     String opendate = ""; 

     try { 
      JSONObject jsonObject = new JSONObject(response); 
      JSONArray result = jsonObject.getJSONArray(JSON_ARRAY); 

      int size = jsonObject.length(); 
      JSONObject collegeData = result.getJSONObject(size); 
      name = collegeData.getString(KEY_NAME); 
      email=collegeData.getString(KEY_EMAIL); 
      phonenum=collegeData.getString(KEY_PHONENUM); 
      fax=collegeData.getString(KEY_FAX); 
      address = collegeData.getString(KEY_ADDRESS); 
      mailaddress =collegeData.getString(KEY_MAILADDRESS); 
      opendate = collegeData.getString(KEY_OPENDATE); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     textViewResult.setText("Name:\t"+name+"\nEmail:\t"+email+"\nPhone:\t"+phonenum+"\nFax:\t"+fax+"\nAddress:\t" +address+"\nMailAddress:\t"+mailaddress 
       +"\nOpenDate\t"+opendate); 
    } 

    @Override 
    public void onClick(View v) { 

     getData(); 
    } 
} 

activity_retrieveinfo.xml

<Button 
    android:text="View Information" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/button_View1" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="30sp" 
    android:id="@+id/textView2" 
    android:layout_below="@+id/button_View1" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentBottom="true" /> 

getBusinessDetails.php

<?php 

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

//$id = $_GET['id']; 

require_once('dbConnect.php'); 

$sql = "SELECT * from business_info"; 

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

// $res = mysqli_fetch_array($r); 


$result = array(); 

while($res = mysqli_fetch_array($r)) 
     { 
     $result[] = $res;  
     //array_push($result,array("name"=>$res[0],"email"=>$res[1],"phonenum"=>$res[2],"fax"=>$res[3],"address"=>$res[4],"mailaddress"=>$res[5],"opendate"=>$res[6]));    

     } 

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

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


mysqli_close($con); 

// } 
?> 
+0

ORDER BY句がないと、最初と最後のような概念はかなり無意味です。 – Strawberry

+0

ありがとうございました。 –

答えて

0

ちょうどこのようにクエリを使用している:「business_infoから*を選択(主キー)下限1 "

+0

ありがとうございます。それは –

0

は=

SELECT * FROM business_info ORDER BY column_name DESC LIMIT 1 

FYI

column_nameには、主キーである必要があり、あなたのサーバー側クエリ$のSQLを修正します。 ORDER BYキーワードを使用して、結果セットを昇順または降順にソートします。 DESC LIMIT 1は最後の要素をフェッチします。

+0

多くのおかげで動作します。 –

+0

私は主キーとしてID列を取る必要がありますか? –

+0

@YashKaushikはい。私に知らせてください –

0

プライマリキー列のmysqlクエリでorder byを使用する必要があります。あなたの

<?php 

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

//$id = $_GET['id']; 

require_once('dbConnect.php'); 

$sql = "SELECT * from business_info order by primary_key_column desc limit 1"; 

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

// $res = mysqli_fetch_array($r); 


$result = array(); 

while($res = mysqli_fetch_array($r)) 
     { 
     $result[] = $res;  
     //array_push($result,array("name"=>$res[0],"email"=>$res[1],"phonenum"=>$res[2],"fax"=>$res[3],"address"=>$res[4],"mailaddress"=>$res[5],"opendate"=>$res[6]));    

     } 

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

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


mysqli_close($con); 

// } 
?> 
+0

私のテーブルのプライマリキーとしてidを作ってください。 –

+0

@Yash Kaushikはいできます。 –

+0

それは動作します。ありがとうたくさん –

0

$sql = "SELECT * from business_info";  

はにそれを変更:

$sql = select * from business_info order by yourPrimaryColumn desc limit 1; 
+0

実際に私はアンドロイドプログラミングの初心者です、なぜ私は問題を抱えているのですか? –

+0

私は自分のデータベーステーブルに列IDを作成し、それを一次キーとして作ってください –

+0

少なくとも、テーブルの主キーには一意の列が1つ必要です –

0

問題は、挿入された最後のレコードが何であるかを識別する方法がないということです。主キーによる結果の順序付けは、これを挿入する順序がある場合にのみ有効です。たとえば、主キーが「名前」の場合、挿入された最後の行とはどのように関連していますか?

これは、主キーとしてID列(自動インクリメントフィールドなど)がある場合に機能します。

関連する問題