Jump to content
Kellison Ruan

Como não repetir os dados exibidos de uma tabela?

Recommended Posts

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á!

Share this post


Link to post
Share on other sites

Pelo oque eu entendi, você faz um select em uma parte do código e logo em seguida outro né?

E você gostaria que o resultado do select 2 não conte-se as coisas do select 1, seria isso?

 

Caso sim, creio que uma das forma possível seria a seguinte, no primeiro select na hora de percorrer os valores tu gera um array desses dados que não podem ser repetidos:

https://secure.php.net/manual/pt_BR/language.types.array.php

 

Depois na hora de percorrer o segundo select, tu compara se o valor 'X' existe naquela array que foi gerada, caso não tu printa.

http://php.net/manual/pt_BR/function.array-search.php

  • +1 1

Share this post


Link to post
Share on other sites

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&*

 

 

  • +1 1

Share this post


Link to post
Share on other sites
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.

 

  • +1 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By tatysouzac
      Minha view:
      <div>                            
                                          <form method="post" action="http://localhost/integradorcode/index.php/welcome/validar">
                                          EMAIL: <input type="text" name="email"  /> <br><br>
                                          SENHA:  <input type="password" name="senha"/> <br><br><br><br>
                                          <input class="myButton" type="submit" value="Entrar"/> <br><br>
                                          </form>
                                          <a href="Cadastro.php" class="myButton">Cadastrar</a><br><br>
                                          <a href="#" class="myButton">Esqueceu sua senha?</a>
               </div>
       
       
       
      Controller:
       
          public function validar(){
              //var_dump($_POST);
              $this->load->model("Cadastro_model");
              $result = $this->Cadastro_model->validar($_POST["email"],md5($_POST["senha"]));
              var_dump($result);
          }
       
       
      Model:
       
          function validar($email, $senha){
              return $this->db->query("SELECT * FROM `cadastro_clientes` WHERE email_cliente = '{$email}'  AND senha_cliente = '{$senha}' AND status = 1 LIMIT 1")->result_array();
          }
       
       
      Não da nenhuma mensagem de erro mas coloco senha e login certos do meu bd e o return não retorna nada array 0 
    • By MateusOFCZ
      Olá, estou desenvolvendo um projeto de registro de clientes em java no netbeans e usando o MySQL Workbench e Xampp, gostaria de saber se é possível fazer com que o programa fique verificando se está conectado com o banco de dados, e caso não esteja ele mostra uma mensagem pedindo para o usuário se conectar em uma rede, caso ele se conecte o programa irá esconder essa mensagem e funcionará normalmente.

      Eu consegui fazer com que ele mostre se está conectado ou não, porém se eu desligar o servidor ele não atualiza mostrando que está offline, ele continua como online...
    • By terra
      Olá,
       Tenho esse codigo
       
      e gostaria de chamar  bairro = dados.address.suburb; aqui nesse função 
       
       
      Agradeço qualquer ajuda
    • By ricardonews
      olá pessoal, eu não estou conseguindo fazer o redirecionamento apos o cadastro para index, eu estou perdido entre os ifs e else, eu acho que só pode ser isso,  quando eu coloco meu código trava, e não faz nada. vou postar o print.

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.