ahsc 1 Denunciar post Postado Dezembro 27, 2008 Olá a todos. Depois de muito tentar resolver esse probleminha e não conseguir, resolvi pedir ajuda a quem puder me tirar a seguinte dúvida: Tô montando um sisteminha de notas e me deparei com o seguinte problema: Montei uma estrutura que pega as notas do bd (bimestral) e executa uma conta de média aritmética simples para saber se o aluno passou ou não em uma determinada matéria. Até aí, beleza. A média resultante das notas não ficam armazenadas no bd elas são resultado do cálculo explicado acima. Pois bem. Essas médias são calculadas dentro de um looping while que monta a tabela com as matérias, notas, faltas, médias e por aí vai. Só que eu preciso apresentar um status para que o aluno saiba se passou ou não de ano ou se está em recuperação. Daí eu pensei em armazenar todas essas médias (que não estão armazenadas em uma base de dados) em uma array para depois testar se dentro dessa array tem alguma média inferior a 5. Se estiver o aluno estará em recuperação. Caso contrário ele passará de ano. Então o que eu montei foi mais ou menos assim: //seleciona as notas do aluno $this->pbim1 = $result1['1BIM']; //primeiro bimestre $this->sbim1 = $result1['2BIM']; $this->tbim1 = $result1['3BIM']; $this->qbim1 = $result1['4BIM']; //a média final será a soma de todas as notas do bimestre. O valor é arredondado com uma casa decimal $this->mediaFinal1 = round(($this->pbim1 + $this->sbim1 + $this->tbim1 + $this->qbim1)/4,1); if($this->mediaFinal1<5)//aqui é para mostrar a cor da média. Se for menor que vermelha { $this->mediaFinal1 = '<span style="color:red"><strong>'.$this->mediaFinal1.'</strong></span>'; } else { $this->mediaFinal1 = '<span style="color:blue"><strong>'.$this->mediaFinal1.'</strong></span>'; } $this->msem1 = $result1['MSEM']; até aqui sem problemas. Só que dentro do while eu tenho esse trecho de código que é para armazenar as médias finais em uma array $mediaGeral= array($this->mediaFinal1); o que é engraçado é que os dados são armazenados só que no índece 0 da array. Sendo assim quando testo a array para checar alguma nota menor que 5 ele sempre vai percorrer a array inteira e me retornar o último valor encontrado. Para se entender melhor. Quando eu dou um echo $mediaGeral[1], por exemplo, ele me traz erro já que não há indece 1. entretanto se eu der um echo $mediaGeral[0]; ele traz todos os resultados que eu preciso tipo: 4.456.17 (seriam as notas 4.4, 5, 6.1 e 7). Gostaria de saber como eu posso organizar essa array por indeces tipo $mediaGeral["4.4","5","6.1","7"]; Já tentei com forech, array_push, explode e nada. Sempre obtenho o mesmo erro. Se alguém puder ajudar eu agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Dezembro 27, 2008 //fora do loop $mediaGeral = array(); //dentro do loop $mediaGeral[] = $this->mediaFinal1; Tem certeza que tá tudo certo? Seu código ta estranho amigo... Compartilhar este post Link para o post Compartilhar em outros sites
ahsc 1 Denunciar post Postado Dezembro 27, 2008 tá certinho sim, só que pus apenas um pequeno trecho de código. toda a estrutura do projeto está em poucos arquivos o que facilita a manutenção e reutilização do código. de qualquer forma, vou tentar seu trecho de código. vlw. //fora do loop $mediaGeral = array(); //dentro do loop $mediaGeral[] = $this->mediaFinal1; Tem certeza que tá tudo certo? Seu código ta estranho amigo... --------vlw pela dica funfou certinho. como você mostrou, inicalizei a array no canto errado tá certinho sim, só que pus apenas um pequeno trecho de código. toda a estrutura do projeto está em poucos arquivos o que facilita a manutenção e reutilização do código. de qualquer forma, vou tentar seu trecho de código. vlw. //fora do loop $mediaGeral = array(); //dentro do loop $mediaGeral[] = $this->mediaFinal1; Tem certeza que tá tudo certo? Seu código ta estranho amigo... Compartilhar este post Link para o post Compartilhar em outros sites