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

Responder a