Jump to content
zulamon

Como apagar um registo na BD MySQL via PHP

Recommended Posts

zulamon

Boa tarde , ha ja algumas horas a tentar resolver esta situação, quero apagar um registo  da listagem que me aparece mas n estou a conseguir o codigo é o seguinte, não sei se estara certo

<?php 	
include 'ligacao.php';
	$id = $_GET['id'];
$opcao = $_GET['submit2'];

$id = $_POST['id'];
$date = date('d/m/Y');
$delegacao = $_POST['delegacao'];
$horario = $_POST['horario'];
$numero = $_POST['numero'];
$data_entrevista = $_POST['data_entrevista'];
$nome = $_POST['nome'];
$localidade = $_POST['localidade'];
$contacto = $_POST['contacto'];
$email = $_POST['email'];
$grau = $_POST['grau'];
$area = $_POST['area'];
$experiencia = $_POST['experiencia'];
$avalia_entrevista = $_POST['avalia_entrevista'];
$obs = $_POST['obs'];
$arquivo_activo = $_POST['arquivo_activo'];
$arquivo_inactivo = $_POST['arquivo_inactivo'];

$sql = "Delete from	entrevista  	where
   
//com isto ou sem isto
   id='$id',
   date='$date',
   delegacao='$delegacao',
   horario='$horario',
   numero='$numero',
   data_entrevista='$data_entrevista',
   nome='$nome',
   localidade='$localidade',
   contacto='$contacto',
   email='$email',  
   grau='$grau', 
   area='$area', 
   experiencia='$experiencia', 
   avalia_entrevista='$avalia_entrevista',  
   obs='$obs',
   arquivo_activo='$arquivo_activo',  
   arquivo_inactivo='$arquivo_inactivo'  

WHERE id='$id'";
//com isto ou sem isto
//WHERE id={$_GET['id']}";

//  echo "SQL= ".$sql;
  
$result=mysql_query($sql);

// if successfully updated. 
if( $result){
}else {
echo "ERROR";
}

header("location: list_records.php");

?>
 

Share this post


Link to post
Share on other sites
brunoais

ele mostra ERROR, n mostra?

Experimenta usar o mysql_error();

experimenta retirar o 2º where.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

ele mostra ERROR, n mostra?

Experimenta usar o mysql_error();

experimenta retirar o 2º where.

:D E experimentar concatenar as condições com AND's ou OR's não?! :D

Olá zulamon, experimenta:

$sql = "
DELETE FROM entrevista
WHERE 
   id='$id' AND
   date='$date' AND
   delegacao='$delegacao' AND
   horario='$horario' AND
   numero='$numero' AND
   data_entrevista='$data_entrevista' AND
   nome='$nome' AND
   localidade='$localidade' AND
   contacto='$contacto' AND
   email='$email' AND  
   grau='$grau' AND 
   area='$area' AND 
   experiencia='$experiencia' AND 
   avalia_entrevista='$avalia_entrevista' AND  
   obs='$obs' AND
   arquivo_activo='$arquivo_activo' AND  
   arquivo_inactivo='$arquivo_inactivo'  
";

No entanto, se lhe estás a passar o id (supondo que o id é único) ele conseguirá identificar o registo facilmente :thumbsup: , e como tal, bastará só teres a condição:

id='$id'

na cláusula WHERE :)

Abraço

Share this post


Link to post
Share on other sites
taviroquai

@zulamon,

Esse SQL que apresentaste no inicio utiliza-se quando se quer actualizar registos, com UPDATE.

Para eliminar, como o mAiN_iNfEcTiOn disse, basta passares o id:

$sql = sprintf('delete from entrevista where id = %d', mysql_real_escape_string($id));

Share this post


Link to post
Share on other sites
brunoais

Ou, na minha opinião, um código melhor:

$sql ='DELETE FROM entrevista WHERE id = \''. mysql_real_escape_string($id) . '\'';


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
mAiN_iNfEcTiOn

Ou, na minha opinião, um código melhor:

$sql ='DELETE FROM entrevista WHERE id = \''. mysql_real_escape_string($id) . '\'';

Nesse caso, comparando com o do taviroquai, era preferível uma versão editada da do traviroquai:

Alterando, ficaria assim...

$sql = sprintf("delete from entrevista where id = '%d'", mysql_real_escape_string($id));

Atenção que ambas estão correctas, mas para separar a query dos atributos, a sprintf é melhor :)

Share this post


Link to post
Share on other sites
taviroquai

Este tópico já está mais que resolvido :P

Agora já entramos em detalhes...

Na minha opinião, melhor mesmo seria com recursos a PDO ou a uma ORM... mesmo que se mude de SGBD (SQLite, PostgreSQL, MySQL), não se mexe no código :)

Share this post


Link to post
Share on other sites
zulamon

Funciona na perfeição obrigado

Nesse caso, comparando com o do taviroquai, era preferível uma versão editada da do traviroquai:

Alterando, ficaria assim...

$sql = sprintf("delete from entrevista where id = '%d'", mysql_real_escape_string($id));

Atenção que ambas estão correctas, mas para separar a query dos atributos, a sprintf é melhor :P

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.