Ir para conteúdo

POWERED BY:

Arquivado

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

gheeenrique

[ajuda]Pré-requisito em cadastro

Recommended Posts

Olá, alguém tem alguma ideia de como eu posso fazer um pré-requisito no momento de inserir um cadastro no banco de dados?

Por exemplo:

Para cadastrar usuario no curso X ele precisa ter feito o curso Y.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

só fazer uma consulta na tabela de curso

 

$qry = "SELECT id_usuario FROM tab_cursos WHERE id_usuaro='$id_usuario' AND curso='y'";

 

aí vê se tem o curso praquele usuário

Compartilhar este post


Link para o post
Compartilhar em outros sites
21 minutos atrás, marsolim disse:

só fazer uma consulta na tabela de curso

 


$qry = "SELECT id_usuario FROM tab_cursos WHERE id_usuaro='$id_usuario' AND curso='y'";

 

aí vê se tem o curso praquele usuário

Ótimo estava pensando dessa forma, deixa eu complicar um pouco mais rsrs

Os pré-requisitos estão em outra tabela, e não teria um número determinado por curso, você sabe como eu faria?

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, gheeenrique disse:

e não teria um número determinado por curso

Como assim não teria um número determinado?

É simples, independente da tabela em que os requisitos são guardados, você só precisa fazer o select na mesma e o resto é regra de negócio do sistema que você está criando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos para a definição formal...

 

Um curso pode ter vários cursos como pré-requisito.

Ex:

Citar

Pra fazer Cálculo 1 precisa de Matemática 
Pra fazer Cálculo 2 precisa de Matemática 
------------------------------------------
Pra fazer Cálculo 2 precisa de Cálculo 1

 

Então só ai precisamos de uma tabela cursos para armazenar um ID + Nome e uma tabela auxiliar para armazenar cara dependência.

 

 

Talk is cheap, show me te code....

 

Bora criar uma base e as tabelas:

CREATE DATABASE minhabase;
USE minhabase;

CREATE TABLE cursos (
     cur_id     INT(8) PRIMARY KEY AUTO_INCREMENT 
    ,cur_nome   VARCHAR(50) NOT NULL
    
);

INSERT cursos (cur_nome) VALUES ('Matemática Básica');
INSERT cursos (cur_nome) VALUES ('Cálculo 1');
INSERT cursos (cur_nome) VALUES ('Cálculo 2')

CREATE TABLE curso_req (
     cur_id INT(8) NOT NULL
    ,cur_id_req INT(8) NOT NULL
    ,CONSTRAINT `fk_curso_req` FOREIGN KEY (`cur_id`) REFERENCES `cursos` (`cur_id`)
    ,CONSTRAINT `fk_cursos_0` FOREIGN KEY (`cur_id_req`) REFERENCES `cursos` (`cur_id`)
);

Show, agora vamos popular alguns dados pra testar:

INSERT curso_req (cur_id, cur_id_req) VALUES (2, 1); /*Pra fazer Cálculo 1 precisa de Matemática Básica*/
INSERT curso_req (cur_id, cur_id_req) VALUES (3, 1); /*Pra fazer Cálculo 2 precisa de Matemática Básica*/
INSERT curso_req (cur_id, cur_id_req) VALUES (3, 2); /*Pra fazer Cálculo 2 precisa de Cálculo 1*/

Agora vamos testar...

SELECT * FROM cursos_req WHERE cursos_req.cur_id = 3
/*
cur_id  cur_id_req  
------  ------------
     3             1
     3             2
*/

LEGAL!!!

Funcionou certinho, Calculo 2: precisa de ( Mat + Calculo 1)

Mas seria massa se desse pra colocar o nome.

 

Nisso é só usar um JOIN.... Ex:

SELECT 
    cursos.cur_nome,
    curso_pre.cur_nome AS pre_requisito
FROM cursos_req
INNER JOIN cursos AS curso_pre ON (
    cursos_req.cur_id_req = curso_pre.cur_id
)
INNER JOIN cursos ON (  
    cursos_req.cur_id = cursos.cur_id   
)

/*
cur_nome    pre_requisito        
----------  ---------------------
Cálculo 1   Matemática Básica  
Cálculo 2   Matemática Básica  
Cálculo 2   Cálculo 1           
*/

 

(Se alguém conhecer outra maneira pf, compartilha ai hehe)

 

Como está bem estruturadinho, da pra fazer algumas brincadeiras, ex:


SELECT 
    cursos.cur_nome
    ,COUNT(cursos_req.cur_id) AS qnt_materias_pre    
FROM cursos
LEFT JOIN cursos_req ON (  
    cursos_req.cur_id = cursos.cur_id   
)
GROUP BY cursos.cur_id
;

/*
cur_nome             qnt_materias_pre  
-------------------  ------------------
Matemática Básica                     0
Cálculo 1                             1
Cálculo 2                             2

*/

Enfim acho q deu pra pegar legal neh?

(Pra entender melhor o funcionamento do INNER join, troca ali pra (RIGHT|LEFT)

 

Caso não conheça alguma das clausulas SQL no exemplo estude elas individualmente pra não ficar patinando.

 

A ideia era exemplificar com código.

 

 

Bons estudos.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

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