[MySQL / JSON / PHP] Connecter une application à une base de données
Bonjour,
J'essaye actuellement de connecter mon application avec une base de données située sur un serveur distant. Je me suis pas mal renseigné et apparemment, il faut utiliser JSON.
J'ai trouvé un bon tutoriel mais j'ai un peu de mal à comprendre certaines lignes de code, ce qui fait que je ne comprends pas tout à fait pourquoi cela ne fonctionne pas quand j'essaye d'adapter ce code à mon projet.
Tout d'abord, je crée un fichier PHP que je mets dans un dossier de mon site web :
Code:
1 2 3 4 5 6 7 8
| <?php
include('connection.php');
$sql=mysql_query("SELECT * FROM membres WHERE nom like '".$_REQUEST['membres']."%'");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?> |
Ensuite dans mon main Activity je place ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout rootLayout = new LinearLayout(getApplicationContext());
txt = new TextView(getApplicationContext());
rootLayout.addView(txt);
setContentView(rootLayout);
// Définir le texte et appeler la fonction de connexion.
txt.setText("Connexion...");
// Appeler la méthode pour récupérer les données JSON
txt.setText(getServerData(strURL));
}
// Mettre l'adresse du script PHP
// Attention localhost ou 127.0.0.1 ne fonctionnent pas. Mettre l'adresse IP local.
public static final String strURL = "http://www.monsite.fr/export.php";
private String getServerData(String returnString) {
InputStream is = null;
String result = "";
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("membres","M"));
// Envoi de la commande http
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(strURL);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection " + e.toString());
}
// Conversion de la requête en string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result " + e.toString());
}
// Parse les données JSON
try{
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
// Affichage ID_ville et Nom_ville dans le LogCat
Log.i("log_tag","id: " + json_data.getInt("id") + ", nom: " + json_data.getString("nom"));
// Résultats de la requête
returnString += "\n\t" + jArray.getJSONObject(i);
}
}catch(JSONException e){
Log.e("log_tag", "Error parsing data " + e.toString());
}
return returnString;
} |
Je fais ça mais ça ne fonctionne pas et je ne sais pas exactement d'où vient le problème.
Est-ce que je tape mal l'adresse du fichier ?
Est-ce que quelqu'un sait ce qu'est exactement NameValuePair ?
Merci d'avance pour votre aide.