Jump to content
lfcssp

Approach para inserção 'complexa' no banco de dados

Recommended Posts

Um cordial "olá!" a todos.

 

Primeiramente, já foi bastante dificil descrever o título do tópico. Peço desculpas caso não tenha ficado satisfatório.

 

Eu desenvolvi uma página de intranet para gestão de alunos da minha instituição. O negócio funciona como esperado, entretanto eu preciso fazer uma modificação e não sei nem qual seria a melhor approach.

 

A situação é a seguinte: nós temos um cadastro de alunos. Estes alunos tem entre seus dados o curso que estão fazendo e também a unidade onde estão fazendo. Acontece que eu quero implementar a possibilidade de acrescentar mais de uma unidade/curso por aluno, só que eu não posso simplesmente adicionar estes valores na tabela porque, suponhamos que um curso seja renomeado ou movido de uma unidade a outra (e é exatamente isto que está acontecendo agora), eu precisaria que esta informação seja atualizada também entre os dados dos alunos.

 

Atualmente, a situação está assim:

 

tabela alunos

id, nome, endereço, {...}, curso (int), unidade(int)

 

tabela cursos

id, curso, descrição {...}

 

tabela unidades

id, curso, descrição {...}

 

Entende o tamanho do problema?

Eu pensei em fazer um esquema parecido com o que eu fiz para que cada aluno pudesse ter seus documentos digitalizados em seu cadastro, mas também não daria certo, porque cada documento é único de um aluno. No caso dos cursos, são varios cursos compartilhados entre vários alunos, e como eu disse antes, eu precisaria que estes dados fossem automaticamente atualizados caso um curso fosse transferido de unidade. Só que eu não consigo nem sonhar uma maneira de fazer isto, porque não sou nenhum expert em programação. Nem sei se é possível. Será que alguem teria alguma idéia, uma luz?

 

Grato.

Share this post


Link to post
Share on other sites

Estude sobre relacionamento ( LEFT | RIGHT JOIN)

 

Aqui tem um exemplo;

 

https://github.com/gabrieldarezzo/inwork-sql/blob/master/exemplos_fast/join.sql

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 gersonab
      utilizo um script para fazer upload de vários arquivos, só que agora foi solicitado para zipar o mesmo ao fazer o upload, pra ser sincero ja verifiquei vários tutoriais e não estou conseguindo.
      segue o script do upload funcionando sem o zip
       
      <?php if (!isset($_SESSION)) session_start(); require_once('config.php'); error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED); $idpr=$_POST['idpr']; $fotoprof=$_POST['fotoprof']; $foproc=$_POST['foproc']; $diretorio = "../files/"; $arquivo = $_FILES['foto']; for ($controle = 0; $controle < count($arquivo['name']); $controle++){ $nome = ($idpr."-P-".$arquivo['name'][$controle]); $values .= " ('{$nome}', '{$fotoprof}', '{$idpr}'),"; $destino = $diretorio."/".$idpr."-P-".$arquivo['name'][$controle]; move_uploaded_file($arquivo['tmp_name'][$controle], $destino); } $values=substr($values, 0, -1); $sql_fotos = "INSERT INTO fotos ( foto, fotoprof, fotoidpr ) VALUES $values"; //executa a query $executa = mysqli_query($con,$sql_fotos); ?> desde já agradeço qq ajuda.
    • By Ross Risso
      Tenho uma tabela pedidos com o campo forma de pagamento -  formpag - ele é uma combox que o usuário escolhe se o pagamento vai ser em dinheiro ou ou depósito em banco, na hora de criar o pedido.
      Nessa tabela também existe o campo total. O que necessito é buscar em uma consulta o total de todos os pedidos e mostrar separadamente na mesma consulta o total em dinheiro e em depósito.
      $qr="SELECT dataped, formpag, total  FROM tblpedidos  GROUP BY MONTH(dataped)"; $sqli=mysqli_query($conn,$qr); while($ln = mysqli_fetch_assoc($sqli)){} Como faço para obter a soma de "total" quando? Exemplo:
      JANEIRO  quando formpag for dinheiro - total em dinheido - quando formpag for depósito - total em depósito.
      JANEIRO total em dinheiro $ 100,00 - total em depósito $ 50,00. E assim por diante: FEVEREIRO, MARÇO e etc.
      espero ter sido claro. Agradeço a atenção de todos.
    • By celsomacarini
      Olá, estou com uma dúvida, como que eu faço para mandar a data e a hora atualizada para o meu banco? O código esta assim
      FUNÇÃO DE ADICIONAR
      public function adicionarSolicitacao($usuario = '', $assunto ='', $data ='', $hora ='') { if($this->existeEmail($email) == false) { $sql = "INSERT INTO solicitacao (usuario, assunto, data, hora) VALUES (:usuario, :assunto, :NOW(), :NOW())"; $sql = $this->pdo->prepare($sql); $sql->bindValue(':usuario', $usuario); $sql->bindValue(':assunto', $assunto); $sql->bindValue(':data', $data); $sql->bindValue(':hora', $hora); $sql->execute(); return true; } else { return false; } }
      ARQUIVO SUBMIT
       
      <?php include '../classes/ramal.class.php'; $contato = new Contato(); if(!empty($_POST['usuario'])){ $usuario = $_POST['usuario']; $assunto = $_POST['assunto']; $data = $_POST['data']; $hora = $_POST['hora']; $contato->adicionarSolicitacao($usuario, $assunto, $data, $hora); header("Location: index_servico.php"); }else{ header("Location: index_servico.php"); } ?> ARQUIVO DO FORMULÁRIO <div class="container"> <form name="formCadastro" method="POST" action="nova_solicitacao_submit.php"> <div class="form-row"> <div class="form-group col-md-6"> <fieldset disabled> <label for="inputEmail4">Nome do Usuário</label> <input type="text" class="form-control" name="usuario" value="<?php echo $_SESSION['usuarioNome']; ?>"> </div> </fieldset> <div class="form-group col-md-6"> <label for="inputState">Assunto</label> <select id="inputState" class="form-control" name="assunto"> <option selected>Impressoras</option> <option>EP-Específico Pormade</option> <option>Fluig</option> <option>Internet</option> <option>Logix</option> <option>Maker</option> <option>Office</option> <option>Inline</option> <option>Senhas</option> <option>SIMP</option> <option>Telefonia</option> <option>Terceiros</option> <option>Windows</option> <option>Backup</option> <option>CEDEPH</option> <option>Computadores</option> <option>CRM</option> <option>E-Mail</option> <option>Empréstimo de Equipamentos</option> <option>Formatação</option> <option>Outros</option> </select> </div> </div> <div class="input-group"> <div class="input-group-prepend"> <span class="input-group-text">Qual é o problema?</span> </div> <textarea class="form-control"></textarea> </div><br> <input class="btn btn-primary" type="submit" value="Enviar"> <a href="nova_solicitacao_submit.php" class="btn btn-info" role="button">Voltar</a> </div> </div> </form> </header> </body>  
    • By gersonab
      Boa tarde a todos. alguém poderia me informar sobre o erro 406 ? está em um formulário de cadastro e na edição do mesmo, funcionava normalmente, apenas acrescentei mais dados de cadastros.
      total de 41 itens no formulário no momento.
       
      An appropriate representation of the requested resource could not be found on this server.
      Additionally, a 406 Not Acceptable error was encountered while trying to use an ErrorDocument to handle the request.
       
      Não foi possível encontrar uma representação apropriada do recurso solicitado neste servidor. Além disso, um erro 406 não aceitável foi encontrado ao tentar usar um ErrorDocument para manipular a solicitação. Desde já agradeço.
    • By gersonab
      Boa tarde a todos, estou com um problema com relação ao multiupload , consigo fazer o upload das imagens e gravar no banco, porém se eu fizer mais de uma imagem a segunda não grava o id que vem via get, só na primeira.
      if ($_POST['cadastrar']) { //diretório para salvar as imagens $diretorio = "../files/"; //Verificar a existência do diretório para salvar as imagens e informa se o caminho é um diretório foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){ $fotoprof = $_POST['fotoprof'][$key]; $file_name = $key.$_FILES['files']['name'][$key]; $file_size =$_FILES['files']['size'][$key]; $file_tmp =$_FILES['files']['tmp_name'][$key]; $file_type=$_FILES['files']['type'][$key]; $desired_dir= $diretorio; if(move_uploaded_file($file_tmp,"$desired_dir/".$file_name)) { $sql="INSERT INTO fotos ( foto, fotoprof ) VALUES ( :foto, :fotoprof )"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':foto', $file_name); $stmt->bindParam(':fotoprof', $fotoprof); if ($stmt->execute()){ echo "Cadastrado com sucesso."; } else { print_r($stmt->errorInfo()); } }}}  
×

Important Information

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