Connexion base de données Mysql
Résolu
haikei00X
Messages postés
67
Date d'inscription
Statut
Membre
Dernière intervention
-
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour tout le monde.
Je viens de commencer une application android sous windows 7 (première expérience avec android) , et je suis arrivée au stade de la connexion avec la base de données (je travaille avec Mysql) .
Je n'arrive pas à connecter ma base et je bloque dessus il y a 4 jours.
Est-ce que quelqu'un pourrait m'aider? Je dois vraiment avancer!
Voilà mon code:
PHP code
Activité Hfood.java:
Classe java connect.java:
P.S Je travaille avec Android Studio
Merci d'avance ^_^
Je viens de commencer une application android sous windows 7 (première expérience avec android) , et je suis arrivée au stade de la connexion avec la base de données (je travaille avec Mysql) .
Je n'arrive pas à connecter ma base et je bloque dessus il y a 4 jours.
Est-ce que quelqu'un pourrait m'aider? Je dois vraiment avancer!
Voilà mon code:
PHP code
<?php $link=mysql_connect("localhost","root",""); //Connexion au serveur if(!$link) { die('Erreur connexion'.mysql_error()); } $Db_Select=mysql_select_db('wtf',$link); //Connexion à la base de données /*************************************************************************/ $sql='SELECT * FROM shape '; $req=mysql_query($sql) or die('SQL ERROR'.$sql.mysql_error()); while($row=mysql_fetch_array($req)) $output[]=$row; print(json_encode($output)); mysql_close($link); ?>
Activité Hfood.java:
package com.example.pomme.wtf; import android.os.AsyncTask; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.widget.TextView; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class Hfood extends ActionBarActivity { private TextView responseTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hfood); responseTextView = (TextView) this.findViewById(R.id.dbcont); new GetAllCustomerTask().execute(new connect()); } public void setTextToTextView(JSONArray jsonArray) { String s = ""; for(int i=0; i<jsonArray.length();i++){ JSONObject json = null; try { json = jsonArray.getJSONObject(i); s = s + "IdShape : "+json.getInt("IdShape")+"\n"+ "Shape : "+json.getString("Shape")+"\n"+"\n\n"; } catch (JSONException e) { e.printStackTrace(); } } this.responseTextView.setText(s); } private class GetAllCustomerTask extends AsyncTask<connect,Long,JSONArray> { @Override protected JSONArray doInBackground(connect... params) { // it is executed on Background thread return params[0].GetAllCustomers(); } @Override protected void onPostExecute(JSONArray jsonArray) { setTextToTextView(jsonArray); } } }
Classe java connect.java:
package com.example.pomme.wtf; import android.util.Log; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.json.JSONArray; import org.json.JSONException; import java.io.IOException; /** * Created by Pomme on 17/03/2015. */ public class connect { public JSONArray GetAllCustomers() { // URL for getting all customers String url = "http://10.0.2.2/wtf/connect.php" ; // Get HttpResponse Object from url. // Get HttpEntity from Http Response Object HttpEntity httpEntity = null; try { DefaultHttpClient httpClient = new DefaultHttpClient(); // Default HttpClient HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); httpEntity = httpResponse.getEntity(); } catch (ClientProtocolException e) { // Signals error in http protocol e.printStackTrace(); //Log Errors Here } catch (IOException e) { e.printStackTrace(); } // Convert HttpEntity into JSON Array JSONArray jsonArray = null; if (httpEntity != null) { try { String entityResponse = EntityUtils.toString(httpEntity); Log.e("Entity Response : ", entityResponse); jsonArray = new JSONArray(entityResponse); } catch (JSONException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } return jsonArray; } }
P.S Je travaille avec Android Studio
Merci d'avance ^_^
A voir également:
- Connexion base de données Mysql
- Gmail connexion - Guide
- Base de registre - Guide
- Supprimer les données de navigation - Guide
- Connexion chromecast - Guide
- Tnt base de données vide - Forum TV & Vidéo
2 réponses
J'ai finalement trouvé la solution!! En fait le problème était dans l'url.
1) J'avais mis une adresse ip erronée. Pour avoir votre adresse ip locale, tapez "ipconfig" (si vous êtes sur windows) dans le cmd (invité de commande), et prenez le ipv4.
2) Normalement, on doit mettre le port de localhost (8080/80=>port par défaut). En effet ce n'est pas nécessaire de le mettre si vous avez le port par défaut, mais si ce n'est pas le cas, vous devez mettre le nouveau port.Dans mon cas c'est 82.
Ce qui donne l'url suivant:
3) Il faut aussi ajouter la permission internet dans le fichier manifest (xml) dans votre application sur android studio
=>Et si après tout cela ça ne fonctionne toujours pas, il faut éditer le fichier httpd.conf de Apache du wamp et mettre au lieu de "Allow for 127.0.0.1" "Allow for all".
Voilà c'est ce que j'ai fait, et maintenant ça marche comme sur des roulettes. ^_^
1) J'avais mis une adresse ip erronée. Pour avoir votre adresse ip locale, tapez "ipconfig" (si vous êtes sur windows) dans le cmd (invité de commande), et prenez le ipv4.
2) Normalement, on doit mettre le port de localhost (8080/80=>port par défaut). En effet ce n'est pas nécessaire de le mettre si vous avez le port par défaut, mais si ce n'est pas le cas, vous devez mettre le nouveau port.Dans mon cas c'est 82.
Ce qui donne l'url suivant:
String url="192.168.1.12:82/connect.php" ;
3) Il faut aussi ajouter la permission internet dans le fichier manifest (xml) dans votre application sur android studio
=>Et si après tout cela ça ne fonctionne toujours pas, il faut éditer le fichier httpd.conf de Apache du wamp et mettre au lieu de "Allow for 127.0.0.1" "Allow for all".
Voilà c'est ce que j'ai fait, et maintenant ça marche comme sur des roulettes. ^_^
Bonjour,
Quelques remarques:
- dire qu'on travaille avec Android et MySQL est un non-sens pour plusieurs raisons: d'abord, sur les téléphones c'est du sqlite; ensuite peut importe ton type de bdd sur ton serveur, ton appli n'y a pas directement accès Ce qui m'amène au 2e point
- ce n'est pas à l'appli mobile de gérer les connexions avec la bdd, c'est au serveur. L'appli utilise des webservices de type get/set et c'est tout. C'est côté PHP où tu va gérer les interactions avec ta base
Quelques remarques:
- dire qu'on travaille avec Android et MySQL est un non-sens pour plusieurs raisons: d'abord, sur les téléphones c'est du sqlite; ensuite peut importe ton type de bdd sur ton serveur, ton appli n'y a pas directement accès Ce qui m'amène au 2e point
- ce n'est pas à l'appli mobile de gérer les connexions avec la bdd, c'est au serveur. L'appli utilise des webservices de type get/set et c'est tout. C'est côté PHP où tu va gérer les interactions avec ta base
--> Ne pas sous-estimer le mode debug...et ne pas hésiter à utiliser des echo côté serveur