gildo.rj 0 Denunciar post Postado Junho 5, 2014 Bom dia pessoal. Estou com uma dificuldade, estou montando um histórico escolar e bateu no seguinte problema: monto a query: $histor = mysql_query("SELECT CodDiscN,Serie,(Nota1+Nota2+Nota3)/3 AS notas FROM notas WHERE filial='$filial' AND MatriculaN='$matricula' GROUP BY CodDiscN,Serie"); nessa query eu obtenho todos os dados necessários para montar o histórico do aluno, o problema é o seguinte, preciso montar da seguinte forma. Matéria 2013 2014 2015 1 Ano 2 Ano 3 Ano Matematica 7 8 6 O problema é o seguinte, nessa forma na query quando tem matérias duplicadas ele me da os valores em linhas diferente, como poderia alinhar esses valores da forma que apresento acima? Compartilhar este post Link para o post Compartilhar em outros sites
Zezinho S/A LOCK 3 Denunciar post Postado Junho 5, 2014 Você vai precisar trabalhar com matrizes vc precisa colocar tudo no select faça um group by tb ai ele vai agrupar ano materia. monta um select com todos os campos da sua tbl seria isso $suaVariavel[$x][$y][$nomeDoCampo] onde $x seria suas linhas e $y suas colunas. Para exibir isso você teria que fazer um for composto como exemplo abaixo <table> <?php for($x=1;$x<=NumeroMaterias;$x++){ echo '<tr>'; for($y=1;$y<=NumeroAnos;$y++){ echo '<td>'; echo $suaVariavel[$x][$y][$nomeDoCampo] ; echo '</td>'; } echo '</tr>'; } ?> </table> ve se da certo esse é o caminho abç Compartilhar este post Link para o post Compartilhar em outros sites
gildo.rj 0 Denunciar post Postado Junho 6, 2014 Bom dia Zezinho, não funfo ou to fazendo algo errado, não saco muito de matrizes pode dar uma olhada por favor, o codigo que fiz segue abaixo: $histor = mysql_query("SELECT CodDiscN,Serie,(Nota1+Nota2+Nota3)/3 AS notas FROM notas WHERE filial='$filial' AND MatriculaN='$matricula' GROUP BY CodDiscN,Serie"); for($i=0;$i<mysql_num_rows($histor);$i++) { $tudo[] = mysql_fetch_assoc($histor); } $nMat= mysql_num_rows($histor); echo '<tr><table>'; for($x=1;$x<=$nMat;$x++){ echo '<tr>'; for($y=1;$y<=9;$y++){ echo '<td>'; echo $tudo[$x][$y]['notas'] ; echo '</td>'; } echo '</tr>'; } echo '</table></tr>'; Compartilhar este post Link para o post Compartilhar em outros sites
Zezinho S/A LOCK 3 Denunciar post Postado Junho 6, 2014 cara me manda o create da sua tbl alguns registros que vc tem ai monto aqui e vejo se consigo isso para vc pois acho que tem algo errado com o seu select. Me passa por msg do forum Compartilhar este post Link para o post Compartilhar em outros sites
gildo.rj 0 Denunciar post Postado Junho 6, 2014 cara me manda o create da sua tbl alguns registros que você tem ai monto aqui e vejo se consigo isso para você pois acho que tem algo errado com o seu select. Me passa por msg do forum Blz amigo, te agradeço, vou encaminhar. Compartilhar este post Link para o post Compartilhar em outros sites
Zezinho S/A LOCK 3 Denunciar post Postado Junho 6, 2014 veja aiiiii acho que é isso não esquece que estamos vendo apenas um aluno <?php $db = mysqli_connect('localhost', 'root' , '','teste'); //1ª aqui deverá ser a tbl de notas $sql = "SELECT * FROM notas where MatriculaN = '1210132200001' GROUP BY ano"; $rs = mysqli_query($db, $sql) or die ("Não foi possivelvel executar a consulta"); $i=1; while($row = mysqli_fetch_array($rs)){ $ano[$i] = $row['Ano']; //echo $ano[$i]; $i++; } //2º aqui deverá ser apenas as disciplina você pode fazer de duas formas // uma buscando as disc apenas que o aluno tem // a outra todas as disciplinas que a instituição possui // basta alterar a tbl $sqlA = "SELECT * FROM notas where MatriculaN = '1210132200001' GROUP BY Disciplina"; $rsA = mysqli_query($db, $sqlA) or die ("Não foi possivelvel executar a consulta"); $j=1; while($rowA = mysqli_fetch_array($rsA)){ $materia[$j] = $rowA['Disciplina']; //echo $materia[$j]; $j++; } //3º busca todos os registros de um determinado aluno $sqlB = "SELECT * FROM notas where MatriculaN = '1210132200001'"; $rsB = mysqli_query($db, $sqlB) or die ("Não foi possivelvel executar a consulta"); $t=1; while($rowB = mysqli_fetch_array($rsB)){ /* id, id_aluno, N, CodDiscN, Disciplina, Categoria, MatriculaN, Aluno, Serie, Turma, Nota1, Falta1, ad1,Nota2, Falta2, ad2, Nota3, Falta3, ad3, Nota4, Falta4, PR, Ano, depe, divisor, filial */ $idAluno[$t] = $rowB['id_aluno']; $materiaA[$t] = $rowB['Disciplina']; $anoA[$t] = $rowB['Ano']; $nota1A[$t] = $rowB['Nota1']; $t++; } //Vamos montar o Historico ?> <table width="500" border="1" cellspacing="0" cellpadding="0"> <?php //Primeiro montei a primeira linha que é referete ao ano essa não é replicada para baixo, porem não ocupamos a primeira coluna ?> <tr> <td width="300" > </td> <?php for($x=1;$x<=count($ano);$x++){ ?> <td width="300" ><?php echo $ano[$x]; ?></td> <?php } ?> </tr> <?php // aqui iremos replicar as linhas para baixo conforme o numero de materias colocando na primeira coluna a partir da 2º linha // neste espaço exibimos a materia conforme abaixo for($w=1;$w<=count($materia);$w++){ ?> <tr> <td width="300" ><?php echo $materia[$w]; ?></td> <?php //agora iremos completar com o numero de colunas que existe em anos igual a primeira linha da tabela criada aqui no HTML //porem não mostramos o ano apenas deizxamos o espaço for($y=1;$y<=count($ano);$y++){ ?> <td width="300" > <?php //aqui iremos pegar os dados completos dos alunos e iremos verificar que a materia e ano correnponde com materia e ano do aluno //se corresponder iremos informar os dados do aluno for($u=1;$u<=count($idAluno);$u++){ if(($materiaA[$u] == $materia[$w])&&($anoA[$u] == $ano[$y])){ echo 'Mat: '.$materiaA[$u].' - '.$materia[$w]; echo '<br>Ano: '.$anoA[$u].' - '.$ano[$y]; echo '<br>Nota: '.$nota1A[$u]; break; } } ?> </td> <?php } ?> </tr> <?php } ?> </table> caso tenha a necessidade de fazer a media esse é o script acrescenta apenas a coluna de media la no terceiro select e acrescenta dentro do while a coluna SELECT *, ((Nota1+Nota2+Nota3+Nota4)/divisor) as mediaMateria FROM notas Compartilhar este post Link para o post Compartilhar em outros sites
gildo.rj 0 Denunciar post Postado Junho 6, 2014 Não funfo veio, ele ta me mostrando só as matérias, não aparecem as notas nem o ano que se refere. E tambem está pegando todas as matérias independente do ano que se referem, ele juntou as materias de anos difentes. Compartilhar este post Link para o post Compartilhar em outros sites