Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

[URGENTE] Problema de Exclusão de lista telefônica

INDEX.PHP

<div  class="modal fade" id="ModalExcluir" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered modal-sm" role="document">
      <div class="modal-content">
        <div class="modal-header no-border">
          <h6 class="modal-title" id="exampleModalCenterTitle">Excluir este contato?</h6>
        </div>
        <div class="modal-footer no-border">
            <form method="post" action="../../controllers/controllerDeletePessoa.php">
                <input type="hidden" value="" name="idContato" id="idContato">
                <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal" onclick="window.location.reload()">Cancelar</button>
                <button type="submit" class="btn btn-danger btn-sm" onclick="window.location.reload()">Excluir</button>
            </form>
        </div>
      </div>
    </div>
</div>

CONTROLLER.PHP

<?php

include_once '../lib/ini/ini.php';
include_once '../lib/conexoes/conexaoMySql.php';

session_start();
    try{
        $pdo = conectar();
        echo 'a'. $_POST['idContato'] .'a';
        $statement = $pdo->prepare("DELETE * FROM Pessoas WHERE pessoa_id=:idContato");
        $statement->bindParam(":idContato", $_POST['idContato'], PDO::PARAM_STR);
        $statement->execute();

        $statement = $pdo->prepare("DELETE * FROM Telefones WHERE pessoa_id=:idContato");
        $statement->bindParam(":idContato", $_POST['idContato'], PDO::PARAM_STR);
        $statement->execute();

     } catch (PDOException $ex) {
        return $ex->getMessage();
    }
    $pdo = desconectar();

header("Location: ../views/agenda/index.php");

?>

Estou tentando fazer o botão excluir ir no controller e realizar a exclusão, mas de alguma forma não esta realizando. Alguém da uma ajuda :D Sendo no caso, quero pegar o idContato e fazer ele ser reconhecido no controller, ou seja pegar uma informação: id="idContato", e ser reconhecida no controller, logo conseguindo identificar e realizando a exclusão.

5 respostas

Fala, xará, bom dia!

Remova o tratamento do evento onclick no botão de submit, assim:

<button type="submit" class="btn btn-danger btn-sm">
Excluir
</button>

Testa aí e me dá um feedback.

O problema esta no qual o post não esta recebendo o idContato do index.php para o controller.php.

Li alguns foruns e me informaram que para usar o get junto ao input hidden. Desta forma:

<div class="modal fade" id="ModalExcluir" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered modal-sm" role="document">
      <div class="modal-content">
        <div class="modal-header no-border">
          <h6 class="modal-title" id="exampleModalCenterTitle">Excluir este contato?</h6>
        </div>
        <div class="modal-footer no-border">
            <form method="post" action="../../controllers/controllerDeletePessoa.php">
                <input type="hidden" name="idContato" id="idContato" value="<?php echo (int)$_GET['idContato'] ?>"/>
                <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal" onclick="window.location.reload()">Cancelar</button>
                <button type="submit" class="btn btn-danger btn-sm" onclick="window.location.reload()">Excluir</button>
            </form>
        </div>
      </div>
    </div>
</div>

No entanto não esta funcionando, e da forma que me passou não possibilitou a exclusão. Estou na luta para encontrar como fazer a exclusão funcionar mas tem algo que não faz o controller executar o delete.

Daniel, seu código está no github? Se sim, me passa o link para eu analisar e ajudar melhor.

Se não, verifique o HTML que está sendo gerado após a execução do seu index.php (no navegador, botão direito na página e exibir código-fonte). Coloca aqui pra gente.

No aguardo.

Fala, Daniel, tudo bem? Conseguiu resolver o problema?

solução!

Opa, certo. Consegui resolver. Obrigado!