2016-10-13 4 views
0

번호를 계산하고 싶습니다. 데이터베이스 테이블에서 행 수를 표시하고 해당 번호를 TextView에 표시하십시오.수를 계산하는 방법. 데이터베이스 테이블의 행 수를 TextView에 표시 하시겠습니까?

여기에서 필자는 시도했지만 필요한 출력을 얻지 못했습니다. 여기

내 전체 코드

Mainactivity.java logca 여기 여기

 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 파일

fetchvisit.php

<?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); 
    } 


?> 

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()에 사용하여이 두 줄 중 하나 일 가능성이 있습니다.

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); 

면책 조항 : 나는 실제로 세부 사항의 부족을 설명하는 모든 그렇게 많은 자바를 모른다. 어떤 경우에도 코드에 디버거를 적용하면 이 문제를 발견하게됩니다.

편집 : 당신은뿐만 아니라 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

에서 나를 도우십시오. 데이터베이스에서 데이터를 가져오고 싶다면이 코드는 완벽하게 작동하지만 원하는 작업은 아니오를 계산하는 것입니다. 날짜 별 행 –

+0

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

+0

$ count 대신 $ 방문을 쓰면 데이터베이스 데이터가 표시됩니다. 그러나 나는 아니오를 세고 싶다. 행 수 –

관련 문제