Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Gente, por favor me ajude, empaquei com o meu código nesse problema, e não consegui sair.
É o seguinte, estou criando um sistema de matrícula online, para faculdade, onde na página das disciplinas disponíveis para cursar, estarão exibidas, as disciplinas que o aluno perdeu, e que vai estar disponível para ele cursá-la novamente, e a outra exibição será das disciplinas novas, que o aluno poderá selecionar quais queres cursar. O problema é que, estou fazendo a exibição dos dados das disciplinas perdidas assim:
<?php
$sql_1 = mysql_query("SELECT * FROM notas_aluno WHERE matricula_aluno_notas = '$codigo' AND situacao != 'MT' AND situacao != 'AF' AND situacao != 'PF' AND situacao != 'AM'");
while($res_1 = mysql_fetch_array($sql_1)){
$disci_nota = $res_1['disciplina_nota'];
$situacao = $res_1['situacao'];
?>
<tr>
<td><?php $sql_3 = mysql_query("SELECT * FROM disciplinas WHERE id_disc = '$disci_nota'");
while($res_3 = mysql_fetch_array($sql_3)){
$id_prof = $res_3['professor'];
$id_disc = $res_3['id_disc'];
?>
<div class="col-md-4">
<label class="check"><input type="checkbox" class="icheckbox"/></label>
</div>
</td>
<td><?php echo $res_3['nome_disc']; ?></td>
<td><?php echo $res_3['turma']; ?></td>
<td><?php echo $res_3['horas']; ?></td>
<td><?php echo $res_3['turno']; ?></td>
<td><?php echo $res_3['horario']; ?></td>
<td><?php echo $res_3['dia']; ?></td>
<td><?php $sql = mysql_query("SELECT * FROM dados_prof WHERE id_prof = '$id_prof'");
$contar = mysql_num_rows($sql);
if ($contar <='0'){
echo "Não definido";
}else {
while ($rs = mysql_fetch_array ($sql)){
$nome_prof = $rs['1'];
echo $nome_prof; }?></td>
</tr>
<?php }}}?>
Ignorem o HTML, foquem no código php. Bem, como podem ver, dependo de fazer esse select:
(SELECT * FROM notas_aluno WHERE matricula_aluno_notas = '$codigo' AND situacao != 'MT' AND situacao != 'AF' AND situacao != 'PF' AND situacao != 'AM'")
para que ele mostre apenas as disciplinas onde 'situacao' for diferente das siglas de MT = Matriculado, AF = Aprovado na Prova Final, PF = Vai para a Prova Final, AM = Aprovado por média. Pois, não faz sentido o aluno se matricular nem nenhuma disciplina já passada, ou matriculada. Bom, e o outro código é na mesma página que exibe este, e eles está desse jeito:
<?php $sql_3 = mysql_query("SELECT * FROM disciplinas WHERE id_disc != '$disci_nota' AND curso = '$id_do_curso'");
while($res_3 = mysql_fetch_array($sql_3)){
$id_prof = $res_3['professor'];
?>
<td>
<div class="col-md-4">
<label class="check"><input type="checkbox" class="icheckbox"/></label>
</div>
</td>
<td><?php echo $res_3['nome_disc']; ?></td>
<td><?php echo $res_3['turma']; ?></td>
<td><?php echo $res_3['horas']; ?></td>
<td><?php echo $res_3['turno']; ?></td>
<td><?php echo $res_3['horario']; ?></td>
<td><?php echo $res_3['dia']; ?></td>
<td><?php $sql = mysql_query("SELECT * FROM dados_prof WHERE id_prof = '$id_prof'");
$contar = mysql_num_rows($sql);
if ($contar <='0'){
echo "Não definido";
}else {
while ($rs = mysql_fetch_array ($sql)){
$nome_prof = $rs['1'];
echo $nome_prof; }?></td>
</tr>
<?php }}?>
O problema maior está neste código, ele mostra para mim todas as disciplinas, mas eu preciso que apareça apenas as outras disciplinas que estejam disponíveis para cursar, com exceção das que já foram exibidas lá nas disciplinas perdidas e que o aluno irá cursar novamente (primeiro código). Este código está exibindo todas as disciplinas, inclusive repetindo as do primeiro código, não sei mais o que fazer.
Me ajude!!! Grato, desde já!No primeiro código você cria um array vazio, dentro do laço while você popula ele com os IDs das disciplinas perdidas usando array_push. No segundo código você passa esse array como parâmetro no SQL usando a cláusula " not in": https://www.google.com.br/#safe=off&q=mysql+in+clause&
Creio que a solução do Osmar é melhor
>
3 minutos atrás, EdCesar disse:
Se eu entendi direito, basta você pedir na segunda consulta, para descartar os resultados da primeira consulta:
"SELECT * FROM disciplinas
WHERE id_disc != '$disci_nota'
AND curso = '$id_do_curso'
AND CHAVE_DA_CONSULTA
NOT IN
(SELECT CHAVE_DA_CONSULTA
FROM notas_aluno
WHERE matricula_aluno_notas = '$codigo'
AND situacao != 'MT'
AND situacao != 'AF'
AND situacao != 'PF'
AND situacao != 'AM'
)
";
O campo "CHAVE_DA_CONSULTA" você troca pela chave primaria que identifica o resultado, não sei se no seu caso é id_disc ou matricula_aluno_notas ou alguma outra.>
Em 02/03/2017 at 10:21, EdCesar disse:
Cara, tu BROCOU!
Hauhauahaua, fiz e funfou legal!
Do jeitinho que queria. Valeeeeeeeu mano!