2016-10-13 19 views
0

いいえを数えたい。データベーステーブルの行数を表示し、その数値をTextViewに表示しますカウントする方法データベースのテーブルの行数をTextViewに表示しますか?

ここでは試しましたが、必要な出力が得られませんでした。ここで

私の完全なコード

Mainactivity.java

 package com.example.sachin.splashlogin; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v7.widget.CardView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONArray; 
import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

public class Home extends Fragment { 
    Activity activity; 

    public Home() {}; 

    TextView visit; 
    SessionManager session; 
    CardView cardviewvisit, cardvieworder, cardviewpayment, cardviewdelivery; 
    JSONObject jsonobject; 
    private static String url_visitor = "http://10.0.2.2/portal/fetchvisit.php"; 
    JSONParser jParser = new JSONParser(); 
    JSONArray ownerObj, jsonarray; 

    ArrayList<HashMap<String, String>> arraylist; 
    ArrayList<String> v_username = new ArrayList<String>(); 
    ArrayList<String> v_parties1 = new ArrayList<String>(); 
    ArrayList<String> v_date = new ArrayList<String>(); 
    String suid, uid, wt_wod_code1, wt_party1; 
    View view; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.activity_home, container, false); 
     getActivity().setTitle("Home"); 
     cardviewvisit = (CardView) view.findViewById(R.id.cardviewvisit); 
     cardvieworder = (CardView) view.findViewById(R.id.cardvieworder); 
     cardviewpayment = (CardView) view.findViewById(R.id.cardviewpayment); 
     cardviewdelivery = (CardView) view.findViewById(R.id.cardviewdelivery); 
     session = new SessionManager(getActivity()); 
     HashMap<String, String> user = session.getUserDetails(); 
     uid = user.get(SessionManager.KEY_ID); 
     visit = (TextView) view.findViewById(R.id.visit1); 
     cardviewvisit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Fragment fragment = new DeliveryTab(); 
       FragmentManager fragmentManager = getFragmentManager(); 
       fragmentManager.beginTransaction().replace(R.id.framelayout, fragment).commit(); 

      } 
     }); 

     new DownloadJSON().execute(); 
     return view; 
    } 


    private class DownloadJSON extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... args) { 

      // Create an array 
      try { 
       arraylist = new ArrayList<HashMap<String, String>>(); 

       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       params.add(new BasicNameValuePair("v_username", uid)); 

       JSONObject json = jParser.makeHttpRequest(url_visitor, "GET", params); 

        ownerObj = json.getJSONArray("visit"); 
        for (int i = 0; i < ownerObj.length(); i++) { 
         wt_party1= json.getJSONArray("v_parties1").getJSONObject(0).getString("count"); 
         jsonobject = ownerObj.getJSONObject(i); 
        // v_parties1.add(jsonobject.getString("v_parties")); 
        } 
      } catch (Exception e) { 
      } 

      return null; 
     } 
     @Override 
     protected void onPostExecute(Void args) { 
      visit.setText(v_parties1.toString()); 
     } 
    } 
} 

ここでのAPIファイル

ここ

<?php 
    include("connection.php"); 

    $response = array(); 
    $User = $_REQUEST["v_username"]; 




    // get all products from products table 
    date_default_timezone_set('Asia/Kolkata'); 
    $dt = date("m/d/Y"); 
    $result=mysql_query("select DISTINCT v_parties,v_date from abc WHERE v_date='$dt' AND v_username='$User' ")or die(mysql_error()); 
    $count = mysql_num_rows($result); 


    if ($count > 0) { 
     // looping through all results 
     // products node 

     $response["visit"] = array(); 
      while ($row = mysql_fetch_array($result)) 
     { 
      echo $count; 
      $visit = array(); 

      $visit["v_parties"] = $row["v_parties"]; 

      $response["success"]=1; 




      // push single product into final response array 
      array_push($response["visit"], $count); 


     } 

    $response["success"] = 1; 
    echo json_encode($response); 
    } 
    else 
    { 
     // no products found 
     $response["success"] = 0; 
     $response["message"] = "No Visit found"; 

     // echo no users JSON 
     echo json_encode($response); 
    } 


?> 

fetchvisit.php logca t

 10-13 13:05:05.200 486-512/com.example.sachin.splashlogin D/Parameters: http://10.0.2.2/portal/fetchvisit.php?v_username=JAYESHBHAI 
10-13 13:05:07.039 486-492/com.example.sachin.splashlogin W/art: Suspending all threads took: 9.021ms 
10-13 13:05:07.140 486-486/com.example.sachin.splashlogin I/Choreographer: Skipped 116 frames! The application may be doing too much work on its main thread. 
10-13 13:05:08.476 486-512/com.example.sachin.splashlogin D/reader: [email protected] 
10-13 13:05:08.476 486-512/com.example.sachin.splashlogin D/P: [v_username=JAYESHBHAI] 
10-13 13:05:08.476 486-512/com.example.sachin.splashlogin E/Json Object:: {"visit":[1],"success":1} 
10-13 13:05:08.969 486-486/com.example.sachin.splashlogin I/Choreographer: Skipped 109 frames! The application may be doing too much work on its main thread. 

私は試みましたが、全く動作しません。

+0

あなたはAPIからの必要な応答を得ている! –

+0

はい私は私のlogcatをポストするだけでそれを見て.. –

+0

ここにあなたのjsonの応答を投稿! –

答えて

0

このコードでデバッガを使用し、DownloadJSON()メソッドの各行をステップ実行する必要があります。ここにはエラーがあり、間違ったメソッドを使用した結果、JSONオブジェクトが必要な整数を取得します。

私は、間違ったjParserメソッドを使用するか、間違ったパラメータをgetJSONArray()に使用して、これらの2つの行のいずれかである可能性があります。

JSONObject json = jParser.makeHttpRequest(url_visitor, "POST", params); 
ownerObj = json.getJSONArray("visit"); 

私はAPIからJSONオブジェクトを取得するわずかに異なるアプローチを示しanother questionを、見つけました。

JSONParser jParser = new JSONParser(); 
JSONObject json = jParser.getJSONFromUrl(ArtikelURL); 

免責事項:私は実際に細部の欠如を説明している、すべてのことくらいのJavaを知りません。いずれにしても、コードにデバッガを適用すると、になります。

編集:あなたにもPHPのコードに問題があったとして、あなたは古いmysql_*()機能の使用を停止する必要がある、とあなたが最大読まなければならない本当にまず

... 見送りウェブセキュリティ。特にXSS、SQLインジェクション、入力検証、および関連する科目。あなたのコードは悲惨なほど安全ではありません。

私はコードにいくつかの変更を加えました。私が行ったこととその理由を強調するコメントを追加しました。次の質問については

include ("connection.php"); 

$response = array(); 

// You really need to validate the input here, to prevent against both mistyping and malicious users. 
$User = $_REQUEST["v_username"]; 

// get all products from products table 
date_default_timezone_set ('Asia/Kolkata'); 
$dt = date ("m/d/Y"); 

// First of use PDO as the old(!) mysql_*() functions are deprecated, insecure and removed in PHP7. 
$db = new PDO (.....); 

// Next we use prepared statements to prevent SQL injections. 
$stmt = $db->prepare ("select DISTINCT v_parties,v_date from abc WHERE v_date=:date AND v_username=:user "); 
$res = $stmt->execute (array (
     ':date' => $dt, 
     ':user' => $User)); 

// 0 is a "falsey" value, so this will handle if we get no rows returned from the query. 
if (!$count = $stmt->num_rows) { 
    // no products found 
    $response["success"] = 0; 
    $response["message"] = "No Visit found"; 

    // Echo no users JSON, and exit early. 
    echo json_encode ($response); 
    die(); 
} 

// Since you only want to know the number of rows, no need to loop. 
$response["visit"] = $count; 
$response["success"] = 1; 

// However, if you do want to have a list of all rows returned... 
foreach ($stmt->fetchAll() as $row) { 
    // No need to use array_push(), when you can use the following (normal) convention. 
    $response['rows'][] = $row; 
} 

echo json_encode ($response); 

私はそれが間違っている理由は、間違っている正確に何を説明し、あなたがそれから得ることを期待をお勧めします。だから私たちは間違った質問に答える時間を無駄にする必要はありません...

+0

から私を助けてください。もし私がデータベースからデータを取得したいのであれば、このコードは完全に動作していますが、私がしたいことはnoを数えることです。の行を日付順に並べ替えます。 –

+0

array_push($ response ["visit"]、$ count); –

+0

$ countの代わりに$ visitを書くと、データベースのデータが表示されます。しかし、私は数を数えたいと思う。行の –

関連する問題