1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda PHP - apagar entrada em base de dados

Discussão em 'Web Development' iniciada por bmccruz, 7 de Abril de 2008. (Respostas: 9; Visualizações: 1955)

  1. bmccruz

    bmccruz Suspenso

    Boas!

    É o seguinte estava a tentar escrever um código em php para apagar determinada entrada na base de dados.
    Funciona da seguinte forma: tenho uma tabela com todas as entradas e depois um botão de delete para cada uma delas que abre delete.php, que terá um parte de confirmação antes de proceder a remoção dessa entrada.
    É ai que tenho problemas em fazer isto funcionar, deixo aqui o código do delete.php para que alguém me possa ajudar. Obrigado desde já.

    Código:
    <?php
    include 'library/config.php';
    include 'library/opendb.php'; 
    $id = $_GET['id'];
    
    
    if(isset($_POST['submit'])){
    
      $sql = "DELETE FROM content WHERE id=$id";
      $result = mysql_query($sql) or die(mysql_error());
      header("Location: teste.php");
    }
    
    else
    {
      header("Location: teste2.php");
    }
    
    
    print "<form method='post'>";
    
       print "<input type='hidden' name='id' value='$id'>";
    
       print "Tem a certeza?";
    
       print "<input type='submit' name='submit' value='Remover'></form>"
    
    include 'library/closedb.php';
    ?>
     
  2. anjo2

    anjo2 Power Member

    Tens um parêntesis a mais. Podias explicar o que faz cada include e como tens isso configurado.
     
  3. bmccruz

    bmccruz Suspenso

    o config.php tem os dados para aceder a base de dados como: o server, login,....
    o opendg.php faz a ligação
    o closedb.php fecha a ligação


    O link traz o $id que ele vai buscar e vai fazer o delete desse id. É suposto é ter essa cena de confirmação para segurança antes de os dados serem apagados aparecer essa form e que ao submeter então ai sim vai apagar naquela table o id que já vem detrás.



    Qual é o ( que está a mais?
     
    Última edição: 7 de Abril de 2008
  4. Serrot

    Serrot Power Member

    Tens que ser um pouco mais específico.
    Qual é o erro que está a dar ??


    Parece-me que te falta as plicas em $sql = "DELETE FROM content WHERE id=$id";
    devia estar:

    $sql = "DELETE FROM content WHERE id='$id'";
    ou
    $sql = "DELETE FROM content WHERE id='" . $id . "'";

    para alem disto só dizendo qual é o erro.


    Tb convem utilizares algo mais seguro que
    $id = $_GET['id'];
    penso que assim estás sujeito a mysql injection
     
  5. bmccruz

    bmccruz Suspenso

    o problema é que a página fica em branco

    como posso pôr isto a mostrar os erros?
     
  6. hostmake

    hostmake Power Member

    mas apagou?

    mete isto no inicio da página: error_reporting(E_ALL);


    faz um echo ao POST.
    faz um if dps do delete para verificar se o mysql_affected_rows é maior que 0, tens que ir fazendo testes.
    não sei bem qual é o problema
     
  7. nosf

    nosf Power Member

    1º Atenção ao metodo q usas para passa valores da form para a pagina...

    Na form:
    print "<form method='post'>"; <--------- Estas a usar o POST

    Quando tentas receber o valor da form:
    $id = $_GET['id']; <------- Estas a usar o GET

    Tens que usar POST nos 2 sitios...

    2º Falta-te o action na form...
     
  8. hostmake

    hostmake Power Member

    o action não é necessário, ele faz POST no SELF.

    agora $_GET e $_POST também é possível, mas não nesse caso.
    corrige o que o nosf disse.
     
  9. nosf

    nosf Power Member

    Não gosto de deixar parametros omitidos, porque na maior parte das vezes em que reutilizares o código, já lá estão prontos a ser utilizados. :P
     
  10. hostmake

    hostmake Power Member

    Não estamos a desenvolver as nossas plataformas aqui, até porque eu não faço sempre os mesmos passos, crio classes e ponto final :P
     

Partilhar esta Página