Olá pessoal, estou com problemas para fazer inserção no Banco de dados, o código está inserindo normalmente, o problema é que em alguns casos ele duplica a inserção, por exemplo inseri 27 registros (jogos do corinthians) com placar e artilharia de cada jogo, e 2 desses jogos foram duplicados, ou seja, foram inseridos duas vezes. Não sei se estou usando corretamente o while no código, ou se o problema é outro. Outra coisa, meu mouse é sem fio e está com a pilha fraca, as vezes um click fica bugado, e isso pode estar causando o erro, porém se esse for o problema preciso corrigir para que o código não aceite tal erro. Se alguém puder ajudar, desde já agradeço.
Segue trecho do código onde crio o formulário de envio com jogadores criados dinamicamente conforme outro cadastro feito anteriormente:
echo "<div id='gerencia'> <h1>Finalizar Jogo</h1> <p>Para contabilizar a artilharia, seus atletas devem estar cadastrados no Elenco da Equipe.</p>"; $selecionar = "SELECT * FROM usuarios WHERE email = '$banco'"; try{$read = $pdo->prepare($selecionar);$read->execute();} catch(PDOException $e){$e -> getMessage;} $lin = $read->fetch(PDO::FETCH_ASSOC); $id = $lin['id']; $idJogo = $atual[2]; $pegaJogo = "SELECT * FROM agenda WHERE (id_usuario = '$id' && id = '$idJogo') LIMIT 1"; try{$read2 = $pdo->prepare($pegaJogo);$read2->execute();} catch(PDOException $e){$e -> getMessage;} if($read2->rowCount() == 1){ $linha = $read2->fetch(PDO::FETCH_ASSOC); echo "<div id='erro4' style='display: none;'></div> <form name='form_jogo' id='form_jogo' action='".$url_ass."/settings/Jogos.php' method='post' onsubmit='return validar_jogo();'> <fieldset> <legend>Placar</legend> <input type='hidden' name='id' value='".$linha['id']."'> <input type='hidden' name='data' value='".$linha['data']."'> <input type='hidden' name='horario' value='".$linha['horario']."'> <input type='hidden' name='local' value='".$linha['local']."'> <input type='hidden' name='equipe' value='".$linha['equipe']."'> <input type='hidden' name='adversario' value='".$linha['adversario']."'> <input type='hidden' name='id_usuario' value='".$linha['id_usuario']."'> <div style='text-align:center; float: left; width:100%;'> <span style='margin: 0 5px 0 0; font-family: Arial Black;'>".$linha['equipe']."</span> <input id='placarEquipe' class='placar' type='text' name='placarEquipe' onkeypress='return SomenteNumero(event)'> <span style='margin: 0 5px; font-family: Arial Black;'>X</span> <input id='placarAdv' class='placar' type='text' name='placarAdv' onkeypress='return SomenteNumero(event)'> <span style='margin: 0 0 0 5px; font-family: Arial Black;'>".$linha['adversario']."</span> </div> </fieldset> <fieldset> <legend>Artilharia</legend>"; $jogador = "SELECT * FROM elenco WHERE (id_usuario = '$id') ORDER BY funcao_atleta"; try{$read3 = $pdo->prepare($jogador);$read3->execute();} catch(PDOException $e){$e -> getMessage;} while($res = $read3->fetch(PDO::FETCH_ASSOC)){ echo "<div style='margin: 2px 0; float=left; width:100%;'> <input class='placar' type='text' name='jogador[]' maxlength='2' value=0 onkeypress='return SomenteNumero(event)'> <span style='margin-left: 5px; font-family: Arial; '>".$res['nome_atleta']."</span> </div>"; } echo "</fieldset> <input class='btn' type='submit' value='Salvar'> </form>"; }else{ echo "<p>Erro ao carregar jogo!</p>"; } echo "</div>";
Aqui o arquivo para inserção no BD:
<?php header('Content-Type: text/html; charset=utf-8'); include("conexao.php"); include("CheckUpDb.php"); $pdo = conectar(); $url_ass = url_ass(); include "url_amigavel.php"; $golspro = $_POST['placarEquipe']; $golscontra = $_POST['placarAdv']; if($golspro > $golscontra){ $resultado = 1; $pontos = 3; }elseif($golspro < $golscontra){ $resultado = 2; $pontos = 0; }elseif($golspro == $golscontra){ $resultado = 3; $pontos = 1; } $id = $_POST['id']; $id_usuario = $_POST['id_usuario']; $data = $_POST['data']; $caldata = explode('-', $data); $dataArt = $caldata[0]; $horario = $_POST['horario']; $local = $_POST['local']; $adversario = $_POST['adversario']; $equipe = $_POST['equipe']; $atleta = $_POST['jogador']; $selecionar = "SELECT * FROM jogos WHERE (id_usuario = '$id_usuario && data = '$data')"; try{$readsel = $pdo->prepare($selecionar);$readsel->execute();} catch(PDOException $e){$e -> getMessage;} if($readsel->rowCount() == 0){ $inserir = $pdo->query("INSERT INTO jogos (id_usuario, golspro, golscontra, resultado, pontos, data, horario, local, adversario, equipe) VALUES ('$id_usuario', '$golspro', '$golscontra', '$resultado', '$pontos', '$data', '$horario', '$local', '$adversario', '$equipe')"); } $i = 0; $elenco = "SELECT * FROM elenco WHERE id_usuario = '$id_usuario' ORDER BY funcao_atleta"; try{$read = $pdo->prepare($elenco);$read->execute();} catch(PDOException $e){$e -> getMessage;} $num = $read->rowCount(); while($linha = $read->fetch(PDO::FETCH_ASSOC)){ $jog = $linha['nome_atleta']; $gols = $atleta[$i++]; $art = "SELECT * FROM artilharia WHERE (jogador = '$jog' && id_usuario = '$id_usuario' && data = '$dataArt')"; try{$read2 = $pdo->prepare($art);$read2->execute();} catch(PDOException $e){$e -> getMessage;} if($read2->rowCount() == 0): $insere = $pdo->query("INSERT INTO artilharia (id_usuario, jogador, gols, data) VALUES ('$id_usuario', '$jog', '$gols', '$dataArt')"); else: $res = $read2->fetch(PDO::FETCH_ASSOC); $golant = $res['gols']; $golsatual = $golant + $gols; $insert = $pdo->query("UPDATE artilharia set gols = '$golsatual' WHERE (jogador = '$jog' && id_usuario = '$id_usuario' && data = '$dataArt')"); endif; } if($inserir){ $deletar = $pdo->query("DELETE FROM agenda WHERE id = '$id'"); echo " <meta http-equiv='refresh' content='0; url=".$url_ass."/agenda/jogos-encerrados'/> <script type='text/javascript'>alert('Dados inseridos com sucesso!');</script>"; } ?>