Ir para conteúdo
Fórum Script Brasil
  • 0

o que está errado? Excluir com PHP PDO


Edilson Santiago

Pergunta

Olá amigos, tenho uma página "usuarios.php" que me retorna todos os registros da tabela do BD.

No fim de cada linha, tenho dois links, um para "editar" e outro para "excluir". O "Excluir" chama a página "usu_excluir.php" acrescida da "id" do usuário daquela linha. O link do "excluir" é esse:

<a href="usu_excluir.php?<?php echo $row['id']?>">Excluir</a>

Aí, se eu estiver tentando excluir o regsitro de id 10, por exemplo, ele abre a página usu_excluir com o link:

https://meu_site/paginas/usu_excluir.php?10

Só que a página não abre. Retorna "essa página não está funcionando. Erro 500". 

 

No arquivo "classes/usuarios.php" fiz o seguinte:

 public function excluir($id){
                if($this->existeID($id)){
                    $sql = "DELETE FROM usuarios WHERE id = :id";
                    $sql = $this->pdo->prepare($sql);
                    $sql->bindValue(':id', $id);
                    $sql->execute();

                    return true;
                } else {
                    return false;
                }
            }

E minha página "usu_excluir.php, fiz assim:

<?php
session_start();
if(!isset($_SESSION['id']))
 {
    header("location: ../login.php");
    exit;
 }

   require_once '../classes/usuarios.php';
   $u = new Usuario;
   
$id = $_SERVER['QUERY_STRING'];

                $u->conectar("Meu banco de dados","localhost","usuário","senha"); 
                   if($u->msgErro == "")
                   {
                        if(confirm("Atenção. O Usuário será deletado.Tem certeza?"))
                        {
                        $u->excluir($id);
                        } else {
                                header("location ../paginas/painel.php"); 
                               }
                    }        
                
?>

Onde está o erro? 

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 1

Ok, esse é o código completo do usuarios.php:

<?php 
 
Class Usuario
{   
    private $pdo;
    public $msgErro = "";
     
    public function conectar($nome, $host, $usuario, $senha) {
        global $pdo;
        try
    {
        $dsn = 'mysql:host=' . $host . '; dbname=' . $nome;
        $options = [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'];
        $pdo = new PDO($dsn, $usuario, $senha, $options);
         
    } catch(PDOException $e) {
        $msgErro = $e->getMessage();
    }
    }
     
    public function cadastrar($nome, $email, $senha)//, $situacoe_id, $niveis_acesso_id, $created, $modified)
    {
        global $pdo;
        $sql = $pdo->prepare("SELECT id FROM usuarios WHERE email = :e");
        $sql->bindValue(":e",$email);
        $sql->execute();
        if($sql->rowCount() > 0)
        {
            return false;
        }
        else
        {
            $created = date('d/m/y');
            $modified = date('d/m/y');
            $sql = $pdo->prepare("INSERT INTO usuarios (nome, email, senha, situacoe_id, niveis_acesso_id, created, modified) VALUES (:y, :a, :p, :s, :n, :c, :m)");
                $sql->bindValue(":y",$nome);
                $sql->bindValue(":a",$email);
                $sql->bindValue(":p",password_hash($senha, PASSWORD_BCRYPT,['cost=>12']));
                $sql->bindValue(":s",1);
                $sql->bindValue(":n",1);
                $sql->bindValue(":c",$created);
                $sql->bindValue(":m",$modified);
                $sql->execute();
                return true;
        }
    }
    
    public function excluir($id){
                global $pdo;
                $sql = $pdo->prepare("DELETE FROM usuarios WHERE id = :e");
                $sql->bindValue(":e",$id);
                $sql->execute();
                return true;
                }
    
     
    public function logar($email, $senha)
    {
        global $pdo;      
        $sql = $pdo->prepare("SELECT id FROM usuarios WHERE email = :a AND senha = :p");
        $sql->bindValue(":a",$email);
        $sql->bindValue(":z",$senhacorreta);
        $sql->bindValue(":p",password_hash($senha, PASSWORD_BCRYPT,['cost=>12']));
        if(password_verify(":z"==":p")){
             $sql->execute();
        if($sql->rowCount() > 0)
        {
            $dado = $sql->fetch();
            session_start();
            $_SESSION["id"] = $dado["id"];
            return true;
        }
        else
        {
            return false;
        }
            
        }
       
    }

}
?>

E esse é o print da página de erro:

 

erro.png

Descobri que o problema está na confirmação. Eliminei o trecho

if(confirm("Atenção. O Usuário será deletado.Tem certeza?"))
                        {

e deletou o registro. Contudo preciso dessa confirmação, e também que redirecione de volta para  a página de registros depois da exclusão. 

Link para o comentário
Compartilhar em outros sites

  • 1

Resolvi o problema, colocando a confirmação na página dos usuários:

<a href=usu_excluir.php?<?php echo $row['id']?> onclick="javascript:return confirm('Atenção! O usuário <?php echo $row['nome']?> será excluído permanentemente. Você tem certeza disso?')" >Excluir</a>
                    </td>

E na página "usu_excluir.php", acrescentei:

 $u->conectar("meu banco de dados","localhost","meu usuario","minha senha"); 
                   if($u->msgErro == "")
                   {
                        
                        $u->excluir($id);
                        echo "registro excluído com sucesso. Você será redirecionado em 3 segundos...";
                        echo "<meta http-equiv=refresh content='3;URL=painel.php'>";
                        } else {
                                header("location ../paginas/painel.php"); 
                               }

 

Ficou meio que na gambiarra, mas foi o que deu, rsrs.

Link para o comentário
Compartilhar em outros sites

  • 0

O meu conhecimento em PHP é bem precário, eu ainda não sei trabalhar com o PDO e muito menos com a programação orientada a objetos. Mas estou grato pelo código usuario.php, com ele improvisei esses códigos:

 

tbusuario
------------------------------
Username,varchar(45),PK,NN
Password,varchar(45)
Email,varchar(45)
id,varchar(45)

astudy.php
------------------------------
<a href="?id=5">listar usuarios</a>
<?php
require_once 'astudy2.php';
$u=new usuario;
if (isset($_GET['id'])){
	$u=new usuario;
	$u->listar("tbusuario");
	echo "<a href='?exc=5'>excluir usuario 5</a>";}
if (isset($_GET['exc'])){
	$exc=$_GET['exc'];
	$u=new usuario;
	$u->excluir($exc,"tbusuario");
	$u->listar("tbusuario");}
?>

astudy2.php
------------------------------------------------
<?php
class usuario {   
    private $mysqli;
    public function conectar() {
		global $mysqli;
		$mysqli=mysqli_connect("localhost","root","","astudy");}
    public function excluir($id,$table){
        global $mysqli;
		$this->conectar();
        $query = $mysqli->query("delete from $table where id = $id");}
	public function listar($table){
		global $mysqli;
		$this->conectar();
		$query=$mysqli->query("select * from $table");
		while ($row=$query->fetch_assoc()){
			var_dump($row);}
		}
}
?>

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...