Ir para conteúdo

Arquivado

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

Biel.

update

Recommended Posts

Boa noite a todos. Direto ao ponto. Pessoal na linha observação quero alterar joga bola para joga xadrez, não estou conseguindo.
NOTA: Pessoal estou fazendo UPDATE ou seja o nome joao e jose já existe no banco de dados juntamente com a observação.
Na linha observação quero alterar joga bola para joga xadrez, mas não permite fazer alteração.
* Na linha nome não quero alterar o nome joao e nem permitir duplicidade
* Quero alterar apenas joga bola para joga xadrez, nada mais!
tabela_aprendiz
id  nome     observacao
1   joao     joga bola 
2   jose     joga basquete

<?php 
$nome = $_GET['nome'];
$sql = mysql_query ("SELECT * FROM tabela_aprendiz WHERE nome = '".$nome."' ");
$comparar_dados = mysql_num_rows($sql);

// se não existe altere
if($comparar_dados == 0 ){	

$SQL = mysql_query ("UPDATE tabela_aprendiz SET id ='".$id."' , nome ='".$nome."' WHERE id = '".$id"' ");

// e exiba a mensagem
echo "alteração realizada com sucesso"; 
}

//se já existe exiba a mensagem
else  {echo "não foi possível fazer alteração. O nome já existe no banco de dados ";}

?>


<form action="" method="post">
<textarea name="observacao" >joga xadrez</textarea>
<input type="submit" name="enviar" value="enviar" >
</form>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na linha nome não quero alterar o nome joao e nem permitir duplicidade

 

Duplicidade:

Você pode dar um Select antes de fazer a Operação...

E restringir o campo como UNIQUE garantindo a integridade do Banco. (Exemplo abaixo)

 

Não quero alterar o nome do João:

 

O Mysql não faz nenhuma ação se você não especificar.

 

Veja os exemplos abaixo para tentar entender melhor...

 

Vamos criar uma tabela chamada user:

CREATE TABLE user(
   id   int(8) primary key auto_increment
  ,nome varchar(250) not null unique
  ,acao varchar(250)
 );

PS: Repare no unique, ele automaticamente obriga todos os registros serem diferentes uns dos outros (:

 

Definição mais formal:

http://dev.mysql.com/doc/refman/5.7/en/constraint-primary-key.html

 

Ou mais didatica com exemplos:

http://www.w3schools.com/sql/sql_unique.asp

 

 

Vamos testar se esta budegas funciona....

INSERT INTO user ( id ,nome ,acao ) VALUES (1, 'Silva', 'VOADORA');
/* OK, 1 row affected (0.01 sec) */

INSERT INTO user (id, nome ,acao ) VALUES (2, 'Silva Sauro', 'VOADORA');
/* OK, 1 row affected (0.01 sec) */

 

Ok.. agora vamos repetir o 'nome' da tabela user.

 

INSERT INTO user ( id ,nome ,acao ) VALUES (3, 'Silva', 'VOADORA');
/* ERROR 1062 (23000): Duplicate entry 'Silva' for key 'nome' */

Perfeito, o Mysql não deixou duplicar o registro, afinal já existia na coluna 'nome' o valor 'Silva'.

 

Porem seria interessante você fazer esse Select antes de tentar dar o Insert, até para melhorar a experiencia do usuário ao invés de estourar um erro na cara dele. (Que tal usar o Ajax que você aprendeu no ultimo post?!)

 

 

Novamente.

 

O Mysql não faz nenhuma ação se você não especificar.:

 

Agora vamos alterar a tabela user, registro 2 (Olha lá em cima... era User = Silva Sauro, acao = VOADORA...

 

 

Vamos dar um Select nela antes de alterar...

mysql> select * from user;
+----+-------------+---------+
| id | nome        | acao    |
+----+-------------+---------+
|  1 | Silva       | VOADORA |
|  2 | Silva Sauro | VOADORA |
+----+-------------+---------+
2 rows in set (0.08 sec)

 

Porem ele aprendeu a dar Rasteira:

UPDATE user SET acao = 'RASTEIRA' WHERE id = 2;

Checando...

mysql> select * from user;
+----+-------------+----------+
| id | nome        | acao     |
+----+-------------+----------+
|  1 | Silva       | VOADORA  |
|  2 | Silva Sauro | RASTEIRA |
+----+-------------+----------+

 

Repare que não pedi por nenhum momento alteração na coluna nome, logo ela permanece intocada....

A unica coisa que me atentei foi especificar a chave primaria

WHERE id = 2;

Garantindo que apenas o registro 2 sofresse alteração. (acao = 'RASTEIRA')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Biel, Bom dia!

 

no código que você postou não tem nada de alteração no campo Observação.

 

mas a logica seria mais ou menos como nosso amigo acima mostrou.

 

UPDATE tabela_aprendiz SET observacao = VARIAVEL OBSERVAÇÃO WHERE id= variavel id

 

 

ate 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.