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 :

JSON et Base de données Free


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 26
    Points : 22
    Points
    22
    Par défaut JSON et Base de données Free
    Bonjour,
    Je travaille actuellement sur un projet de développement d'une application de gestion de stock pour tablette Android.

    Lorsque l'application Android va s'exécuter, il se connectera au script PHP.
    Le script PHP va récupérer les données depuis la base de données MySQL. Ensuite les données seront encodées au format JSON et envoyées au système Android.
    Ensuite, l'application Android va obtenir ces données codées. Il les analysera et les affichera sur l'appareil Android.

    J'utilise la page perso (ou je stocke mes fichiers php) et le serveur mySQL offert par Free.
    Le problème étant que la version PHP de ces services est inférieur à 5.2, j'ai donc implémenté l'extension JSON.

    J'obtiens les erreurs suivantes en exécutant directement le fichier php sur ma page perso :

    Parse error: syntax error, unexpected T_VARIABLE in /mnt/111/sda/3/8/xxx/xxx.php on line 15
    Et l'erreur dans le LogCat d'eclipse lorsque je lance mon application :

    Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONArray
    Voici mon fichier PHP :

    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
    <?php
     
    include ('JSON.php');
     
         // create a new instance of Services_JSON
          $json = new Services_JSON();
     
    	  mysql_connect("sql.free.fr","xxx","xxx");
     
    	  mysql_select_db("xxx");
    	  $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'");
     
    	  while($row=mysql_fetch_assoc($sql) 
     
    	  $output[] = $json->encode($row); 
    	  echo ($output); 
     
    	  mysql_close();
    ?>
    Voici mon code java :

    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
    96
    97
    98
    99
    100
    101
    102
    package com.exemple.ville;
     
    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.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    public class ville extends Activity {
    	TextView txt;
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.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)); 
    	}
     
     
    	public static final String strURL = "http://xxxx.free.fr/xxxx.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("Nom", "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);
    			//"iso-8859-1"
    			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 pour l'attention que vous accorderez à mon problème

    GJuubz

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    C'est un problème purement php ici, rien à voir avec Android.

    Tu as des erreurs de synthaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while($row=mysql_fetch_assoc($sql)
    Manque une parenthèse fermante.

    On utilise pas de parenthèse sur un echo , et on ne peut pas faire un echo d'un tableau.

    A la limite ça pourrait être (en supposant que encode retourne une string :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($row=mysql_fetch_assoc($sql)) 
        $output[] = $row; 
     
    echo $json->encode($output);
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 26
    Points : 22
    Points
    22
    Par défaut
    Ça fonctionne, ENORME MERCI !

    Après seulement 5 jours de PHP, il y a forcément les petites erreurs de syntaxe qui deviennent les gros problèmes.

    Encore merci !

    Bonne fêtes !

    GJuubz

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accès base de donnée FREE depuis l'iPhone
    Par CedGex dans le forum Développement iOS
    Réponses: 1
    Dernier message: 15/02/2011, 17h00
  2. [MySQL] Code SQL base de donnée free , incorrect ?
    Par IXTOC-1 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/06/2010, 16h42
  3. [MySQL] Connexion base de données Free
    Par LyonM dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/09/2009, 20h50
  4. oregano serveur avec une base de donnée free.fr
    Par symphonia dans le forum Dynamique
    Réponses: 0
    Dernier message: 19/06/2008, 18h08
  5. Base de données externe free.fr
    Par hamtary dans le forum WinDev
    Réponses: 1
    Dernier message: 28/06/2005, 14h06

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