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á.
<?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';
?>
Tens um parêntesis a mais. Podias explicar o que faz cada include e como tens isso configurado.
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?
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
o problema é que a página fica em branco
como posso pôr isto a mostrar os erros?
hostmake
08-04-2008, 11:45
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
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á.
<?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';
?>
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...
hostmake
08-04-2008, 13:59
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.
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.
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
hostmake
08-04-2008, 15:32
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