How to insert foreign keys in PHP, so I can have a control when pulling the VIEW

Asked

Viewed 785 times

0

I am doing a project, where employees registered on the site (corporate), can register: Errors and Customers who had these errors (In case it is a support company).

I need PHP to do the Foreign Key of Clients and/or Employees, so it can be pulled by the view, which will be displayed on the query page. Regarding the database is mounted correctly, but do not know how to pull this data (as FK) in PHP.

Follows the code:

Bank script:

DROP DATABASE IF EXISTS mydb;
CREATE DATABASE IF NOT EXISTS mydb;

USE mydb;

CREATE TABLE clientes (
  cod_clientes INT UNSIGNED NOT NULL AUTO_INCREMENT,
  nome_cliente VARCHAR (50) NOT NULL,
  cnpj VARCHAR (14) NOT NULL,
  PRIMARY KEY (cod_clientes)
) ENGINE = innodb;

CREATE TABLE funcionarios (
  cod_funcionarios INT UNSIGNED NOT NULL AUTO_INCREMENT,
  login VARCHAR(15) NOT NULL,
  email VARCHAR(50) NOT NULL,
  senha VARCHAR(15) NOT NULL,
  cpf VARCHAR (11) NOT NULL UNIQUE,
  PRIMARY KEY (cod_funcionarios)
  ) ENGINE = innodb;

CREATE TABLE erros(
  cod_erros INT UNSIGNED NOT NULL AUTO_INCREMENT,
  tipo_erro VARCHAR (150) NOT NULL,
  solucao TEXT NOT NULL,
  data_ocorrencia DATE,
  sistema VARCHAR (30) NOT NULL,
  Fk_Funcionarios INT UNSIGNED,
  Fk_Clientes INT UNSIGNED,
  PRIMARY KEY (cod_erros),
  FOREIGN KEY (Fk_Funcionarios) REFERENCES funcionarios (cod_funcionarios) ON UPDATE CASCADE ON DELETE RESTRICT,
  FOREIGN KEY (Fk_Clientes) REFERENCES clientes (cod_clientes) ON UPDATE CASCADE ON DELETE RESTRICT
  ) ENGINE = innodb;

Insert script:

    USE mydb;

insert into clientes (nome_cliente, cnpj) values 
("maria", "99999999999998"),
("joao","99999999999997");
SELECT *FROM clientes;

insert into erros (tipo_erro, solucao, data_ocorrencia, sistema, Fk_Funcionarios, Fk_Clientes) values 
("Erro na Instancia ", "1) Verificar se o NET Framework 4.6.2 está instalado na máquina e com seus recursos ativados. (Verifique os recursos indo em -> Painel de Controle > Programas e Recursos > Ativar ou Desativar Recursos do Windows > Em todos Net framework que estão lá - ative todos os recursos e reinicie a máquina).  
2) Verificar se o IPV6 está desativado para evitar problemas de conexão.
3) Verificar se as regras de entrada no firewall estão habilitadas  em 'propriedades do Windows defender firewall', e habilitar as portas para evitar problemas (1433, 9004, 9009), e habilitar as regras de entrada também. Ou desativar o firewall (não recomendado).
4) Verificar se o Anti-vírus está atrapalhando com a conexão do Hiper.
5) Verificar em serviços (Win+R e digite: 'services.msc' ou vá em pesquisar no menu iniciar e digite: 'serviços'.), e verifique se as instâncias como o: SQL SERVER (Hiper) está ‘iniciado’.
6) Verificar  se o nome do 'desktop' e o do computador(logon / apelido da máquina) são iguais, pois se for, o SQL Server não irá aceitar fazer a conexão. Os nomes devem ser diferentes.
7) Agora abra o SSMS normalmente e faça o login com o SA sem por a senha, e depois configure.", "1888/08/25","HIPER", 1, 1),

("Falha de comunicação com o gestão", "Este erro é comum no Windows 7, devido as atualizações do Windows Update. Geralmente a atualização do Windows 7 não é automática como o do Windows 10. Então é necessário que faça a atualização do Windows Update.", "1888/08/25","HIPER",1, 2);
SELECT *FROM erros;

View:

DROP VIEW IF EXISTS VIEW_LISTA_ERROS;

CREATE VIEW VIEW_LISTA_ERROS AS
SELECT clientes.nome_cliente AS Cliente, erros.cod_erros AS ID, erros.tipo_erro AS Erro, erros.solucao AS Solução, erros.data_ocorrencia AS Data, erros.sistema AS Sistema, funcionarios.email AS Email_do_Funcionario
FROM clientes, erros, funcionarios
where erros.Fk_Clientes = clientes.cod_clientes and erros.Fk_Funcionarios = funcionarios.cod_funcionarios
group by cod_erros, Fk_Clientes, Fk_Funcionarios;

select *from VIEW_LISTA_ERROS;

Part of php code where I am trying to insert (OBS: Without the Foreign Key it inserts in the database, but no use I insert without the FK, because otherwise the view will not pull and I will not have control):

  //Caso não ocorra nenhum erro, permita que os dados sejam inseridos no banco.
  if ($row == 0) {

    $query2 = "insert into clientes(nome_cliente, cnpj)
    values('{$nome_cliente}', '{$cnpj}')";
    mysqli_query(conexao(), $query2);

    $query = "insert into erros(tipo_erro,solucao,data_ocorrencia,sistema)
    values('{$nome_erro}', ('{$solucao}'), ('{$data}'), '{$sistema}')";
    mysqli_query(conexao(), $query);
  }

  header('location: paginaConsulta.php');
}

Form Print:

inserir a descrição da imagem aqui

Print of the consultation page:

inserir a descrição da imagem aqui

  • To summarize your question: you want to know how to insert customer and employee ids in foreign keys that will go to the error table?

  • @adrianosmateus That! For example: I want to have registration of the employee who made the registration of errors and customers, and also what error the customer had. In case I will need the two Foreign Key (or primary key, I do not know how to implement)

  • Somebody give me a hand?

1 answer

0


If I understand your question correctly, just play the id to be written to the foreign key inside the query:

//Caso não ocorra nenhum erro, permita que os dados sejam inseridos no banco.
if ($row == 0) {
$conexao = conexao();

$query2 = "insert into clientes(nome_cliente, cnpj)
values('{$nome_cliente}', '{$cnpj}')";
mysqli_query($conexao, $query2);

//Recupero o id do cliente que acabou de ser inserido
$idCliente = mysqli_insert_id($conexao)

$query = "insert into erros(tipo_erro,solucao,data_ocorrencia,sistema, Fk_Funcionarios, Fk_Clientes)
values('{$nome_erro}', ('{$solucao}'), ('{$data}'), '{$sistema}', '{$idFuncionario}', '{$idCliente}')";
mysqli_query($conexao, $query);
}

header('location: paginaConsulta.php');
}

Declare the variable $idFuncionario and throw the id of the user active in the session.

  • The part about getting the client FK worked, but I can’t get the user ID logged in to the session at all. I’ve tried several ways but nothing certain :/ As I get the id of the logged-in user in the session, can you give me a hint?? That’s all that’s left to finish

  • When the user logs in, save his id to the session, then just recover the id when you log in, for example by session_start(); $idFunctioning = $_SESSION['id'];

  • In the login page, I played inside the variable the result of td q I have in the table and dps played in the session pulling the table ID. Ai on the page where I enter data, I played this session that pulls the id, in the $Idfuncionaio variable. $dados_usuario = mysqli_fetch_assoc($result); $_SESSION['id_usuario'] = $dados_usuario['cod_funcionarios']; THANK YOU FOR THE FORCE!

  • Not at all. Mark the answer as correct if you solved your problem.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.