2012-12-07 13 views
5

Sto provando a fare un semplice inserimento da un'applicazione Android. Posso eseguire lo script php dal browser concatenando ?entry="Sample value from browser", ma quando eseguo l'applicazione da Android, non ottengo alcun inserimento.Android VMD MySQL inserire e mostrare la finestra di dialogo

Qui è dove sto chiamando la classe inserto che utilizza JSON e implementa AsyncTask:

package us.jtaylorok.android.sqlite.first; 

import java.util.ArrayList; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 

import android.app.ProgressDialog; 
import android.content.Context; 
import android.os.AsyncTask; 
import android.util.Log; 
import android.widget.Toast; 

public class RemoteInsert extends AsyncTask<Void, String,String >{ 

    protected String TAG; 
    protected Context context; 
    protected String input; 
    protected ProgressDialog progressDialog; 

    public RemoteInsert(String i,Context c){ 
     this.input = i; 
     this.context = c; 
    } 


    protected void onPreExecute() { 
     //ProgressDialog progressDialog; // = new ProgressDialog(context); 

     //progressDialog=ProgressDialog.show(,"Please Wait..","Sending data to database", false); 
     progressDialog=ProgressDialog.show(context,"Please Wait..","Sending data to database", false); 
    } 

    @Override 
    protected String doInBackground(Void... params) { 
     try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      //HttpPost httppost = new HttpPost("http://localhost/index.php"); 
      //HttpPost httppost = new HttpPost("http://10.253.8.88/patient_data/patient_data.php"); 
      HttpPost httppost = new HttpPost("http://10.100.205.72/patient_data/patient_data.php"); 

      ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); 
      postParameters.add(new BasicNameValuePair("entry", "Input from Android")); 

      httppost.setEntity(new UrlEncodedFormEntity(postParameters));     
      HttpResponse response = httpclient.execute(httppost); 
      Log.i("postData", response.getStatusLine().toString()); 
     } catch(Exception e) { 
      Log.e(TAG, "Error: "+e.toString()); 
     } 

     return ""; 
    } 

    protected void onPostExecute(String result) { 
     progressDialog.dismiss(); 
     Toast.makeText(context, "Finished", Toast.LENGTH_LONG).show(); 
    } 
} 

E qui è il mio script PHP:

<?php 
    // mysql_connect("host","username","password"); 
    mysql_connect("localhost","user1","mypassword"); 
    mysql_select_db("test"); 

    $entry_value = $_REQUEST["entry"]; 
    $query = "INSERT INTO patientdata (entry) values (".$entry_value.");"; 
    if(!mysql_query($query)) { 
     /*insert failed*/ 
    } 

    mysql_close(); 
?> 

Ancora una volta, questo funziona perfettamente se lo chiamo dal browser, ma genera un'eccezione prima di implementare AsyncTask.

io capisco l'AVD per visualizzare l'aggiungere e rimuovere, ma quando lo faccio non v'è alcuna richiesta nel mio apache2access_log o error_log. Eventuali suggerimenti?

+0

forse quando concessi i privilegi all'utente1 doveva essere da qualcosa di diverso da localhost. Sono stato in grado di ottenere i valori da $ _REQUEST e di scriverli in un file di testo in modo che la funzione mysql_query sia instabile che penso di aver letto che è stata deprecata o che c'è un problema con il problema del privilegio user1 @ localhost quando proviene da Android. Posso anche farlo funzionare dal file php in esecuzione dal browser in Android. Quindi qualsiasi suggerimento sarebbe benvenuto. –

+0

Risolto problema di configurazione nel mio php.ini –

risposta

0

Penso che tu abbia memorizzato lo script php sul server locale. Quindi usa questo 10.0.2.2 durante l'inizializzazione di HttpPost invece dell'indirizzo IP della tua macchina. Il suo equivalente localhost nel dispositivo virtuale Android.

0

Questo non era il problema per questo particolare problema. Il problema era una citazione di virgolette nel php.ini

+0

Rispondere alle tue domande è perfettamente buono. Tuttavia, questa risposta non fornisce dettagli sufficienti per capire cosa stava succedendo e come lo hai risolto. Ti preghiamo di considerare l'aggiunta di ulteriori dettagli alla tua risposta. – dasblinkenlight