|
Ok Shadonwk, ahí va, pero tened en cuenta que soy un recien llegado a esto del flex. Es un ejemplo muy simple, tengo una tabla 'clientes' en MySQL con solo tres campos. Cuando se inicia el programa cargo el único registro que tiene, el cíodigo '0001', aunque se puede modificar para cargar cualquier otro usando una variable que contenga el número de código a cargar. Lo visualizo en el correspondiente datagrid y en un formulario asociado al datagrid. modifico cualquier campo y por medio del botón 'grabar' actualizo el registro en la base de datos.
lado del cliente:
<?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" xmlns:abmclientes="services.abmclientes.*" xmlns:valueObjects="valueObjects.*" width="1024" height="700"> <fx:Script> <![CDATA[ import flash.events.MouseEvent; import mx.events.FlexEvent; import mx.controls.Alert;
protected function dataGrid_creationCompleteHandler(event:FlexEvent):void { getItemResult.token = aBMClientes.getItem('0001'); }
protected function button_clickHandler(event:MouseEvent):void { updateItemResult.token = aBMClientes.updateItem(cLIENTES); }
]]> </fx:Script> <fx:Declarations> <s:CallResponder id="getItemResult" result="cLIENTES = getItemResult.lastResult[0] as CLIENTES"/> <abmclientes:ABMClientes id="aBMClientes" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/> <valueObjects:CLIENTES id="cLIENTES"/> <s:CallResponder id="updateItemResult"/> <!-- Place non-visual elements (e.g., services, value objects) here --> </fx:Declarations> <s:Panel x="10" y="10" width="699" height="164"> <mx:Form x="5" y="6" width="684"> <mx:FormItem label="NOMBRE"> <s:TextInput id="nOMBRETextInput" text="@{cLIENTES.NOMBRE}"/> </mx:FormItem> <mx:FormItem label="CODIGO"> <s:TextInput id="cODIGOTextInput" text="@{cLIENTES.CODIGO}" width="563"/> </mx:FormItem> <mx:FormItem label="POBLACION"> <s:TextInput id="pOBLACIONTextInput" text="@{cLIENTES.POBLACION}" width="564"/> </mx:FormItem> </mx:Form> </s:Panel> <mx:DataGrid x="11" y="202" id="dataGrid" creationComplete="dataGrid_creationCompleteHandler(event)" dataProvider="{getItemResult.lastResult}" height="73"> <mx:columns> <mx:DataGridColumn headerText="NOMBRE" dataField="NOMBRE"/> <mx:DataGridColumn headerText="CODIGO" dataField="CODIGO"/> <mx:DataGridColumn headerText="POBLACION" dataField="POBLACION"/> </mx:columns> </mx:DataGrid> <s:Button x="450" y="202" label="GRABAR" id="button" click="button_clickHandler(event)"/> </s:WindowedApplication>
lado del servidor:
<?php class ABMClientes { public function connect() { $connection = mysql_connect("127.0.0.1", "root", "") or die(mysql_error()); mysql_select_db("gestion", $connection) or die(mysql_error()); } public function getAllItems() { $this->connect(); $sql = "SELECT * FROM clientes"; $result = mysql_query($sql) or die('SQL Error (TSC)): ' . mysql_error()); return $result; } public function getItem($itemID) { $this->connect(); $itemID = mysql_real_escape_string($itemID); $sql = "SELECT * FROM clientes where CODIGO=$itemID"; $result = mysql_query($sql) or die('SQL Error (TSC)): ' . mysql_error()); return $result; } public function createItem($item) { $this->connect(); $sql = "INSERT INTO clientes (NOMBRE, POBLACION, CODIGO) VALUES ('$item->NOMBRE', '$item->POBLACION', '$item->CODIGO')"; $result = mysql_query($sql) or die('SQL Error (TSC)): ' . mysql_error()); return mysql_insert_id(); } public function updateItem($item) { $this->connect(); $sql = "UPDATE clientes SET NOMBRE = '$item->NOMBRE', POBLACION = '$item->POBLACION', CODIGO = '$item->CODIGO' WHERE CODIGO = $item->CODIGO"; $result = mysql_query($sql) or die('SQL Error (TSC)): ' . mysql_error()); } public function deleteItem($itemID) { $this->connect(); $itemID = mysql_real_escape_string($itemID); $sql = "DELETE FROM clientes WHERE CODIGO = $itemID"; $result = mysql_query($sql) or die('SQL Error (TSC)): ' . mysql_error()); } public function count() {
$this->connect(); $sql = "SELECT * FROM clientes"; $result = mysql_query($sql) or die('Query failed: ' . mysql_error()); $rec_count = mysql_num_rows($result); mysql_free_result($result); return $rec_count;
} public function getItems_paged($startIndex, $numItems) {
$this->connect(); $startIndex = mysql_real_escape_string($startIndex); $numItems = mysql_real_escape_string($numItems); $sql = "SELECT * FROM clientes LIMIT $startIndex, $numItems"; $result = mysql_query($sql) or die('Query failed: ' . mysql_error()); return $result; } } ?>
Y eso es todo, lo importante para mi era la llamada al procedimiento updateItem que no tenía claro cómo hacerlo, llevo solo 15 días con estos temas, y no veia la forma. Ahora ya tengo claro como usar cada uno de los métodos de la clase.
Saludos, y aquí estoy para lo que pueda ayudar dentro de lo poco que sé.
|
Por AnakinX
Envíale un mensaje privado
|