10
respostas

Valor do ID na janela MODAL nao esta correto.

Boa noite, pessoal a duvida é a seguinte possuo uma tela onde lista todas as informações do meu banco e ao lado dois botoes um de alterar e outro excluir... ao clicar no excluir decidi chamar um MODAL para que o mesmo faça uma pergunta antes de deletar.. porem ao verificar qual o id ele esta se referindo sempre sera o ultimo, o que esta correto pois da forma que fiz sempre sera o ultimo registro, segue código da pagina de consulta:

<?php include ("cabecalho.php");?> <?php include ("conexao.php");?> <?php include ("funcoesBD.php");?>

<?php $produtos = listaProdutos($conexao); ?>

NomePrecoCor

<?php foreach($produtos as $produto) : ?>

<?= $produto['nome'] ?><?= $produto['preco'] ?><?= $produto['cor'] ?>

Alterar

Excluir

<?php endforeach ?>

<?php include ("rodape.php");?>

Porem seria possível ao clicar em excluir passar a ID correta para a parte do MODAL?

segue código do deleta-produto.php: <?php include("conexao.php"); include("funcoesBD.php");

if(isset($_POST['eliminar'])){ $id = $_POST['id']; removeProduto($conexao, $id); header("Location: consulta-produto.php");

}

?>

Obrigado.

10 respostas

Oi Matheus, o seu código veio sem formatação nenhuma, ta complicado de entender o que ali no foreach. Use o botão inserir código para ficar formatado e a gente conseguir te ajudar melhor :).

insira seu código aqui

<?php include ("cabecalho.php");?> <?php include ("conexao.php");?> <?php include ("funcoesBD.php");?>

<?php $produtos = listaProdutos($conexao); ?>

NomePrecoCor

<?php foreach($produtos as $produto) : ?>

<?= $produto['nome'] ?><?= $produto['preco'] ?><?= $produto['cor'] ?>

Alterar

Excluir

<?php endforeach ?>

<?php include ("rodape.php");?>

Codigo deleta produto: <?php include("conexao.php"); include("funcoesBD.php");

if(isset($_POST['eliminar'])){ $id = $_POST['id']; removeProduto($conexao, $id); header("Location: consulta-produto.php");

}

?>

Oi Matheus, você precisa inserir seu código entre as aspinhas. Repare que o trecho insira seu código aqui ficou formatado, mas o resto não.

<?php include ("cabecalho.php");?>
<?php include ("conexao.php");?>
<?php include ("funcoesBD.php");?>

<?php
  $produtos = listaProdutos($conexao);
?>

<div class="table-wrapper">
  <table class="table table-hover">

    <thead>
      <tr>
        <th>Nome</th>
        <th>Preco</th>
        <th>Cor</th>
      </tr>
    </thead>

  <?php
    foreach($produtos as $produto) :
  ?>

    <tbody>
      <tr>
        <!--<td><?= $produto['id'] ?></td>-->
        <td><?= $produto['nome'] ?></td>
        <td><?= $produto['preco'] ?></td>
        <td><?= $produto['cor'] ?></td>

        <td>
          <a class="btn btn-primary" href="form-altera-produto.php?id=<?=$produto['id']?>">Alterar</a>
        </td>

        <td>
        <form action="deleta-produto.php" method="post">
          <input type="text" name="id" value="<?=$produto['id']?>">  
            <div class="modal fade" id='delete-modal' tabindex="-1" role="dialog" aria-labelledby="modalLabel">
              <div class="modal-dialog" role="document">
                <div class="modal-content">
                  <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Fechar"><span aria-hidden="true">&times;</span></button>
                      <h4 class="modal-title" id="modalLabel">Excluir Item</h4>
                  </div>

                  <div class="modal-body">
                    Deseja realmente excluir este item?
                  </div>

                  <div class="modal-footer"> 
                    <button type='submit' class='btn btn-danger' name='eliminar'>Sim</button>
                    <button type="button" class="btn btn-default" data-dismiss="modal">Não</button>
                  </div>
                </div>
              </div>
            </div>
          <a class="btn btn-danger" data-toggle="modal" href='#delete-modal' >Excluir</a>
        </form>
        </td>
      </tr>
    </tbody>

  <?php
    endforeach
  ?>

  </table>
</div>

 <!-- Modal -->


<?php include ("rodape.php");?>

Segue código deleta produto

<?php 
include("conexao.php");
include("funcoesBD.php");

if(isset($_POST['eliminar'])){
    $id = $_POST['id'];
    removeProduto($conexao, $id);
    header("Location: consulta-produto.php");

}

?>

Desculpe não tinha me atentado antes.

Opa, agora ficou legal. Pelo que vi do seu código, para cada item a ser excluído vc cria um form com um input com o id produto para ser excluído. O que vc precisa passar para o modal? Pelo seu código vc não pega só o último id :). Uma outra coisa que vc pode fazer é deixar o id como argumento da action do form. Algo assim:

deleta-produto.php?id=<?=$produto['id']?>

É pq assim eu chamo o Modal e ele pergunta se eu quero excluir ou não, ai quando clico em sim ele exclui sempre a ultima id, ou sempre a primeira, dependendo do lugar que coloco, sem o modal ele funciona normalmente.

Oi Matheus, então tem tudo para ser problema no javascript que faz o modal funcionar.

Não mas não tem chamada de javascript no código...

Oi Matheus, como que o modal carregado? Estou tentando entender o que ta dando errado.. Pq o seu form está correto. O parâmetro está lá e tudo mais... O seu link tem um atributo chamado data-toggle o que me leva crer que tem algum jquery ou algo assim.. Desculpe a insistência.

Então na verdade peguei esse código do modal em um exemplo na internet, o que ocorre é que por exemplo tenho 10 produtos e suas id (1,2,3,4,5,6,7,8,9,10).. se clico para excluir o produto de ID 6 ele exclui sempre o ultimo ou seja o 10, o que me levou a pensar que a chamada do modal não recebe corretamente a ID no botão de confirmação. Possui algum outro exemplo de confirmação de operações com bootstrap? No caso só para deletar mesmo, pois estava usando o confirm do javascript e queria mudar para algo um pouco melhor graficamente. Obrigado.