Jump to content
abdallah123

Connecter android la base de donnée MySQL

Recommended Posts

bonjour,

j'ai utiliser ce tutoriel pour lier android a mysql:

http://www.helloandr...-mysql-database

la connexion entre php et mysql fonctionne mais lorsque j'ai mis le code dans android ca n'a pas marche et c'est comme si je n'ai rien ecrit j'ai rien recu ni des message d'erreur ni rien et meme j'ai essaye d'ecrire le resultat dans un edittext mais ca n'a rien rendu alors que peut etre le probleme?

c'est comme ci j'ai rien ecrit comme code, j'ai eut aucun resultat..

et puisque easyphp contient des base de donnee sqlite alors comment connecter android a une base de donnee sqlite dans mysql et comment faire push a une base de donnee a distance.

j'ai vraiment besoin d'aide...........

merci.

Edited by abdallah123

Share this post


Link to post
Share on other sites

Première étape: vérifier que le code PHP retourne bien un résultat. As-tu essayé de l'appeler depuis un navigateur ? As-tu bien un résultat qui s'affiche dans le navigateur ?

Si cela fonctionne, ensuite, tu peux tester ton appli Android. Si une erreur se produit, tu auras forcément un message d'erreur dans le LogCat. A toi de nous dire ensuite lequel

Share this post


Link to post
Share on other sites

oui, ca a marche dans le navigateur et ca a retourne le bon resultat mais dans android je n'ai rien eut meme pas dans le logcat.rien du tout comme ci je n'ai rien ecrit

Share this post


Link to post
Share on other sites

tu peux mettre un extrait de ton code ?

Share this post


Link to post
Share on other sites


  • String result = "";

  • //the year data to send

  • ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

  • nameValuePairs.add(new BasicNameValuePair("year","1980"));

  • //http post

  • try{

  • HttpClient httpclient = new DefaultHttpClient();

  • HttpPost httppost = new HttpPost("http://example.com/getAllPeopleBornAfter.php");

  • httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

  • HttpResponse response = httpclient.execute(httppost);

  • HttpEntity entity = response.getEntity();

  • InputStream is = entity.getContent();

  • }catch(Exception e){

  • Log.e("log_tag", "Error in http connection "+e.toString());

  • }

  • //convert response to string

  • try{

  • BufferedReader reader = new BufferedReader(newInputStreamReader(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 json data

  • try{

  • JSONArray jArray = new JSONArray(result);

  • for(int i=0;i<jArray.length();i++){

  • JSONObject json_data = jArray.getJSONObject(i);

  • Log.i("log_tag","id: "+json_data.getInt("id")+

  • ", name: "+json_data.getString("name")+

  • ", sex: "+json_data.getInt("sex")+

  • ", birthyear: "+json_data.getInt("birthyear")

  • );

  • }

  • }

  • }catch(JSONException e){

  • Log.e("log_tag", "Error parsing data "+e.toString());

  • }

merci pour l'aide

ok alors excusez-moi j'ai cru que le log c'est la console comme en c# alors j'ai vu que non mais j'ai vu le log et j'ai vu des erreurs mais je les effacer pour retester le projet apres avoir demarrer easyphp alors j'ai plus eut un log message le log est vide comment je peux revoire mon log?

Edited by abdallah123

Share this post


Link to post
Share on other sites

Tu peux utiliser les balises [ code ] pour présenter ton code dans ton post, parce que là, c'est juste illisible...

Share this post


Link to post
Share on other sites

String result = "";
//the year data to send
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("year","1980"));

//http post
try{
	HttpClient httpclient = new DefaultHttpClient();
	HttpPost httppost = new HttpPost("http://example.com/getAllPeopleBornAfter.php");
	httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
	HttpResponse response = httpclient.execute(httppost);
	HttpEntity entity = response.getEntity();
	InputStream is = entity.getContent();
}catch(Exception e){
	Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to 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 json data
try{
	JSONArray jArray = new JSONArray(result);
	for(int i=0;i<jArray.length();i++){
			JSONObject json_data = jArray.getJSONObject(i);
			Log.i("log_tag","id: "+json_data.getInt("id")+
					", name: "+json_data.getString("name")+
					", sex: "+json_data.getInt("sex")+
					", birthyear: "+json_data.getInt("birthyear")
			);
	}
}
}catch(JSONException e){
	Log.e("log_tag", "Error parsing data "+e.toString());
}

merci bien, pour l'aide mais encore une question:

ok alors excusez-moi j'ai cru que le log c'est la console comme en c# alors j'ai vu que non mais j'ai vu le log et j'ai vu des erreurs mais je les effacer pour retester le projet apres avoir demarrer easyphp alors j'ai plus eut un log message le log est vide comment je peux revoire mon log?

et ou se trouve le log c'est dans log error et si j'ecris log.i(); alors ou je dois avoir la reponse?

Edited by abdallah123

Share this post


Link to post
Share on other sites

Il suffit de relancer l'application pour avoir de nouveau les messages qui s'affichent

Si, par contre, tu as fermé la fenêtre LogCat, il suffit de la réouvrir; dans Eclipse, menu Window/Show view/Logcat (ou Other.../Android/Locgat si Logcat n'apparait pas directement dans le menu)

Share this post


Link to post
Share on other sites

ok merci alors c'est la je ne savais pas je regardais la console et l'error log alors je vais tester a nouveau et regarder le log cat :) merci

j'ai eut comme reponse:

error in http connection java.net.socketexception permission denied

error in converting result...

alors la connection n'a pas marche mais pourquoi?

Share this post


Link to post
Share on other sites

parce que tu n'as pas ajouté la permission d'accès Internet à ton application

A ajouter dans le AndroidManifest.xml de ton projet, onglet Permissions, bouton Add/Uses Permission, choisir android.permission.INTERNET

Share this post


Link to post
Share on other sites

alors l'erreur c'etait car j'ai pas mis la permission de l'utilisation de l'iinternet alors maintenant j'ai eut connection a 127.0.0.1 refused je vais voir pourquoi!!

j'ai eut error in http connection org.apache.http.HttpHostConnectException: connection to http://127.0.0.1 refused

alors je crois que ca a marche j'ai remplace 127.0.0.1 par exemple .com mais j'ai eut une erreur de parse de json :P:

error parsing data org.json.jsonException value<!Doctype of type java.lang.string cannot be converted to jsonarray

Share this post


Link to post
Share on other sites

127.0.0.1 correspond à l'adresse locale de ton smartphone, c'est à dire que tu essayes d'accéder à un serveur http qui serait présent sur ton appareil Android, ce qui ne doit pas être ce que tu souhaites faire

Si tu utilises l'émulateur, et que tu souhaites accéder à un serveur http qui serait présent sur ton poste de dev, alors, il faut que tu utilises l'adresse spéciale 10.0.2.2 (cf doc de l'émulateur)

Share this post


Link to post
Share on other sites

oui je t'ai repondu je sais ca :) merci je t'ai dit que je l'ai remplace par example.com et ca a fonctionne mais j'ai eut un erreur de json

error parsing data org.json.jsonException value<!Doctype of type java.lang.string cannot be converted to jsonarray

Share this post


Link to post
Share on other sites

t'es sûr que tu parses du JSON ? parce que DOCTYPE, c'est ce qu'on trouve dans un contenu XML...

Share this post


Link to post
Share on other sites

oui mais je parse de json t'as vu le code? y'a pas de xml mais j'ai trouve d'autres personnes qui ont eut cette erreur je vais voir c'est quoi :)

merci bcp pour ton aide

Share this post


Link to post
Share on other sites

je vois bien que ton code est fait pour parser du JSON. Ce que je veux dire, vu l'erreur, c'est que le contenu retourné par ton serveur ne semble pas être du JSON, mais plutôt du XML...

Share this post


Link to post
Share on other sites

non je ne te dis pas que tu n'as pas vu que mon code est pour json!!!

mais je te demande si tu as vu d'autre chose peut etre y'avais d'xml et j'ai pas vu c'est ca :)

oui moi j'ai vu doctype avec xml mais la je ne sais pas comment il y'a cette erreur..

et j'ai vu cette solution

I would get rid of this line:
JSONArray jArray = new JSONArray(result);
and do this instead:
JSONObject json_data = new JSONObject(result);
JSONArray nameArray = json_data.names();
JSONArray valArray = json.toJSONArray(nameArray);

mais ca na pas marche maintenant ils me disent que tu ne peut pas transformer string a jsonobject c'est de

JSONArray jArray = new JSONArray(result);

car la on est en train de transformer result qui est declare comme string en jsonobject.

mais je ne sais pas comment la fixer..

Edited by abdallah123

Share this post


Link to post
Share on other sites

Le problème est de savoir quel est le contenu que tu reçois de ton serveur, afin d'être sûr que c'est bien du JSON; l'erreur que tu indiquais ("error parsing data org.json.jsonException value<!Doctype of type java.lang.string cannot be converted to jsonarray") semble dire que ce n'est pas le cas, et tu auras beau essayer d'instancier un JSONObjet ou un JSONArray, ça ne fonctionnera pas si ce n'est pas à la base du JSON

Peux-tu afficher dans les logs le contenu que tu reçois (un Log.d("log_tag", "resultat reçu : " + result); avant le parsing JSON ?

Share this post


Link to post
Share on other sites

ok je vais essayer et puis je t'afficherai le resultat

j'ai recu un code html :P c'est pour ca que j'ai eut un erreur doctype :P

alors c'est quoi la solution j'ai eut mal a la tete !! :P

mais peut etre que c'est normal? on la trasforme en html pour l'envoyer entre les 2 logiciels? ou non!!

car dans le navigateur j'ai eut le resultat sous forme de json

Share this post


Link to post
Share on other sites

Si tu avais bien du json dans le navigateur, mais que tu as du html dans ton appli, c'est que tu ne dois pas appeler de la même façon le serveur...

As-tu affiché dans le log le résultat de la requête http ? quel est-t'il ? est-ce du json encapsulé dans du html ? ou ... ?

  • Like 1

Share this post


Link to post
Share on other sites

Tu appelles un serveur sur example.com; mais je suppose que ton serveur n'est pas accessible par cette adresse; il faudrait appeler ton serveur, pas celui de l'exemple...

  • Like 1

Share this post


Link to post
Share on other sites

ah ok je veux essayer

oui ca a marche j'ai mis 10.0.2.2 au lieu de 127.0.0.1 :D

ah finalement je peux manger merci bcpppppppppppp

mais j'ai pas compris pourquoi c'est 10.0.2.2 mais mois j'appele ma machine avec 127.0.0.1

chpil merci bcp

j'ai trouve ca :10.0.2.2 Special alias to your host loopback interface (i.e., 127.0.0.1 on your development machine)

alors merci :)

Edited by abdallah123

Share this post


Link to post
Share on other sites

Tu avais toutes les explications dans le lien que je t'ai fourni quelques posts plus haut ;)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.






×
×
  • Create New...