Ir ao conteúdo
  • Cadastre-se

Excluir registros de um banco de dados


Rafael Biagione

Posts recomendados

Preciso criar uma opção para excluir registros de um banco de dados em PHP.

É um painel administrativo o que estou criando e ele deverá ter esta opção.

Não sei qual é o código que devo utilizar.

Ele deverá ser inserido na página admin.php, que é a página inicial do painel ou em uma página separada?

Agradeço quem puder ajudar.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Moderador

Não entendi sua pergunta, refere-se a apagar um unico registro ou todos da tabela?

se for um unico registro podes usar o DELETE.. se for todos de uma unica vez.. podes usar o truncate que zera a tabela

Não entendi sua pergunta, refere-se a apagar um unico registro ou todos da tabela?

se for um unico registro podes usar o DELETE.. se for todos de uma unica vez.. podes usar o truncate que zera a tabela

Link para o comentário
Compartilhar em outros sites

  • Moderador

Você vai criar um arquivo chamado deleta.php

dentro dele, você recebe a ID do registro que quer apagar e realiza a instrução SQL de delete.

exemplo:


<a href="deleta.php?id=$id">Excluir</a>

NOte que no link a variavel $id recebe a ID consultada quando você listar os registros...

com base nisso voce criará um arquivo php.. que recebe via GET este id, e excluir o registro. Se você sabe fazer o processo de inserir dados.. o deletar é a mesma coisa você utilizará a instrução de DELETE FROM tabela

desta maneira:


<?php
$id = $_GET["id"];

include 'conexao.php';
$deleta = mysql_query("DELETE FROM tabela WHERE id = $id");

if($deletra){
echo "O registro foi excluido";

}else{
echo "Infelizmente não foi possivel excluir";
}

Link para o comentário
Compartilhar em outros sites

Antes, então, eu teria que criar um código que faça exibir os registros na página deleta.php? Ou os registros vão surgir no código em PHP?

Fiz isso:

deleta.php


<?php
$id = $_GET["id"];

include 'conexao.php';
$deleta = mysql_query("DELETE FROM tabela WHERE id = $id");

if($deletra){
echo "O registro foi excluido";

}else{
echo "Infelizmente não foi possivel excluir";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<a href="deleta.php?id=$id">Excluir</a>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • Moderador

Não, Geralmente se cria um arquivo onde você lista os dado vindo do banco... recomendo que se nã foi feito ou não sabe ainda.. aprenda a listar os dados cadastrados no banco antes de criar o script de exclusão.

Na verdade, se você souber o básico já da pra fazer... que é listar dados, incluir e excluir dados com php.. recomendo da uma pesquisada no google, ou ver uma video aula no youtube ou outro lugar que você ache.. sobre como listar os dados do banco de dados.. inserir e excluir

Link para o comentário
Compartilhar em outros sites

  • Moderador

Bom, eu ate poderia te passar o código aqui.. pelo grau de simplicidade... mas o objetivo é justamente este, se "economizar" tempo, você não vai aprender o básico necessário entendes?

Por isso eu sugeri que você "perdesse esse tempo" pesquisando estudando o código, eaí postar aqui o que conseguir faze, mesmo que esteja errado, nós vamos corrigir e ajudar você.

Por hora, posso te dar algumas dicas.

Para listar, precisas ter uma conexão com o banco de dados, uma instrução SQL consultando os dados desejados e jogar-los dentro de um laço de repetição while para que ele liste todos os dados.

um abraço

Link para o comentário
Compartilhar em outros sites

Bom, criei a página select.php e funcionou:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
include ("conj/loj.php");
if (!$conn)
{
die('Não foi possível conectar.' . mysql_error());
}

mysql_select_db("free_banco_de_dados", $conn);

$result = mysql_query("SELECT * FROM clientes");

echo "<table border='1'>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Email</th>
<th>usuario</th>
<th>senha</th>
</tr>";

while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['ID'] . "</td>";
echo "<td>" . $row['Nome'] . "</td>";
echo "<td>" . $row['Email'] . "</td>";
echo "<td>" . $row['usuario'] . "</td>";
echo "<td>" . $row['senha'] . "</td>";
echo "</tr>";
}
echo "</table>";

mysql_close($conn);
?>
<a href="deleta.php?id=$ID">Excluir</a>
</body>
</html>

Agora, preciso saber como excluir os registros...

Criei a página deleta.php dessa forma e dá erro quando tento excluir os registros:


<?php
$id = $_GET["ID"];

include ('conj/loj.php');
$deleta = mysql_query("DELETE FROM clientes WHERE ID = $ID");

if($deletra){
echo "O registro foi excluído.";

}else{
echo "Infelizmente não foi possível excluir.";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

</body>
</html>

Incluí o código em PHP dentro das tags <body> ... </body> e também deu erro.

Link para o comentário
Compartilhar em outros sites

  • Moderador

Beleza, mas possue um pequeno erro.. alias nem sei se deveria se chamar de erro.. veja este link:

<a href="deleta.php?id=$ID">Excluir</a>

Note que você ta passando um parametro $ID, só que essa variavel não existe..

então podes criar ela ali logo abaixo do while:

$ID = $row['ID']

e na tabela ali trocar o $row['ID'] por $ID ( já que foi atribuido o indice de $row na variavel $ID)

no seu arquivo de deleta esta todo certo, apenas arrume o nome da variavel dentro do IF

abraço

Link para o comentário
Compartilhar em outros sites

Fiz as alterações desta forma, mas o erro continua:

select.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
include ("conj/loj.php");
if (!$conn)
{
die('Não foi possível conectar.' . mysql_error());
}

mysql_select_db("free_banco_de_dados", $conn);

$result = mysql_query("SELECT * FROM clientes");

echo "<table border='1'>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Email</th>
<th>usuario</th>
<th>senha</th>
</tr>";

while($row = mysql_fetch_array($result))
{
$ID = $row['ID'];
echo "<tr>";
echo "<td>" . $ID . "</td>";
echo "<td>" . $row['Nome'] . "</td>";
echo "<td>" . $row['Email'] . "</td>";
echo "<td>" . $row['usuario'] . "</td>";
echo "<td>" . $row['senha'] . "</td>";
echo "</tr>";
}
echo "</table>";

mysql_close($conn);
?>
<a href="deleta.php?id=$ID">Excluir</a>
</body>
</html>

E no deleta.php, corrigi a variável dentro do IF.

O erro que surge é:

"Infelizmente não foi possível excluir."

Link para o comentário
Compartilhar em outros sites

  • Moderador

Agora que vi, no seu deleta.php está com uam variavel errada ali. veja se assim corrige o erro:


<?php
[COLOR="Red"]$id[/COLOR] = $_GET["[COLOR="Red"]id[/COLOR]"];

include ('conj/loj.php');
$deleta = mysql_query("DELETE FROM clientes WHERE ID = [COLOR="Red"]$id[/COLOR]");

if($deleta){
echo "O registro foi excluído.";

}else{
echo "Infelizmente não foi possível excluir.";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

</body>
</html>

Note que eu destaquei em vermelho.. deixe em minusculo mesmo para evitar problemas

Se ainda assim não funcionar, veja como está fazendo a conexão com o banco de dados.. ou ver se realmente está passando o parametro no link

pra ver se está passando o valor no parametro.. quando clicar no link.. o endereço tem que ficar algo parecido com isso: deleta.php?id=3

Link para o comentário
Compartilhar em outros sites

  • Moderador

Agora observei com mais calma... o link de excluir esta fora do da tag php, e fora do while.

tente desta maneira e Veja se assim resolve:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php
include ("conj/loj.php");
if (!$conn)
{
die('Não foi possível conectar.' . mysql_error());
}

mysql_select_db("free_banco_de_dados", $conn);

$result = mysql_query("SELECT * FROM clientes");

echo "<table border='1'>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Email</th>
<th>usuario</th>
<th>senha</th>
<th>Ações</th>
</tr>";

while($row = mysql_fetch_array($result)){
$ID = $row['ID'];
echo "<tr>";
echo "<td>" . $ID . "</td>";
echo "<td>" . $row['Nome'] . "</td>";
echo "<td>" . $row['Email'] . "</td>";
echo "<td>" . $row['usuario'] . "</td>";
echo "<td>" . $row['senha'] . "</td>";
echo "<td> <a href='deleta.php?id=$ID'>Excluir</a></td>";
echo "</tr>";
}
echo "</table>";

mysql_close($conn);
?>

</body>
</html>

Geralmente eu uso o fetch_object que eu acho melhor tratar os registros como objeto.. veja abaixo como EU faria:

conexao.php


<?php
$conn = mysql_connect("127.0.0.1", "usuario", "senha");
$banco = mysql_selecy_db("free_banco_de_dados", $conn);
?>


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<table border='1'>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Email</th>
<th>usuario</th>
<th>senha</th>
<th>Ações</th>
</tr>
<?php

//não sei o que é isso
include ("conj/loj.php");

inclui a conexao com o banco de dados
//include "conexao.php";

$result = mysql_query("SELECT * FROM clientes");
while($cliente = mysql_fetch_object($result)){
echo "<tr>
<td>$cliente->ID</td>
<td>$cliente->Nome</td>
<td>$cliente->Email</td>
<td>$cliente->usuario</td>
<td>$cliente->senha</td>
<td><a href="deleta.php?id=$cliente->ID">Excluir</a></td>
</tr>

mysql_close($conn);
?>
</table>

</body>
</html>


Link para o comentário
Compartilhar em outros sites

  • Moderador

Não, problemas você não vai ter. só toma cuidado com a sujeira no código... como por exemplo a tabela que você cria dentro do while.. não é preciso ficar concatenando parte por parte como fez, podes fazer tudo dentro de um echo só.. enfim sao apenas detalhes.

abraço

Link para o comentário
Compartilhar em outros sites

Dif, se não for abuso, você poderia me ajudar a solucionar um outro problema?

No painel administrativo, preciso que a página admin.php fique protegida para não ser acessada por usuários que não estiverem logados no sistema.

Criei a página logar.php desta forma:


<?php
session_start();
include ("conj/loj.php");

$senha = $_POST["senha"];
$usu = $_POST["usuario"];

$userbusca =mysql_query("SELECT * FROM clientes WHERE usuario = '$usu' AND senha = '$senha' " ) or die(mysql_error());

if(mysql_num_rows($userbusca) == 1) {

$_SESSION["login"] = $_POST["usuario"];
$_SESSION["senha"] = $_POST["senha"];
header("Location:admin.php");
}else{
echo '<a href="javascript:history.go(-1)">Usuário e/ou senha inválidos.</a>';
}

?>

Mas, a página admin.php continua sendo acessada mesmo sem login, ou seja, há algo de errado com o código desta página logar.php

Link para o comentário
Compartilhar em outros sites

  • Moderador

Sim, há alguns erros no seu código. EU faria desta maneira:


<?php
session_start();

//recebe os dados do formulario
$login = $_POST["usuario"];
$senha = $_POST["senha"];

//faz a proteção contra sql injection
$loginSeguro = addslashes($login);
$senhaSegura = addslashes($enha);

if(empty($login) OR empty($senha)){
echo" <script>
alert('Preencha todos os campos');
history.go(-1);
</script>;
exit;

}

include "conexao.php";

$sql = mysql_query("SELECT * FROM clientes WHERE usuario = '$loginSeguro' AND senha = '$senhaSegura'");

$num = mysql_num_rows($sql);

if($num == 0){
echo "
<script>
alert('Login/Senha incorretos');
history.go(-1);
</script>";
exit;
}else{

$registro = mysql_fetch_object($sql);

//pega o ID do registro
$idUsuario = $registro->ID;

//atribui a variavel de sessão
$_SESSION["IDUser"] = $idUsuario;
$_SESSION["login"] = $login;

header("Location: admin.php");

}

mysql_close($conn);

?>


Link para o comentário
Compartilhar em outros sites

  • Moderador

O arquivo conexao.php, veja em outro post meu aqui nessse seu tópico, é apenas a conexao com o banco e a seleçao do banco de dados.

claro que o codigo que eu dei é para você adaptar.. por exemplo trocar o nome de variaveis pelas quais você usa, trocar o name que você recebe do formulario... enfim.. e para você adaptar. esse treço foi tirado de um de meus projetos e funciona.. tenho certeza disso.

abraço

Link para o comentário
Compartilhar em outros sites

Fiz algumas alterações, mas as linhas 23, 30 e 33 continuam com erro.


<?php
session_start();
include ("conj/loj.php");
//recebe os dados do formulario
$usuario = $_POST["usuario"];
$senha = $_POST["senha"];

//faz a proteção contra sql injection
$usuario = addslashes($usuario);
$senha = addslashes($senha);

if(empty($usuario) OR empty($senha))
{
echo
"<script>
alert('Preencha todos os campos.');
history.go(-1);
</script>;
exit;

}

$sql = mysql_query ("SELECT * FROM clientes WHERE usuario = '$usuario' AND senha = '$senha'");

$num = mysql_num_rows($sql);

if($num == 0)
{
echo "
<script>
alert('Usuario/Senha incorretos');
history.go(-1);
</script>";
exit;
}


else
{

$registro = mysql_fetch_object($sql);

//pega o ID do registro
$ID = $registro->id;

//atribui a variavel de sessão
$_SESSION["id"] = $id;
$_SESSION["usuario"] = $usuario;

header("Location: admin.php");

}

mysql_close($conn);

?>

Link para o comentário
Compartilhar em outros sites

  • Moderador

Bem.. as unicas coisas que eu vejo de "errado" no codigo sao:

$usuario = addslashes($usuario);

melhor usar outra variavel para nao dar problemas como por exemplo:

$usuarioSeguro = addslashes($usuario);

e $_SESSION["id"] = $id; essa variavel $id, deve ser maiscula, pois foi assim que foi declarado mais acima no codigo

tente postar um print aqui mostrando erros...

Link para o comentário
Compartilhar em outros sites

  • Moderador

Olá, Está faltando uma aspas na linha 18 para fechar a aspa do echo, veja se isso resolve o problema.

na verdade, precisas prestar a atenção nas cores da sua IDE, note que tudo que fica entre aspas fica em vermelho. Então se você não fechar a aspas da linha 18, a variavel $sql e a instrução do select não será interpretado como comando mas como uma simples string dentro de aspas.

isso é um erro comum em todos os programadores!

abraço

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!