Ir para conteúdo
Fórum Script Brasil
  • 0

Valores duplicados em dois campos


Thiago França

Pergunta

Pessoal, Boi Noite.

Sou novo na programação PHP e estou com o seguinte problema;

Estou precisando fazer uma consulta no banco e não posso duplicar dois valores $numero_midia e $cad_midi, porem ao relizar o processo ele me retorna esse erro;

Fatal error: Uncaught TypeError: mysqli_num_rows(): Argument #1 ($result) must be of type mysqli_result, bool given in C:\xampp\htdocs\sistema_midia\cad_lto6.php:22 Stack trace: #0 C:\xampp\htdocs\sistema_midia\cad_lto6.php(22): mysqli_num_rows(false) #1 {main} thrown in

Preciso efetuar essa analise nos campos.

 

<?php
session_start();
include_once("conexao.php");

#Cadastro de campos
$numero_midia = $_POST ['numero_midia'];
$cad_midi = $_POST ['cad_midi'];
$data_cadastro = $_POST ['data_cadastro'];
$obs = $_POST ['obs'];

#Consulta Banco
$verifica = "SELECT * FROM cad_lto6 WHERE numero_midia AND cad_midi = ('$numero_midia', '$cad_midi')";

$result_verifica = mysqli_query($conexao, $verifica);    
$registros = mysqli_num_rows($result_verifica);    
        if($registros >= 1){
            echo "<script type='text/javascript'>alert('Midia ou Midi Existente!!!'); window.location.href='painel.php'</script>";
        } 
        else {

            if($_POST){
                
#Cadastro Banco
$result_cad_lto6 = "INSERT INTO cad_lto6 (numero_midia, cad_midi, data_cadastro, obs) VALUES ('$numero_midia','$cad_midi', '$data_cadastro', '$obs')";
$result_cad_lto6 = mysqli_query($conexao, $result_cad_lto6);
 }

if(mysqli_insert_id($conexao)){
    $_SESSION['msg'] = "<p style='color:green;'>Usuário cadastrado com sucesso</p>";
    header("Location: lto6.php");
}else{
    $_SESSION['msg'] = "<p style='color:red;'>Usuário não foi cadastrado com sucesso</p>";
    header("Location: lto6.php");
}
}

?>

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
22 horas atrás, JOSE L BONFIM disse:

Thiago França,
Não entendí a questão duplicar numero _midia e cad_midi.
A query correta seria essa:


$verifica = "SELECT * FROM cad_lto6 WHERE numero_midia = '$numero_midia'  AND cad_midi = '$cad_midi' ";

 

Olá Josel. Boa Noite..

Isso mesmo, se eu tiro a opção $Cad_mid, ele faz a analise e não deixa duplicar o numero_midia, porem eu preciso da analise dos dois campos.

8 minutos atrás, Thiago França disse:

Olá Josel. Boa Noite..

Isso mesmo, se eu tiro a opção $Cad_mid, ele faz a analise e não deixa duplicar o numero_midia, porem eu preciso da analise dos dois campos.

--------------------------------------------------------------------------------------------------------------------------

Thiago França,
Não entendí a questão duplicar numero _midia e cad_midi.

Não posso deixar as informações iguais no banco, pois trata de campos importantes, coloquei o comando não apresentou falha, porem ele deixou duplica o cad_midi.

$verifica = "SELECT * FROM cad_lto6 WHERE numero_midia = '$numero_midia'  AND cad_midi = '$cad_midi' ";

$result_verifica = mysqli_query($conexao, $verifica);    
$registros = mysqli_num_rows($result_verifica);    
        if($registros >= 1){
            echo "<script type='text/javascript'>alert('Midia ou Midi Existente!!!'); window.location.href='painel.php'</script>";
        } 
        else {

            if($_POST){

Link para o comentário
Compartilhar em outros sites

  • 0

Thiago França,
Você tem duas formas de resolver a questão duplicidade.
1 - Criar índices no banco de dados para ignorar registros duplicados
     exemplo: crie um índice onde o numero_midia e cad_midi sejam parte do indice;
      create unique index ix_cadnum on sua_tabela(numero_midia,cad_midi)
      você pode criar esse indice diretamente pelo gerenciado o BD

2 -  Pelo seu código você já está testando se existe uma duplicidade.
       Só que a sua sintaxe não vai trazer retorno desejado
       
3- Vejamos a duplicidade:(entendo que o número pode ser igual no exemplo)
       numero_midia = 2 e cad_midi = 2 
       A sintaxe do deve ser: 
       SELECT * FROM  cad_lto6 WHERE numero_midia = 2 AND cad_midi = 2

Abraços,

Link para o comentário
Compartilhar em outros sites

  • 0
22 horas atrás, JOSE L BONFIM disse:

Thiago França,
Você tem duas formas de resolver a questão duplicidade.
1 - Criar índices no banco de dados para ignorar registros duplicados
     exemplo: crie um índice onde o numero_midia e cad_midi sejam parte do indice;
      create unique index ix_cadnum on sua_tabela(numero_midia,cad_midi)
      você pode criar esse indice diretamente pelo gerenciado o BD

2 -  Pelo seu código você já está testando se existe uma duplicidade.
       Só que a sua sintaxe não vai trazer retorno desejado
       
3- Vejamos a duplicidade:(entendo que o número pode ser igual no exemplo)
       numero_midia = 2 e cad_midi = 2 
       A sintaxe do deve ser: 
       SELECT * FROM  cad_lto6 WHERE numero_midia = 2 AND cad_midi = 2

Abraços,

Jose, Boa Noite.

Tudo bem?

Funcionou pelo Índice no banco de dados, funcionando perfeitamente.

Muito obrigado pela ajuda!

 

Editado por Thiago França
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...