2013-08-23 6 views
2

Я пишу Native Android App, в котором я использую PHP MYSQL для получения данных с сервераКак получить данные с сервера, используя идентификатор в Android

В этом списке [Список Назначения] Я позволяю пользователю перепланировать назначение , но всякий раз, когда я нажимаю на элемент, который получает пустую форму, короче не получая данные для этой конкретной встречи, которую я нажал в списке.

Вопрос

Как показывают данные в форме, используя AppointmentID?

Ниже я показываю все необходимые код, написанный мной [Client & Server Side как]

UpcomingActivity.java:

 @Override 
     public boolean onContextItemSelected(MenuItem item) { 
      AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
      int menuItemIndex = item.getItemId(); 
      String[] menuItems = Cmd; 
      String CmdName = menuItems[menuItemIndex]; 
      // Check Event Command 
      if ("Cancel".equals(CmdName)) 
      { 
       Toast.makeText(UpcomingActivity.this,"Selected Cancel",Toast.LENGTH_LONG).show();   
      } 
      else if ("Reschedule".equals(CmdName)) 
      { 
       Toast.makeText(UpcomingActivity.this,"Selected Update",Toast.LENGTH_LONG).show(); 

       String sAppointmentID = MyArrList.get(info.position).get("UserID").toString();      
       Log.d(tag, "sAppointmentID :: " + sAppointmentID); 

       Intent newActivity = new Intent(UpcomingActivity.this, UpdateActivity.class); 
       newActivity.putExtra("UserID", sAppointmentID);      
       startActivity(newActivity); 
      }    
      return true; 
     } 

UpdateActivity.java:

  public void showInfo() 
      { 
       final TextView tAppointmentID = (TextView)findViewById(R.id.txtUsername); 
       final TextView tType = (TextView)findViewById(R.id.txtName); 
       final TextView tDate = (TextView)findViewById(R.id.txtEmail); 
       final TextView tTime = (TextView)findViewById(R.id.txtTel); 

       Button btnSave = (Button) findViewById(R.id.btnSave); 
       Button btnCancel = (Button) findViewById(R.id.btnCancel); 
       String url = "http://10.0.2.2/appointments/getByMemberID.php"; 

       Intent intent= getIntent(); 
       final String AppointmentID = intent.getStringExtra("AppointmentID"); 
       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       params.add(new BasicNameValuePair("sAppointmentID", AppointmentID)); 

       String resultServer = getHttpPost(url,params); 
       String strAppointmentID = "";    
       String strType = ""; 
       String strDate = ""; 
       String strTime = ""; 

       JSONObject c; 
       try { 
        c = new JSONObject(resultServer); 

        strAppointmentID = c.getString("UserID"); 
        Log.d(TAG, "String strAppointmentID" + strAppointmentID); 
        strType = c.getString("Type"); 
        Log.d(TAG, "String strType" + strType); 
        strDate = c.getString("Date"); 
        Log.d(TAG, "String strDate" + strDate); 
        strTime = c.getString("Time"); 
        Log.d(TAG, "String strTime" + strTime); 

        if(!strAppointmentID.equals("")) 
        { 
         tAppointmentID.setText(strAppointmentID); 
         tType.setText(strType); 
         tDate.setText(strDate); 
         tTime.setText(strTime); 
        } 
        else 
        { 
         tAppointmentID.setText("-"); 
         tType.setText("-"); 
         tDate.setText("-"); 
         tTime.setText("-"); 
         btnSave.setEnabled(false); 
         btnCancel.requestFocus(); 
        } 

       } catch (JSONException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
+0

сначала подтвердите что php в порядке. Для этого введите идентификатор вручную внутри ** getByMemberID.php ** и загрузите его из веб-браузера. 10.0.2.2/appointments/getByMemberID.php – Nizam

+0

Будьте осторожны с атаками SQL-инъекций. Ваш текущий код широко открыт, потому что вы напрямую вводите пользовательский ввод ($ _POST) в свои запросы. Google it - быстро исправить, если вы используете PHP-пакет mysqli (или другие альтернативы mysql) или выполняете некоторые проверки ввода перед его использованием. –

ответ

2
  1. первую очередь убедитесь, что у вас есть действительный AppointmentID и UserId и

  2. в UpcomingActivity.java в методе onContextItemSelected вы не предоставляют AppointmentID вместо этого вы только предоставление UserID к Intend

  3. Список, но в Updateactivity по методу showData Вы запрашиваете intent.getStringExtra("AppointmentID"), который является invaild.

поэтому ваше обновление вашего UpcomingActivity.java должен выглядеть следующим образом

public boolean onContextItemSelected(MenuItem item) { 
     AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo(); 
     int menuItemIndex = item.getItemId(); 
     String[] menuItems = Cmd; 
     String CmdName = menuItems[menuItemIndex]; 
     // Check Event Command 
     if ("Cancel".equals(CmdName)) 
     { 
      Toast.makeText(UpcomingActivity.this,"Selected Cancel",Toast.LENGTH_LONG).show();   
     } 
     else if ("Reschedule".equals(CmdName)) 
     { 
      Toast.makeText(UpcomingActivity.this,"Selected Update",Toast.LENGTH_LONG).show(); 

      String sAppointmentID = MyArrList.get(info.position).get("UserID").toString();      
      Log.d(tag, "sAppointmentID :: " + sAppointmentID); 

      Intent newActivity = new Intent(UpcomingActivity.this, UpdateActivity.class); 
      newActivity.putExtra("UserID", sAppointmentID); 
      newActivity.putExtra("AppointmentID", MyArrList.get(info.position).get("AppointmentID").toString());// <== here      
      startActivity(newActivity); 
     }    
     return true; 
    } 
+0

спасибо, но теперь я не могу обновить данные, пожалуйста, проверьте здесь: http://stackoverflow.com/questions/18606478/how-to-update-data-using-php-mysql-in-android – Sneha

3
  • Вариант 1

    Разработка веб-службы Java EE и размещение ее на сервере. Вашему Android-приложению необходимо связать данные с веб-сервисом и отправить его на сервер. Сервер может получать данные и делать с ними то, что он хочет. Сервер также может обрабатывать и реагировать на некоторую дополнительную информацию через один и тот же ответ веб-службы. Вам нужно google для hello world Java EE. Я нашел его.

    Как только ваша Java EE работает на локальном рабочем столе (или машине разработки), вы можете скопировать WAR или EAR в EC2, чтобы сделать приложение работоспособным через Интернет, без необходимости испытывать боль при создании сети который открыт и DMZ.

  • Вариант 2

    Вы можете разработать продукт на основе Java сокет, который ваш андроид приложение подключается к, через ClientSocket. Таким образом, вы можете сериализовать данные и отправлять их по потоку. И на сервере десериализуйте его и восстановите объект. Этот подход требует более дисциплинированной разработки программного обеспечения. Это может быть очень затруднительно, если вы являетесь разработчиком в первый раз, я бы рекомендовал вариант 1.

Надеюсь, что я дал некоторое базовое направление.

1

я заметил несколько вопросов (может быть опечаток, но я предпочитаю, чтобы спросить в любом случае):

  • Вы вызываете , но вы не включили его исходный код в вопросе - у вас есть такая услуга, не так ли? :)
  • В onContextItemSelected вы начинаете UpdateActivity и сдавать UserID в качестве дополнительного. Но в методе showInfo этого действия вы пытаетесь получить AppointmentID из дополнительных возможностей намерения, поэтому он не обрабатывает никаких данных.
0

1) Попробуйте погоду вашего PHP код работает нормально или нет ... Вы можете сделать это, запустив непосредственно на сервере и прохождении UserId и appoinmentId как параметр?

Для например .... www.abc.com?sUserId=123?sAppointmentID=456

увидеть погоду он показывает вам правильную продукцию.

2) вы вызываете getByMemberID.php, но вы указали его код, но вы не передаете «AppointmentID» для этого, также проверяете с помощью погоды PHP-кода, которую вы извлекаете?

3) На вызов updateData.php в UpdateActivity.java: вы не обеспечивают «AppointmentID», но вы retriving его в PHP код будет получить нулевое значение по умолчанию, которое будет ошибка

конечно
Смежные вопросы