• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Oskitz

Código para apagar campo de base de dados

9 mensagens neste tópico

Boa tarde pessoal

Eu tenho este codigo que mostra uma determinada tabela da base de dados e que deveria dar para apagar um campo mas não tou a conseguir apagar.. Alguem pode ver o que poderá estar mal sff?

 <HTML>
<HEAD>
<TITLE>Apagar1.php</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Apagar um registo</h1>
<br>
<?
//Conexão com a base
mysql_connect("localhost","******","******");
echo '<FORM METHOD="POST" ACTION="apagar2.php">link<br>';
//Criamos a sentença SQL executamo-la
$sSQL="Select link From Link Order By link";
$result=mysql_db_query("teste",$sSQL);
echo '<select name="link">';
//Mostramos os registos em forma de menu dinâmico
while ($row=mysql_fetch_array($result))
{
   echo '<option>'.$row["link"];
}
mysql_free_result($result)
?>
</select>
<br>
<INPUT TYPE="SUBMIT" value="Apagar!">
</FORM>
</div>
</BODY>
</HTML> 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva

Eu não percebi a 100% o que precisavas e acho que devias colocar aqui o código do apagar2.php

Vou então ter em conta que usas o apagar1.php, para escolher através da option o que vais apagar.

Eu fazia assim:

//Mostramos os registos em forma de menu dinâmico
while ($row=mysql_fetch_array($result))
{
   echo '<option value="'.$row["idlink"].'">'.$row["link"];
}
mysql_free_result($result)

Nota: não esquecer de no sql incluir o campo idlink.

Assim passavas o id por POST para o apagar2.php, e era só fazeres o código:

$sSQL = "DELETE FROM Link WHERE idlink='".$_POST['idlink']."' LIMIT 1";
....

Não sou expert, mas penso que será isto que precisavas.

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu no apaga2.php tenho:

<HTML>
<HEAD>
<TITLE>Apagar2.php</TITLE>
</HEAD>
<BODY>
<?
//Conexão com a base
mysql_connect("localhost","******","******");
//Criamos a sentença SQL y executamo-la
$sSQL="Delete From link Where Link='$Link'";
mysql_db_query("teste",$sSQL);
?>
<h1><div align="center">Registo Apagado</div></h1>
<div align="center">
<a href="leitura.php">Visualizar o conteúdo da base</a>
</div>
</BODY>
</HTML>

Ja vou experimentar a tua sugestão :)

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimentei a tua sugestão e dá exactamente a mesma coisa..

No apagar2.php não viste nada de anormal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva

A única coisa que me chama assim mais a atenção, é na string para SQL

$sSQL="Delete From link Where Link='$Link'";

Não identificaste a variavel $Link que vem do POST, então ou defines a variavel antes, ou colocas a variavel $sSQL assim:

$sSQL="Delete From link Where Link='".$_POST['Link']."'";

Testa isso

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

De notar que esse 2o trecho de código, Blue_Acid, está vulnerável a SQL injection.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

De notar que esse 2o trecho de código, Blue_Acid, está vulnerável a SQL injection.

Obrigado pela chamada de atenção, tal como referi não sou expert nisto  :D nem em nada diga-se de passagem.

Assim sendo para proteger o código, usa-se o addslashes() se não estou em erro, ficando:

$sSQL="Delete From link Where Link='".addslashes($_POST['Link'])."'";

Se estiver errado, apitem :) agradeço sempre quem ajuda a melhorar os conhecimentos.

Oskitz, já resultou?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usares o addslashes() resolve, embora não seja aconselhado se não souberes o estado das magic_quotes. Quando usas MySQL, o recomendado é usares o mysql_real_string_escape(). Dá uma olhada no tópico Vulnerabilidades em aplicações web em sticky na raíz do quadro de PHP. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eh eh e entretanto o interessado ou desistiu ou nem quis saber de fechar o tópico, pelo menos um obrigado aqui para o Blue_Acid e para o djthyrax

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora