Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
Rafael Biagione

[Resolvido] Excluir registros de um banco de dados

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Refere-se a apagar um único registro por vez.

    E eu não sei qual código devo usar, já que sou iniciante, quase um leigo em PHP.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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";
    }

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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>

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Ok, vou pesquisar e qualquer dúvida ou problema eu posto aqui.

    Você não poderia me passar o código que lista os dados vindos do banco? Só para eu economizar tempo?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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.

    Editado por dif
    Unir postagens em menos de 24h

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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."

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Dif, fiz as alterações e o erro continua.

    A conexão com o banco de dados está correta.

    O paramêtro do link não deve estar correto... Quando clico, fica assim: deleta.php?id=$ID

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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>

    
    

    Editado por dif
    Alterar o código

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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);

    ?>


    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • O que seria o arquivo conexão.php?

    É onde eu devo inserir o ("conj/loj.php");?

    É que há erros nas linhas 21, 23, 29 e 32 mesmo substituindo o conexao.php pelo ("conj/loj.php");.

    Editado por Rafael Biagione

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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);

    ?>

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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...

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    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

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Visitante
    Este tópico está impedido de receber novos posts.
    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×