- Forum-Beiträge: 467
28.11.2010, 14:09:09 via Website
28.11.2010 14:09:09 via Website
Ich habe selber, als ich mich mit diesem Thema auseinandergesetzt habe, keinen derartigen Artikel gefunden!
Die Zutaten:
1 Server
2 Eier
Eine Prise php Kenntnisse
Natürlich Eclipse mit der laufenden Android Sdk
und gute Kenntnisse in Android & Java.
Vorbereitung:
Ihr legt eine MySql Tabelle an (Wer noch einen Server und Zugriff auf MySql Datenbanken braucht kann sich hier kostenlos anmelden), ich habe die Tabelle 'user' genannt mit den Feldern 'id', 'name', 'passwort' und 'email'.
Und zuletzt ein neues Projekt anlegen, dass ich gleichnamig zur tabelle user genannt habe!
Die Zubereitung:
Der erste Schritt war die Php Datei zu erstellen:
Hier mein Beispiel:
2mysql_connect("deinhost","deinusername","deinpasswort");
3mysql_select_db("deinedatenbank");
4
5$q=mysql_query("SELECT * FROM user");
6while($e=mysql_fetch_assoc($q))
7 $output[]=$e;
8
9print(json_encode($output));
10
11mysql_close();
12?>
ihr könnt natürlich alles möglich auswählen wie ihr wollt aber ich habe bewusst erstmal die Abfrage simpel gehalten!
Diese php Datei muss dann auf euren Server hochgeladen werden so dass sie unter http://deinehomepage.de/deinephpDatei.php
abrufbar ist!
Als 2. öffnet ihr gleich die manifest.xml in eurem Projekt und fügt eine sehr wichtige Zeile ein die sehr häufig vergessen wird:
Dann ändert ihr eure bisherige Activity folgendermaßen ab:
2 InputStream is;
3 ArrayList<String> results = new ArrayList<String>();
4 JSONObject json_data;
5
6@Override
7 public void onCreate(Bundle savedInstanceState) {
8 super.onCreate(savedInstanceState);
9 getData();
10 }
2String result = "";
3 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
4
5 try{
6 HttpClient httpclient = new DefaultHttpClient();
7 HttpPost httppost = new HttpPost("http://deinehomepage.de/deinephpDatei.php");
8 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
9 HttpResponse response = httpclient.execute(httppost);
10 HttpEntity entity = response.getEntity();
11 is = entity.getContent();
12 }catch(Exception e){
13 Log.e("log_tag", "Fehler bei der http Verbindung "+e.toString());
14 }
In diesem Abschnitt wird die Verbindung zu der Webseite und somit auch zu der Php Datei hergestellt!
Wenn der Url richtig eingegeben wurde und existiert dürfte eigentlich kein Fehler in der Logcat stehen.
Im nächsten Abschnitt werden die Tabellendaten, die von der Php Datei ausgelesen wurden in dem 'String result' gespeichert!
2 BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
3 StringBuilder sb = new StringBuilder();
4 String line = null;
5 while ((line = reader.readLine()) != null) {
6 sb.append(line + "n");
7 }
8 is.close();
9 result=sb.toString();
10 }catch(Exception e){
11 Log.e("log_tag", "Error converting result "+e.toString());
12 }
Auch hier dürfte nichts in der Logcat erscheinen wenn ihr alle Schritte genau befolgt habt.
Jetzt wird der 'String result' in einen JSONArray convertiert so kann er leichter ausgelesen werden!
2 JSONArray jArray = new JSONArray(result);
3 for(int i=0;i<jArray.length();i++){
4 json_data = jArray.getJSONObject(i);
5 results.add((String) json_data.get("id") + " "+ json_data.get("name"));
6 }
7 fillList();
8 }
9 catch(JSONException e){
10 Log.e("log_tag", "Error parsing data "+e.toString());
11 }
12 }
Und zu guter letzt wird results in die ListView geschrieben:
2 this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, results));
3 }
und jetzt müssten die Daten aus der Tabelle erscheinen!
Ich habe das ganze noch schöner gestaltet mit einem ProgressDialog damit man sieht wann er läd aber das ist ganz euch überlassen!
Für Rechtschreibfehler entschuldige ich mich und Fragen, Anregungen und Verbesserungsvorschläge sind erwünscht!
Viel Spaß beim Coden!
EDIT: Hier könnt ich euch die Java datei runterladen mit dem ProgressDialog!
— geändert am 27.09.2011, 19:50:09
"Hard work beats talent, when talent fails to work hard"
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.