
chiquito
Membros-
Total de itens
5 -
Registro em
-
Última visita
Sobre chiquito

chiquito's Achievements
0
Reputação
-
Insert_id PHP duplicando INSERT
pergunta respondeu ao chiquito de chiquito em Tutoriais & Dicas - PHP
Resolvido, Obrigado! -
Insert_id PHP duplicando INSERT
pergunta respondeu ao chiquito de chiquito em Tutoriais & Dicas - PHP
Para ficar mais claro, segue a tela das duas tabelas: GRUPO e GRUPO_PRIVILEGIO GRUPO - duplicando o grupo: GRUPO_PRIVILEGIO Inserindo os dados corretamente: -
Insert_id PHP duplicando INSERT
pergunta respondeu ao chiquito de chiquito em Tutoriais & Dicas - PHP
Obrigado pela ajuda, mas ainda continua duplicando o grupo, na tabela grupo, está inserindo corretamente os provilégios selecionados e vinculados ao ID do grupo correto, mas sempre criar dois grupos com o mesmo nome e o vinculo com o privilégio sempre é com o primeiro GRUPO Criado, segue código completo: <form action="grupo.php" method="POST" class="mbr-form form-with-styler"> <div class="dragArea row"> <font class="mbr-section-text mbr-fonts-style align-left mb-0 mt-0 display-4"> <div class="col-md-12 form-group mb-3" data-for="privilegio"> <?php $resultado = "SELECT * FROM privilegio"; $busca = mysqli_query($conexao, $resultado); ?> <table width="60%"> <tr> <td style='vertical-align:middle' align='left' colspan="2"> <div class="col-md-12 form-group mb-3" data-for="grupo"> <input type='text' name='grupo' placeholder='nome do grupo' data-form-field='grupo' class='form-control' required> </div> </td> </tr> </table> <?php while($dados = mysqli_fetch_assoc($busca)) { ?> <table> <tbody> <tr> <td> <label class='switch'> <font class="mbr-section-text mbr-fonts-style align-left mb-0 mt-0 display-4"> <input id='codigo[]' name='codigo[]' type='checkbox' value="<?php echo $dados['id'];?>"> <div class='slider round'> </div> </label> </td> <td style='vertical-align:middle' align='left'> <?php echo $dados['nome'];?> </td> </tr> </tbody> </table> <?php } ?> </div> <div class="col-lg-12 col-md-12 col-sm-12 align-center mbr-section-btn"> <input class="btn btn-primary" type="submit" id="submit" name="submit" value="cadastrar"></font> </div> </div> </form> <?php if(isset($_POST['submit'])) { include_once('config.php'); // grupo (id auto_increment,nome) // grupo_privilegio (id auto_increment,idGrupo,idPrivilegio) $grupo = $_POST['grupo']; $id = $_POST['codigo']; $sql = "SELECT id FROM grupo WHERE nome = '$grupo'"; $result = $conexao->query($sql); if ($result->num_rows > 0) { echo "O grupo '$grupo' já existe."; } else { // Inserir dados na tabela grupo $smt = "INSERT INTO grupo (nome) VALUES ('$grupo')"; $inseregrupo = $conexao->query($smt); if ($conexao->affected_rows > 0) { // Pegar o ID do último grupo inserido $id_grupo = $conexao->insert_id; for($i=0; $i<count($id); $i++) { // definindo privilégio 1,2,3 para cada novo grupo $insere = "INSERT INTO grupo_privilegio(id_Grupo,id_Privilegio) VALUES ($id_grupo,$id[$i])"; $resultado = $conexao->query($insere); } if ($conexao->affected_rows > 0) { echo "cadastro realizado com sucesso"; } } } } ?> Essa é a tela, coloco o nome do grupo e escolho os privilégios, por exemplo, cadastro o grupo: QUALIDADE é inserido dois grupos - ID: 1 - NOME: QUALIDADE e ID: 2 - NOME: QUALIDADE na tabela GRUPO e se escolher os 3 primeiros privilégios ele pega corretamente o primeiro ID do grupo Inserido: na taleba PRIVILÉIGO - ID_GRUPO: 1 - ID_PRIVILEGIO: 1 e ID_GRUPO: 1 - ID_PRIVILEGIO: 2 e ID_GRUPO: 1 e ID_PRIVILEGIO: 3, ele não pega o ID_GRUPO: 2 que nem mesmo deveria ser criado nesse caso, não sei se por causa do uso do insert_id ele faz uma nova inserção no grupo, precisava descobrir por que está inserindo duas vezes o grupo na tabela grupo, estou quase para inserir um delete no final para sempre excluir esse ultimo grupo criado, mas queria entender por que isso está ocorrendo para não acontecer em códigos futuros, muito obrigado! -
Insert_id PHP duplicando INSERT
pergunta respondeu ao chiquito de chiquito em Tutoriais & Dicas - PHP
Versão do PHP PHP Version 7.3.31 $id = $_POST['codigo'];, recebo uma array <form action="grupo.php" method="POST" class="mbr-form form-with-styler"> <div class="dragArea row"> <font class="mbr-section-text mbr-fonts-style align-left mb-0 mt-0 display-4"> <div class="col-md-12 form-group mb-3" data-for="privilegio"> <?php $resultado = "SELECT * FROM privilegio"; $busca = mysqli_query($conexao, $resultado); ?> <table width="60%"> <tr> <td style='vertical-align:middle' align='left' colspan="2"> <div class="col-md-12 form-group mb-3" data-for="grupo"> <input type='text' name='grupo' placeholder='nome do grupo' data-form-field='grupo' class='form-control' required> </div> </td> </tr> </table> <?php while($dados = mysqli_fetch_assoc($busca)) { ?> <table> <tbody> <tr> <td> <label class='switch'> <font class="mbr-section-text mbr-fonts-style align-left mb-0 mt-0 display-4"> <input id='codigo[]' name='codigo[]' type='checkbox' value="<?php echo $dados['id'];?>"> <div class='slider round'> </div> </label> </td> <td style='vertical-align:middle' align='left'> <?php echo $dados['nome'];?> </td> </tr> </tbody> </table> <?php } ?> </div> <div class="col-lg-12 col-md-12 col-sm-12 align-center mbr-section-btn"> <input class="btn btn-primary" type="submit" id="submit" name="submit" value="cadastrar"></font> </div> </div> </form> for($i=0; $i<count($id); $i++ ) { para percorrer todas os resultados da array -
chiquito começou a seguir Insert_id PHP duplicando INSERT
-
Estou gravando um grupo em uma tabela e pego uma array dos privilégios e gravo em outra tabela, para identificar todos os privilégios pertencentes ao grupo, utilizo o insert_id para pegar o último ID da tabela grupo e incluir na tabela privilegio juntamente com os privilegios selecionados, mas o grupo está duplicando na tabela grupo, segue abaixo o código, não sei o que posso estar fazendo de errado: $grupo = $_POST['grupo']; $id = $_POST['codigo']; $sql = "SELECT id FROM grupo WHERE nome = '$grupo'"; $result = $conexao->query($sql); if ($result->num_rows > 0) { echo "O grupo '$grupo' já existe."; } else { // Inserir dados na tabela grupo $smt = "INSERT INTO grupo (nome) VALUES ('$grupo')"; } if ($conexao->query($smt) === TRUE) { // Pegar o ID do último grupo inserido $id_grupo = $conexao->insert_id; for($i=0; $i<count($id); $i++ ) { $insere = "INSERT INTO grupo_privilegio(id_grupo,id_privilegio) VALUES ('$id_grupo','$id[$i]')"; $resultado = mysqli_query($conexao, $insere); } } por exemplo se inputar o nome do grupo: TESTE e os privilegios 1, 2, 3 e 5 e esse grupo TESTE for o primeiro ID da tabela grupo, armazena corretamente na tabela privilegio ID_grupo ID_Privilegio 1 1 1 2 1 3 1 5 mas na tabela grupo invés de apenas gravar o grupo TESTE com o código 1, está gravando: ID NOME 1 TESTE 2 TESTE Não consegui descobrir por que está duplicando o grupo, alguém poderia ajudar por favor, obrigado!