IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Problème d'affichage de données depuis BDD


Sujet :

Android

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème d'affichage de données depuis BDD
    Bonjour à tous,

    Je suis face a un problème dans le développement de mon application Androïd. Je cherche a extraire des données d'une base de donnée SQL, je passe donc par un script php effectuant la requête a la BDD, il encode ensuite les données extraites de la base de donnée en format JSON. Mon application Androïd utilise ensuite les données pour les afficher. Les données que je souhaite afficher ne s'affichent pas et je n'arrive pas a savoir pourquoi...

    Ma base de donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE IF NOT EXISTS `tblVille` (
      `ID_ville` int(11) NOT NULL AUTO_INCREMENT,
      `Nom_ville` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
      PRIMARY KEY (`ID_ville`)
    ) ENGINE=InnoDB
    Mon code PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php   
     
    	$link= mysqli_connect("mysql.hostinger.fr","u400203746_admin","******","u400203746_db");
     
    		$requete = "SELECT * FROM tblVille WHERE Nom_ville like '".$_REQUEST['ville']."%'";
    	  $sql=mysqli_query($link,$requete);
    	  while($row=mysqli_fetch_assoc($sql))
    	  $output[]=$row;
    	  print(json_encode($output));
    	  mysqli_close($link);
    ?>

    Le code de mon application Android :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    package com.example.trouvetonfilm;
     
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
     
    import org.apache.http.HttpEntity;
    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 org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Log;
    import android.view.Menu;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    public class MainActivity extends Activity {
    	 TextView txt;
    	    @Override
    	    public 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 = "trouvetonfilm.hol.es/test.php";
    	    private String getServerData(String returnString) {
    	        InputStream is = null;
    	        String result = "";
    	        // Envoyer la requête au script PHP.
    	        // Script PHP : $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'");
    	        // $_REQUEST['ville'] sera remplacé par L dans notre exemple.
    	        // Ce qui veut dire que la requête enverra les villes commençant par la lettre L
    	        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    	        nameValuePairs.add(new BasicNameValuePair("ville","L"));
    	        // Envoie 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());
    	        }
    	        // Convertion 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_ville: "+json_data.getInt("ID_ville")+
    	                        ", Nom_ville: "+json_data.getString("Nom_ville")
    	                );
    	                // 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; 
    	    }
    	}
    Merci d'avance de votre aide.

    Cordialement

  2. #2
    Membre expert
    Avatar de MathiasSeguy
    Homme Profil pro
    Fondateur Android2EE - Formation Expertise Android
    Inscrit en
    Avril 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fondateur Android2EE - Formation Expertise Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 185
    Points : 3 692
    Points
    3 692
    Billets dans le blog
    6
    Par défaut
    Salut,
    C'est dur de lire ton code :) il y a la balise code # dans les icones.
    Ensuite, je veux bien voir ton JSON (une partie, ne nous mets pas les 8 Mo:)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse, je viens de modifier le code pour qu'il soit lisible (en effet c'est mieux).

    Le code JSON que me retourne le script PHP est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [
     {
        "ID_ville":"1",
        "Nom_ville":"Paris"
     },
     {  
        "ID_ville":"2",
        "Nom_ville":"Marseille"
     },
     {
       "ID_ville":"3",
       "Nom_ville":"Lyon"
     }]
    Merci de ton aide

  4. #4
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Saisis ton URL http://trouvetonfilm.hol.es/test.php dans cet outil : http://gendroid.univ-pau.fr/remoteDatabase.html

    PS: tu devrais mettre les valeurs entières en tant que telle dans le JSON
    Code json : Sélectionner tout - Visualiser dans une fenêtre à part
    {"ID_ville":1,"Nom_ville":"Paris"}
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

Discussions similaires

  1. Problème d'affichage des données depuis un Listview
    Par cadeau10 dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 13/05/2011, 14h42
  2. [MySQL] Problème d'affichage de données
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/08/2008, 23h06
  3. Problème d'affichage de données avec crystal report
    Par napegadie dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 07/12/2005, 15h45
  4. problème d'affichage de données
    Par geof_leouf dans le forum Access
    Réponses: 6
    Dernier message: 11/10/2005, 09h23
  5. [JTable] Problème d'affichage des données
    Par ddams dans le forum Composants
    Réponses: 2
    Dernier message: 15/09/2004, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo