Per uppare scores online e fare una classica, ci serve un programma che farà da client, java su android, e una parte lato server in PHP, l'app invierà gli scores, e lato server, lo script in PHP scriverà gli scores nel file che chiameremo Records.txt. In questo file, ci saranno tutti gli scores, e poi verrano ordinati dal più grande al più piccolo.
Nella main activity inseriamo due EditText, uno per il name, uno per lo score, e il metodo PostDataOnPHP:
Il metodo PostDataOnPHP(), prende tre argomenti, url, code, e data, url è ovviamente dove sta il nostro file.php sul server, per esempio "www.ilmiosito.it/file.php", code è la stringa che passeremo allo script php per fargli capire che è l'app giusta, e non un programma qualunque a mandargli dati. In fine, data, anche questa una stringa, che ovviamente conterrà lo score da uppare.codice:eText = (EditText)findViewById(R.id.editText); eRecord = (EditText)findViewById(R.id.editText1); private void PostDataOnPHP(String url, String code, String data) { // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); try { // Add your data List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); nameValuePairs.add(new BasicNameValuePair(code, data)); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); // Execute HTTP Post Request HttpResponse response = httpclient.execute(httppost); } catch (ClientProtocolException e) { // TODO Auto-generated catch block } catch (IOException e) { // TODO Auto-generated catch block } }
Inseriamo quindi un bottone nella nostra main activiy:
qui semplicemente, quando premiamo il bottone invierà il nostro score.codice:Button buttonSend = (Button)findViewById(R.id.send); buttonSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub PostDataOnPHP("http://www.ilmiosito.it/file.php", "code001", eRecord.getText()+": "+eText.getText()); } });
“code001” vedremo la sua utilità nel file.php fra poco, eRecord.getText(), è la variabile che conterrà il nostro score che abbiamo scritto nel campo eRecord, e name è la stringa con il nostro nome che abbiamo scritto nel campo eText.
Adesso parliamo del lato server:
Qui lo script in php, quando arrivano i dati, controlla che il codice sia “code001”, quello che abbiamo visto in precedenza, e quindi dopo esegue i calcoli, altrimenti, restituisce un echo "post code sbagliato".codice:<?php if (isset($_POST['code001']) && $_POST['code001'] != '') { $your_string = $_POST['code001']; $file = 'Records.html'; $current = file_get_contents($file); $current .= $your_string . ';*~'; file_put_contents($file, $current); $array = explode("*~", $current); sort($array, SORT_NUMERIC); $arrayReversed = array_reverse($array); $file2 = 'Records.txt'; file_put_contents($file2, $arrayReversed); } else { echo "post code sbagliato"; } ?>
Guardiamo che calcoli fa lo script, in caso la stringa passata sia code001:
La prima riga, prende la stringa che abbiamo inviato da android, $_POST[’code001’], e la assegna a $your_string, apre il file Records.html, inserisce tutti i dati dentro la variabile $current, aggiunge poi a current la nostra stringa $your_string, e poi aggiunge dei valori di chiusura riga, “;*~”, e infine, scrive current dentro il file Records.html, aggiornandolo.
A questo punto lo script, non fa altro che creare un nuovo array, suddivide $current ai caratteri “*~”, poi ordina tutti i numeri in sort_numeric, alla riga “sort($array, SORT_NUMERIC);”, e subito dopo ribalta l’array, ( $arrayReversed = array_reverse($array); )questo perchè abbiamo bisogno che i numeri più grandi siano in cima all’array, e non in fondo, gli score più alti vanno prima in classifica ovviamente.
Una volta fatto il tutto, scrive $arrayReversed nel file Records.txt, che adesso andremo a leggere e parserizzare su android.
Creeremo una nuova ListActivity, leggeremo il file Records.txt, e inseriremo i dati dentro una lista:
Fonte: http://www.startingpixel.comcodice:public class A_Scores extends ListActivity { private String myURL = "http://www.ilmiosito.it/Records.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); try { // Create a URL for the desired page URL url = new URL(myURL); // Read all the text returned by the server BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream())); String str = br.readLine(); br.close(); if(str != "") { String[] array = str.split(";"); for(int n = 0; n < array.length; n++) { String temp = array[n]; array[n] = (n+1)+") "+temp; } setListAdapter(new ArrayAdapter<String>(this, R.layout.listff, array)); } } catch (MalformedURLException e) { } catch (IOException e) { } } }

LinkBack URL
About LinkBacks
Rispondi quotando