Jump to content
Fórum Script Brasil
  • 0

Valores duplicados em dois campos


Question

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 to post
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to post
Share on other 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 to post
Share on other sites
  • 0
Posted (edited)
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!

 

Edited by Thiago França
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      149151
    • Total Posts
      645419
×
×
  • Create New...