Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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&*

 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.