| 266 | |
| 267 | Agora um outro exemplo, que faz acesso a banco de dados: |
| 268 | |
| 269 | {{{ |
| 270 | {wf_ajax_init} |
| 271 | |
| 272 | <script language="javascript"> |
| 273 | |
| 274 | {literal} |
| 275 | |
| 276 | function alterarValor(externoID, p_usuario, p_data, p_valor) |
| 277 | { |
| 278 | var resultAlterarValor = function(data) |
| 279 | { |
| 280 | if (data['valor']['data']['erro']) |
| 281 | { |
| 282 | alert(data['valor']['data']['erro']); |
| 283 | /* trata o erro */ |
| 284 | } |
| 285 | else |
| 286 | { |
| 287 | var externo = $(externoID); |
| 288 | externo.innerHTML = data['valor']['data']['valor']; |
| 289 | } |
| 290 | } |
| 291 | |
| 292 | var nc = new NanoController(); |
| 293 | nc.setWfUrl(); |
| 294 | nc.setSuccessHandler(resultAlterarValor); |
| 295 | nc.addVirtualRequest('valor', |
| 296 | { |
| 297 | action : 'definir_valores', |
| 298 | mode : 'valor' |
| 299 | }, |
| 300 | { |
| 301 | usuario: p_usuario, |
| 302 | data_hora: p_data, |
| 303 | valor: p_valor |
| 304 | }); |
| 305 | nc.sendRequest(); |
| 306 | $(externoID).innerHTML = '<font color="grey">atualizando..</font>'; |
| 307 | } |
| 308 | }}} |
| 309 | |
| 310 | A classe php invocada por este código !JavaScript seria: (class.ajax.definir_valores.php) |
| 311 | |
| 312 | {{{ |
| 313 | <?php |
| 314 | class definir_valores |
| 315 | { |
| 316 | var $db; |
| 317 | var $schema; |
| 318 | |
| 319 | function definir_valores() |
| 320 | { |
| 321 | $this->db = wf_create_object('wf_db'); |
| 322 | $this->db->connect(); |
| 323 | $this->schema = "ligacoes_telefonicas"; |
| 324 | } |
| 325 | |
| 326 | function valor($params) |
| 327 | { |
| 328 | $output = array(); |
| 329 | |
| 330 | $valor = str_replace(",", ".", str_replace(".", "", $params['valor'])); |
| 331 | $usuario = (int) $params['usuario']; |
| 332 | $data_hora = $params['data_hora']; |
| 333 | |
| 334 | if (!is_numeric($valor)) |
| 335 | $output['erro'] = "\"" . $params['valor'] . "\" é um valor inválido"; |
| 336 | else |
| 337 | { |
| 338 | $valor = (double) $valor; |
| 339 | $sqlStatement = "UPDATE {$this->schema}.ligacao_telefonica SET valor = ? WHERE (data_hora = ?) AND (usuario = ?)"; |
| 340 | $resultado = $this->db->query($sqlStatement, array($valor, $data_hora, $usuario)); |
| 341 | $this->db->disconnect(); |
| 342 | if ($resultado) |
| 343 | $output['valor'] = $params['valor']; |
| 344 | else |
| 345 | $output['erro'] = "Ocorreu um erro ao se tentar definir um valor para esta ligação."; |
| 346 | } |
| 347 | return $output; |
| 348 | } |
| 349 | } |
| 350 | ?> |
| 351 | }}} |