Thank you Ian, I could solved the problem, with your indications.
Regards Andres On Wed, Jun 10, 2009 at 12:29 PM, Ian Bambury <[email protected]> wrote: > In the PHP, I do something like this: > > $result_array = array(); > > while($row = mysql_fetch_assoc($result)) > { > $result_array[] = $row; > } > $data["result"] = $result_array; > > die(urlencode(json_encode($data))); > > Then in the GWT: > > final String decodedText = URL.decodeComponent(responseText); > > try > { > data = JSONParser.parse(decodedText).isObject(); > } > catch (final Exception e) > { > // Error code here > } > > result = data.get("result").isArray(); > final int count = result.size(); > > for(int i = 0; i < count; i++) > { > final JSONObject o = result.get(i).isObject(); > > // Process individual object (i.e. one database result line) > here > } > > > Ian > > http://examples.roughian.com > > > 2009/6/10 ANDRES BRUN <[email protected]> > >> Hi Ian >> Thank you for your answer, I think that I'm not walk for the wrong way but >> haven't the results that I hope, this is my code: >> >> PHP >> <?php >> //Incluir JSON.php >> require_once("JSON.php"); >> >> //Consulto la Base de Datos MySQL y obtengo los resultados >> >> $conector = mysql_connect('localhost','root','doyan2009') or >> die(mysql_error()); >> mysql_select_db('music_princess') or die(mysql_error()); >> >> $sqlQuery = "select * from tracks order by artista"; >> >> $dataReturned = mysql_query($sqlQuery) or die(mysql_error()); >> >> $i = 0; >> >> while($row = mysql_fetch_array($dataReturned)){ >> >> $value{"item"}{$i}{"ruta_archivo"}=$row['ruta_archivo']; >> $value{"item"}{$i}{"artista"}=$row['artista']; >> $value{"item"}{$i}{"track"}=$row['track']; >> $i++; >> } >> >> $json = new Services_JSON(); >> $output = $json->encode($value); >> print($output); >> >> ?> >> >> GWT >> >> import com.google.gwt.user.client.HTTPRequest; >> import com.google.gwt.user.client.ResponseTextHandler; >> import com.google.gwt.user.client.ui.Grid; >> import com.google.gwt.user.client.ui.TextBox; >> import com.google.gwt.user.client.ui.Label; >> import com.google.gwt.user.client.ui.Button; >> import com.google.gwt.user.client.ui.FocusPanel; >> import com.google.gwt.user.client.ui.HTML; >> import com.google.gwt.user.client.ui.ClickListener; >> import com.google.gwt.user.client.ui.Widget; >> >> >> >> >> >> public class PSEscucharMusica { >> >> /* >> * The URL where we go to do the search. >> */ >> private String DEFAULT_SEARCH_URL = " >> http://localhost:90/GWT/PSMusic/CargarLista.php"; >> >> /* >> * Some widgets that we go to need. >> */ >> >> private Button b1 = new Button(); >> private Grid gdOut = new Grid(2,1); >> private Grid childGrid = new Grid(5,2); >> >> private int itemNumber = 0; >> >> >> public Widget initializeMainForm() { >> >> /* >> * Here we initialize and setup a panel for use it as container for the >> search form and >> * the results. >> */ >> >> FocusPanel fpn = new FocusPanel(); >> Grid gd = new Grid(3,2); >> >> b1.setText("Cargar Lista"); >> b1.addClickListener(new SearchButtonClickListener()); >> gd.setWidget(2, 0, b1); >> >> gdOut.setWidget(0,0,gd); >> >> gdOut.setBorderWidth(1); >> gdOut.setWidth("280px"); >> >> childGrid.setCellPadding(0); >> childGrid.setCellSpacing(0); >> childGrid.setWidth("490px"); >> >> fpn.add(gdOut); >> >> return fpn; >> } >> >> >> private class SearchButtonClickListener implements ClickListener { >> /* >> * (non-Javadoc) >> * @see >> com.google.gwt.user.client.ui.ClickListener#onClick(com.google.gwt.user.client.ui.Widget) >> */ >> public void onClick(Widget sender) { >> /* >> * When the user click the button we fetch the URL. >> */ >> itemNumber = 0; >> doFetchURL(); >> } >> >> >> private void doFetchURL() { >> /* >> * Here we fetch the URL and call the handler >> */ >> b1.setText("Cargando ..."); >> if (!HTTPRequest.asyncGet(DEFAULT_SEARCH_URL, new >> JSONResponseTextHandler())) { >> >> b1.setText("Search"); >> } >> } >> } >> >> private class JSONResponseTextHandler implements ResponseTextHandler { >> /* >> * (non-Javadoc) >> * @see >> com.google.gwt.user.client.ResponseTextHandler#onCompletion(java.lang.String) >> */ >> >> public void onCompletion(String responseText) { >> /* >> * When the fetch has been completed we parse the JSON response and >> * display the result >> */ >> >> JSONObject jsonObject; >> try { >> jsonObject = JSONParser.parse(responseText); >> displayJSONObject(jsonObject); >> >> } catch (JSONException e) { >> >> } >> >> b1.setText("Cargar"); >> >> } >> >> >> >> private void displayJSONObject(JSONObject jsonObject) { >> /* >> * Here we clear the grid and fill it with the new values. >> */ >> childGrid.clear(); >> requestChildrenGrid(jsonObject); >> gdOut.setWidget(1,0,childGrid); >> >> } >> >> private void requestChildrenGrid(JSONValue jsonValue){ >> >> /* >> * Here we fill the grid. >> */ >> >> >> JSONObject jsonObject; >> if(jsonValue.isArray() != null){ >> for(int i = 0; i < jsonValue.isArray().size();i++){ >> requestChildrenGrid(jsonValue.isArray().get(i)); >> childGrid.setWidget(itemNumber,0,new HTML("<HR/>")); >> childGrid.setWidget(itemNumber,1,new HTML("<HR/>")); >> >> >> itemNumber++; >> int resizeNumber = itemNumber + 1; >> childGrid.resize(resizeNumber,2); >> } >> } else { >> >> if ((jsonObject = jsonValue.isObject()) != null) { >> >> String[] keys = jsonObject.getKeys(); >> int valida = 0; >> >> for (int i = 0; i < keys.length; ++i) { >> String key = keys[i]; >> childGrid.setWidget(itemNumber,0,new HTML("<B>"+ key >> +":</B>")); //Nombre Campo >> childGrid.setWidget(itemNumber,1,new HTML("<a >> href="+jsonObject.get(key).toString()+">"+jsonObject.get(key).toString()+ >> "</a>" )); //Valor Campo >> >> requestChildrenGrid(jsonObject.get(key)); >> >> itemNumber++; >> int resizeNumber = itemNumber + 1; >> childGrid.resize(resizeNumber,2); >> valida = 1; >> }/* >> if(valida != 0){ >> PSMenu mn = new PSMenu(); >> mn.presentarVentana(); >> }*/ >> >> } else if (jsonValue != null) { >> // Only JSONObject, and JSONArray do anything special with >> toString, so >> // it is safe to handle all non-null cases by simply using >> toString >> // >> >> } else { >> // >> } >> >> >> >> } >> >> >> } >> >> } >> >> } >> >> That works, but I can't manage the JSON result. I want take one to one the >> results of the PHP but I can't. >> >> I hope that your help me. >> >> Thank you again. >> >> Regards >> >> Andrés >> >> >> On Sat, Jun 6, 2009 at 8:35 AM, Ian Bambury <[email protected]> wrote: >> >>> Hi Andrés, >>> >>> You need to send a request from your GWT app to the PHP script via a >>> requestbuilder >>> >>> >>> final RequestBuilder builder = new >>> RequestBuilder(RequestBuilder.POST, url); >>> builder.setHeader("Content-Type", >>> "application/x-www-form-urlencoded"); >>> try >>> { >>> builder.sendRequest(parms, callback); >>> } >>> catch (final RequestException e) >>> { >>> submissionError(url, e); >>> } >>> >>> In your PHP code, return the database results as JSON >>> >>> die(urlencode(json_encode($data))); >>> >>> Back in the GWT app, in the callback routine, extract the data. There are >>> loads of checks you might like to do before this (check for a valid return >>> and not a PHP script error, for example). >>> >>> >>> final String decodedText = URL.decodeComponent(responseText); >>> >>> try >>> { >>> data = JSONParser.parse(decodedText).isObject(); >>> } >>> catch (final Exception e) >>> { >>> // Error code here >>> } >>> >>> And then check that you got back what you expected. In the data, you >>> might like to always return a status and check if the script completed >>> successfully. Mine include >>> >>> success - completed correctly, no message >>> message - completed correctly with a message for the user >>> warning - script did not complete as expected - message for the user >>> (e.g. search returned no results, login failed, etc) >>> error - script caught a *real*error - SQL error etc. >>> >>> but I have others >>> >>> Ian >>> >>> http://examples.roughian.com >>> >>> >>> >>> 2009/6/5 ANDRES BRUN <[email protected]>: >>> >>> > Hello Everybody >>> > I'm trying to implement a code that permit me integrate PHP, GWT, >>> MYSQL, I >>> > was testing and implementing different examples but I don't understand >>> > really good, which is the correct way to send data with JSON and >>> > principally. How I can receive that data in GWT? Please, I'm not newbie >>> in >>> > Programation but I'm really newbie in GWT, and this version 1.6 is >>> really >>> > difficult to learn. Somebody can help me with a good example "for >>> > dummies"... jajaja. >>> > Thank you >>> > -- >>> > Andrés Brun >>> > >>> > >>> > >>> > >>> >>> >> >> >> -- >> ANDRES BRUN >> ------------------------------------------------------------ >> WebSite Andres Brun http://www.andresbrun.tk >> Blog - http://doyan2007.blogspot.com/ >> WebSite http://www.prolinetsystems.tk >> GWT - http://groups.google.com/group/Google-Web-Toolkit?hl=en >> >> >> > > > > -- ANDRES BRUN ------------------------------------------------------------ WebSite Andres Brun http://www.andresbrun.tk Blog - http://doyan2007.blogspot.com/ WebSite http://www.prolinetsystems.tk GWT - http://groups.google.com/group/Google-Web-Toolkit?hl=en --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/Google-Web-Toolkit?hl=en -~----------~----~----~----~------~----~------~--~---
