Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ronza

[Resolvido] Problema com Update e Delete

Recommended Posts

Fala Galera beleza?

 

Estou tendo problemas com Update e Delete.

 

O código é o seguinte:

 

"SELECT * FROM tabela WHERE nome = '$nome' AND id = '$id'"; (Funciona)

 

"DELETE * FROM tabela WHERE nome = '$nome' AND id = '$id'"; (Não funciona)

 

"UPDATE tabela SET nome = '$nome', categoria = '$categoria' WHERE email = '$email' AND id = '$id'"; (Não funciona)

 

Estou fazendo algo errado? Só com uma variável, sem o AND, todos funcionam!

Compartilhar este post


Link para o post
Compartilhar em outros sites

em questão do DELETE tente declarar sem o * e sem a condição do nome exemplo:

"DELETE FROM tabela WHERE id = '$id'"

 

no UPDATE faça mesma coisa declare a condição somente com a id

 

espero ter ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O * eu coloquei por engano aqui, no meu código está sem.

 

Com apenas uma variável funciona, o problema é quando põe o AND, aí para de funcionar.

 

eu queria utilizar 2 variaveis, para que quando alguem mudasse o id, travasse o código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

if($_GET['acao'] == 'delete'){

$cadastroemail 			= $_SESSION['cadastroemail'];
       $id                             = $_GET['id'];



$sql	= "DELETE FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id'";

$qr	= mysql_query($sql) or die (mysql_error());

if($qr){

	echo '<script>alert("Os dados de seu estabelecimento foram excluídos com sucesso.")</script>';
	echo "<script language='javaScript'>window.location.href='perfil.php'</script>";


	}else{

		echo '<script>alert("Erro ao excluir os dados do estabelecimento.")</script>';
		echo '<script>history.back(-1)</script>';


		}

}

		//FIM DELETE

		if($_GET['acao'] == 'voltar'){

			echo "<script language='javaScript'>window.location.href='perfil.php'</script>";

			}


Compartilhar este post


Link para o post
Compartilhar em outros sites

Para deletar um registro, você teve passar a chave primaria, senao da erro mesmo

 

DELETE FROM cadastroestab WHERE id = '$id'

 

Uma solução seria fazer exatamente o que você estava fazendo no inicio do post:

 

SELECT * FROM tabela WHERE nome = '$nome' AND id = '$id'

 

armazena a ID em uma variavel $id_delete por exemplo

 

DELETE * FROM tabela WHERE id = '$id_delete'

 

:thumbsup:

 

 

________________________________________________

 

Só pra saber, ele exibia algum erro no PHP?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para deletar um registro, você teve passar a chave primaria, senao da erro mesmo

 

DELETE FROM cadastroestab WHERE id = '$id'

 

Uma solução seria fazer exatamente o que você estava fazendo no inicio do post:

 

SELECT * FROM tabela WHERE nome = '$nome' AND id = '$id'

 

armazena a ID em uma variavel $id_delete por exemplo

 

DELETE * FROM tabela WHERE id = '$id_delete'

 

:thumbsup:

 

 

________________________________________________

 

Só pra saber, ele exibia algum erro no PHP?

 

concordo com o amigo Wingdings...

 

você terá que armazenar a ID em uma variável pra depois excluir o contrário sempre dará erro mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não exibe erro nenhum no php e nem no mysql, acho que simplesmente não encontra o registro no banco de dados.

 

Vou testar deste seu jeito Wingdings, e depois volto a postar aqui.

 

Não funcionou também..

 

Dei echo em tudo, achou um registro certinho com os dados certinhos, e mesmo assim não deleta!

Compartilhar este post


Link para o post
Compartilhar em outros sites

$cadastroemail 		= $_SESSION['cadastroemail'];
$id                     = $_GET['id'];



       $sqlpesq	        = "SELECT * FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id'";

$qrpesq			= mysql_query($sqlpesq) or die (mysql_error());

$NumRegpesq		= mysql_num_rows($qrpesq);

$regpesq                = mysql_fetch_assoc($qrpesq);


       $id_delete              = $regpesq['id'];


if($_GET['acao'] == 'delete'){


$sql	= "DELETE FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id_delete' ";

$qr				= mysql_query($sql) or die (mysql_error());

if($qr){

	echo '<script>alert("Os dados de seu estabelecimento foram excluídos com sucesso.")</script>';
	echo "<script language='javaScript'>window.location.href='perfil.php'</script>";


	}else{

		echo '<script>alert("Erro ao excluir os dados do estabelecimento.")</script>';
		echo '<script>history.back(-1)</script>';


		}

}

		//FIM DELETE

		if($_GET['acao'] == 'voltar'){

			echo "<script language='javaScript'>window.location.href='perfil.php'</script>";

			}



Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo... use somente

 $sql    = "DELETE FROM cadastroestab WHERE id = '$id_delete' ";

 

e não

 $sql    = "DELETE FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id_delete' ";

 

e veja se funciona... :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente como o Dárcio Gomes disse

Para deletar algum registro no banco de dados, você deve passar a CHAVE PRIMARIA.

 

Eu testei aqui no sql, deletar sem passar a chave primaria eis o erro:

 

Error Code: 1175. To disable safe mode, toggle the option in Preferences -> SQL Editor -> Query Editor and reconnect.

You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

MySQL Workbench

 

Talvez, existe alguma maneira de desativar esse "método de segurança", mas ai eu já não conheço, e prefiro manter as configurações padrão do banco de dados...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcionou também.

 

O problema é que todos os registros cadastrados pelo usuario, leva o e-mail dele, então não posso pegar só a variavel do e-mail, se não deleta todos os registros dele.

 

E quando utilizo o id, não deleta, mas se dou echo, ele aparece.

 

Fiz vários testes e descobri que é o id que ta dando problema, só não sei o porque!

Compartilhar este post


Link para o post
Compartilhar em outros sites

vai no seu phpmyadmin e pega o codigo da estrutura da tabela que você ta utilizando e poste ai pra gnt dar uma olhada...

 

pq uso a função de delete do geito que postamos acima e sempre funciona certinho, não será algum problema no tipo de formação de sua tabela?... :mellow:

 

Amigo... só pode ser algum problema no banco mesmo pq fiz um teste aqui com um script exatamente como você postou ai e deletou o registro de boa... :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não to conseguindo achar o código da estrutura da tabela.

 

Mas eu também já utilizei estes códigos e funcionou normalmente, só desta vez mesmo que está dando erro com o id, e só no DELETE e UPDATE, SELECT funciona, muito estranho!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o seguinte,

 

$sqlpesq = "SELECT * FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id'";

$sql = "DELETE FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id_delete' ";

Provavelmente a $sql você alterou né? posta a atualizada xD

 

Da echo nessas 2 linhas, e mostra pra gente o que exibe

 

 

 

Qual programa você utiliza pra criar as tabelas no banco de dados??

 

As tabelas, alguma delas tem referencia pra essa que você ta excluindo e vice/versa?

 

:ermm:

Compartilhar este post


Link para o post
Compartilhar em outros sites


$sqlpesq = "SELECT * FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id'";

$sql = "DELETE FROM cadastroestab WHERE cadastroemail = '$cadastroemail' AND id = '$id_delete' ";

 

Com o echo:

 


SELECT * FROM cadastroestab WHERE cadastroemail = 'phpteste@hotmail.com' AND id = '257'

DELETE FROM cadastroestab WHERE cadastroemail = 'phpteste@hotmail.com' AND id = '257'

 

Eu uso o phpmyadmin e a ultima pergunta eu nao entendi..

Compartilhar este post


Link para o post
Compartilhar em outros sites

então ronza... o amigo Wingdings quiz dizer o seguinte se essa id que você ta pegando vem de outra tabela no banco, e se ela está com os mesmo dados.

 

bom pelo menos foi o q eu entendi... :)

 

 

bom pra ver a estrutura da sua tabela no phpmyadmin...

 

abre o phpmyadmin, em seguida clique no banco em que a tabela se encontra, e clique na tabela, feito isso clique na aba estrutura, selecione toda a estrutura, da um Ctrl+C e Ctrl+v aqui e poste pra gente dar uma olhada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é a mesma tabela!

 

# Coluna Tipo Collation Atributos Nulo Padrão Extra Ação

1 id int(7) Não None AUTO_INCREMENT Alterar Eliminar Mais

2 cadastroemail varchar(100) utf8_general_ci Não None Alterar Eliminar Mais

3 estabnome varchar(100) utf8_general_ci Não None Alterar Eliminar Mais

4 estabcategoria varchar(100) utf8_general_ci Não None Alterar Eliminar Mais

5 estabendereco varchar(100) utf8_general_ci Não None Alterar Eliminar Mais

6 estabnumero varchar(100) utf8_general_ci Não None Alterar Eliminar Mais

7 estabbairro varchar(100) utf8_general_ci Não None Alterar Eliminar Mais

8 estabtel1 varchar(100) utf8_general_ci Não None Alterar Eliminar Mais

9 estabtel2 varchar(100) utf8_general_ci Não None Alterar Eliminar Mais

10 estabemail varchar(100) utf8_general_ci Não None Alterar Eliminar Mais

11 estabsite varchar(100) utf8_general_ci Não None Alterar Eliminar Mais

12 estabpalavra varchar(600) utf8_general_ci Não None Alterar Eliminar Mais

13 estabimagem varchar(1000) utf8_general_ci Não None Alterar Eliminar Mais

14 estabunlink varchar(1000) utf8_general_ci Não None Alterar Eliminar Mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.