Json et sql

Messages postés
2
Date d'inscription
mardi 26 janvier 2016
Statut
Membre
Dernière intervention
26 janvier 2016
-
Bonjour,
je travaille sur application android et c'est la premiere fois que je touche au java
mon application est connéctée a une bdd sql distante, mon application doit recuperer les données de la table produit qui se trouve dans ma base et les afficher dans une liste ou spinner dans l'interface android. le probleme c'est que suand j'essaye de rajouter une condition WHERE il veut pas laccepter et ma liste est vide, je sais pas si c la syntaxe de json qui est fausse ou autre chose
voici mon code php et svp si quelqun qui a deja rencontré ce problem qu'il me donne une piste
merci


  <?php
                include("Connection.php");

                $result=mysqli_query($connect,"SELECT  nom FROM produit WHERE mat-act = 1");

                while($e=mysqli_fetch_array($result, MYSQLI_ASSOC))
     $output[]=$e; 
                {
                    ?>

                <?php }
  print(json_encode($output)); 
  $mysqli->close(); 


    ?>

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite 

2 réponses

Messages postés
14636
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
9 octobre 2019
90
0
Merci
Hello,

J'ai déplacé ta demande dans la section PHP car ton souci n'est pas lié à Java.
J'ai, de plus, édité ton message pour rajouter les balises 'code'. Plus d'infos dans l'encadré que j'ai ajouté. N'oublie pas de les ajouter la prochaine fois.
Commenter la réponse de BunoCS
Messages postés
26486
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2019
316
0
Merci
Bonjour,


Beaucoup d'erreurs dans ton code.
Des choses placées en dehors de tes accolades dans ta boucle while ... ???
L'utilisation de l'écriture OBJET ET de l'écriture PROCEDURALE pour mysqli ...
Aucun débogage en cas d'erreur....
Un nom de champ avec un tiret ... ( A EVITER ABSOLUMENT. )
-->> Mais si tu tiens à l'utiliser... mets des back-quotes autour.
-->> Dans l'idéal... mettre un underscrore à la place du tirer

Enfin bon...
Testes ceci :
//Connexion à la BDD
require_once("Connection.php");

//Requete
$sql = "SELECT  nom 
        FROM produit 
        WHERE `mat-act` = 1";
				
$result=mysqli_query($connect,$sql) or die( "<br><b>ERROR ! </b>".mysqli_error($connect) ." <u>Dans la requête :</u><br>".$sql);

//On stocke le résultat dans un Array :
$output = mysqli_fetch_all($result);

//fermeture de la connexion
mysqli_close($connect); 

//Renvoie en JSON
print(json_encode($output)); 


lolittakey
Messages postés
2
Date d'inscription
mardi 26 janvier 2016
Statut
Membre
Dernière intervention
26 janvier 2016
-
merci pour ta reponse , mais mon code marche bien il recupere tous les données mais le seul probleme que j'ai , c'est qu il recupere pas le contenu de la requete sql avec condition WHERE
je vous rappel que je travaille sur une application android, et les données s'affiche bien sur fichier php meme avec condition WHERE mais elles saffichent pas dans mon interface android cest comme si il naccepte pas la condition WHERE; je suppose que cest json qui est le probleme ,
voici le code du fichier qui recupere les données dans l interfae android



public class produit extends ActionBarActivity {

ArrayList<String> listItems=new ArrayList<String>();
ArrayAdapter<String> adapter;
HttpURLConnection urlConnection = null;
Spinner sp1;
Button button2;


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_matiere);
sp1=(Spinner)findViewById(R.id.spinner6);

adapter=new ArrayAdapter<String>(this,R.layout.spin_layout,R.id.text,listItems);
sp1.setAdapter(adapter);
button2=(Button)findViewById(R.id.button10);


button2.setOnClickListener(new Button.OnClickListener(){

public void onClick(View arg0) {

String message1=sp1.getSelectedItem().toString();
Intent intent=new Intent();
intent.putExtra("MESSAGE",message1);

setResult(3,intent);


finish();


}
});


}
public void onStart(){
super.onStart();
BackTask bt=new BackTask();
bt.execute();
}
private class BackTask extends AsyncTask<Void,Void,Void> {
ArrayList<String> list;
protected void onPreExecute(){
super.onPreExecute();
list=new ArrayList<String>();
}
protected Void doInBackground(Void...params){
InputStream is=null;
String result="";
try{



URL url = new URL("http://xxxx/yyyy");
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();
is = urlConnection.getInputStream();



}catch(IOException e){
e.printStackTrace();
}

//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"));
String line = null;
while ((line = reader.readLine()) != null) {
result+=line;
}
is.close();
//result=sb.toString();
}catch(Exception e){
e.printStackTrace();
}
// parse json data
try{
JSONArray jArray =new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject jsonObject=jArray.getJSONObject(i);
// add interviewee name to arraylist
list.add(jsonObject.getString("nom"));





}
}
catch(JSONException e){
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result){
listItems.addAll(list);
adapter.notifyDataSetChanged();
}
}

}
jordane45
Messages postés
26486
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 octobre 2019
316 > lolittakey
Messages postés
2
Date d'inscription
mardi 26 janvier 2016
Statut
Membre
Dernière intervention
26 janvier 2016
-
1 **** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

.
2 - As tu testé le code que je t'ai donné au moins ??
Commenter la réponse de jordane45