Olá Samuel, acredito que vc está sofrendo com um problema um tanto comum em flex, o assícronismo deve estar lhe prejudicando pois pelo que entendi ele está mandando os dados para o backend dentro do for porém quando fazemos isso ele não espera que a requisição termine e já manda outra, de forma que a primeira não foi terminada, quando vc usa o debug pode ser que vc veja tudo certinho pois a demora de ficar teclando F6 ajude nesse caso, então para resumir aconselho vc criar um array de notas e enviar todas as notas de uma vez só para o backend apois o for, no backend vc percorre e persiste os dados, no backend vc não tera o mesmo problema que no flex, ele ficara esperando a linha ser executada para ir para a proxima.
espero ter ajudado. att: -- Rogério Casal Software Developer Fone: 81 8805-4303 www.rogeriocasal.com.br Em 5 de janeiro de 2011 10:15, Samuel Soares <samuelesoa...@gmail.com>escreveu: > Estou testando um sistema de gerar avaliações escolares on-line. > Usamos o Flex 3, PHP e Zend. Basicamente funciona assim: o aluno, ao > acessar a área de avaliações, clica na avaliação disponível. Ao > acessar a tela aparece o título da avaliação, a disciplina e o nome do > professor. As questões estão dispostas em um tabNavigator, cada > questão é uma guia. Todas as possíveis respostas das questões são > radiobuttons, totalizando no máximo 5 possíveis respostas para cada > questão. Após marcar as respostas o aluno clica no botão ‘Finalizar > avaliação’ e o sistema já corrige a prova e armazena o resultado. Se a > prova for com duas pessoas, é só marcar um checkbox e escolhe o > segundo aluno. > > Existe um array (arrayRespostas) que armazena as respostas > selecionadas pelo aluno. > > Tá tudo funcionando corretamente, o aluno acessa, visualiza todos os > dados e as questões. As possíveis respostas, resolve a avaliação. > Tenho um botão de teste que ao clicar nele, baseado no arrayRespostas, > visualizo todas as respostas e se estão corretas ou não. > > O problema está na hora de gravar, ele grava todos os registros. Mas > não com os valores corretos. Já monitorei via o programa Charles e os > dados são mandados corretamente para gravação. Mas quando grava, cada > hora grava as informações de um jeito. Por exemplo, os dados como o ID > da avaliação, ID da turma são dados que não mudam. No Charles está > tudo certo, mas quando grava, principalmente nos registros finais, > outros ID’s são adicionados nos campos. > A quantidade de registros equivale as questões, por exemplo, 5 > questões = 5 registros. Mas as informações dos registros não batem com > o que o Flex passa para o PHP. > > A dúvida é, tem algum limite de requisições para o RemoteObject ? > Baseado no exemplo, envio 5 requisições de inclusão. Parece que ele > “mistura” os valores dos registros. Já fiz várias modificações, vários > testes, mas nada. Talvez outras pessoas olhando o sistema, veja o erro > que eu não estou vendo. > > Segue abaixo os códigos: > > Instruções SQL capturadas através do PHP e gravadas em um arquivo TXT. > Tem instrução aí que tem até um GUID. > > INSERT INTO ge_notas_avaliacoes(nav_turma, nav_aluno, nav_avaliacao, > nav_questao, nav_resposta, nav_nota)VALUES('5', '4', '3', '1', '3', > '1.00') > INSERT INTO ge_notas_avaliacoes(nav_turma, nav_aluno, nav_avaliacao, > nav_questao, nav_resposta, nav_nota)VALUES('5', '3', '3', '1', '3', > '1.00') > INSERT INTO ge_notas_avaliacoes(nav_turma, nav_aluno, nav_avaliacao, > nav_questao, nav_resposta, nav_nota)VALUES('5', '4', '3', '5', '2', > '0') > INSERT INTO ge_notas_avaliacoes(nav_turma, nav_aluno, nav_avaliacao, > nav_questao, nav_resposta, nav_nota)VALUES('5', '3', '3', '1.00', '2', > '0') > INSERT INTO ge_notas_avaliacoes(nav_turma, nav_aluno, nav_avaliacao, > nav_questao, nav_resposta, nav_nota)VALUES('5', '4', '3', '1.00', '1', > '0') > INSERT INTO ge_notas_avaliacoes(nav_turma, nav_aluno, nav_avaliacao, > nav_questao, nav_resposta, nav_nota)VALUES('5', '3', '3', '3', '1', > '0') > INSERT INTO ge_notas_avaliacoes(nav_turma, nav_aluno, nav_avaliacao, > nav_questao, nav_resposta, nav_nota)VALUES('5', '4', '3', '3', '3', > '1.00') > INSERT INTO ge_notas_avaliacoes(nav_turma, nav_aluno, nav_avaliacao, > nav_questao, nav_resposta, nav_nota)VALUES('5', '3', '3', '1.00', '4', > '1.00') > INSERT INTO ge_notas_avaliacoes(nav_turma, nav_aluno, nav_avaliacao, > nav_questao, nav_resposta, nav_nota)VALUES('5', '4', '3', > '068507D5-18F9-FCC8-62FB-000028D1C54A', '2', '1.00') > INSERT INTO ge_notas_avaliacoes(nav_turma, nav_aluno, nav_avaliacao, > nav_questao, nav_resposta, nav_nota)VALUES('5', '3', '3', '1', '2', > '1.00') > > CODIGO AS3: > for (i=0; i < this.ArrayRespostas.length; i++) > { > var nota:Modelo_Notas_Avaliacoes = new > Modelo_Notas_Avaliacoes(); > nota.turma = this.IDTurma; > nota.aluno = this.IDAluno; > nota.avaliacao = this.IDAvaliacao; > nota.questao = > this.ArrayRespostas[i]["questao"]; > nota.resposta = > this.ArrayRespostas[i]["resposta"]; > nota.nota = this.ArrayRespostas[i]["nota"]; > > roNotas.IncluirNota(this.IDEscola, nota); > > if (check2aluno.selected == true) > { > var nota2:Modelo_Notas_Avaliacoes = > new > Modelo_Notas_Avaliacoes(); > nota2.turma = this.IDTurma; > nota2.aluno = > cboAlunos.selectedItem.alu_id; > nota2.avaliacao = this.IDAvaliacao; > nota2.questao = > this.ArrayRespostas[i]["questao"]; > nota2.resposta = > this.ArrayRespostas[i]["resposta"]; > nota2.nota = > this.ArrayRespostas[i]["nota"]; > > roNotas.IncluirNota(this.IDEscola, > nota2); > } > } > > CÓDIGO PHP: > > function IncluirNota($escola, $nota=Modelo_Notas_Avaliacoes) > { > // Conecta o banco de dados > $bd = new BancoDeDados(); > $cn = $bd->ConectarEscola($escola); > > $sql = ""; > $sql .= "INSERT INTO ge_notas_avaliacoes(nav_turma, > nav_aluno, > nav_avaliacao, nav_questao, nav_resposta, nav_nota)"; > $sql .= "VALUES("; > // Turma > $sql .= "'" . $nota->turma . "', "; > // Aluno > $sql .= "'" . $nota->aluno . "', "; > // Avaliacao > $sql .= "'" . $nota->avaliacao . "', "; > // Questao > $sql .= "'" . $nota->questao . "', "; > // Resposta > $sql .= "'" . $nota->resposta . "', "; > // Nota > $sql .= "'" . $nota->nota . "')"; > > $consulta = mysql_query($sql) or die(mysql_error() . $sql); > > // Grava o arquivo txt > $fp = fopen("arquivo.txt", "a"); > $escreve = fwrite($fp, $sql . "\n"); > fclose($fp); > > > if (!mysql_error()) > { > return true; > } > else > { > return false; > } > } > > > Agradeço a ajuda. > > -- > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com > Para sair da lista, envie um email em branco para > flexdev-unsubscr...@googlegroups.com > Mais opções estão disponíveis em http://groups.google.com/group/flexdev -- Rogério Casal Software Developer Fone: 81 8805-4303 www.rogeriocasal.com.br -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev