alguem aqui percebe de php?

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

alguem aqui percebe de php?

Mensagempor Kayn » Sábado Mar 31, 2007 0:03

e que tou a precisar de ajuda num ponto particular.

A ideia é fazer aparecer num site, uma caixa de texto com um nome ja la escrito, por defeito. O visitante chega a essa caixa de texto, le o que la está, altera-a como quiser e carrega num botao para submeter o novo valor.

Detalhes:
- O valor que aparece por defeito, é tirado de uma base dados de mysql.
- O novo valor escrito na caixa de texto é colocado na BD de mysql substitundo o valor antigo que lá estava.
- O meu código está a funcionar bem até ao ponto em que o programa volta a introduzir o valor na BD. O resultado final é um espaço vazio na BD, em vez do valor correcto.


Este é o codigo que eu escrevi:

$conexao = mysql_pconnect("localhost","root","1") or die($msg[0]);
mysql_select_db("btt",$conexao) or die($msg[1]);

$id = $_GET['id'];

$query_get = mysql_fetch_array(mysql_query("SELECT * FROM dados where id='$id'",$conexao));

-------------
Pesca o valor da DB na posicao de '$id'. Este id vem de uma pagina anterior e ta a funcionar bem.
-------------

...(tabela)...
<input type="text" name="nnome" value="<? echo $query_get['nome']; ?>" />
...(tabela)...

-------------
basicamente eu crio uma caixa de texto chamada "nnome" e com o valor que vem da BD, por defeito. Ate aqui tudo bem.
-------------

$nnome = $_POST['nnome'];
$query_update = "UPDATE dados SET nome='$nnome' WHERE id='$id'";
mysql_query("$query_update") or die(mysql_error());

-------------
Passo o novo valor introduzido no campo de texto para a variavel e depois uso-a na query de mysql pra alterar os dados no sitio certo.

E acabo com um espaço em branco na base de dados, no sitio em que deveria aparecer o novo valor.

Alguem me consegue dizer o que é que eu tou a fazer mal? é que ja ando as voltas a algum tempo...

se alguem me conseguir ajudar, um grande OBRIGADO! :)
Imagem
Imagem
Kayn
Gurus
Gurus
 
Mensagens: 3038
Registado: Quarta Ago 04, 2004 3:34

Mensagempor SkylineGTR » Sábado Mar 31, 2007 1:00

Não sou nenhum expert em php, mas vou tentar dar a minha ajuda :P

Se o problema se resume em actualizar o valor na BD então o "erro" estará ao fazer o UPDATE.

A minha sugestão passa por substiruires estas duas linhas:

Código: Seleccionar todos
$query_update = "UPDATE dados SET nome='$nnome' WHERE id='$id'";
mysql_query("$query_update") or die(mysql_error());



Por algo como isto:

Código: Seleccionar todos
$query_update = "UPDATE dados SET nome='".$nnome."' WHERE id='".$id;
$result = mysql_query($query_update, $conexao) or die(mysql_error());



Penso que o erro estaria nas aspas envolvendo a variavel $query_update na passagem como parâmetro da função mysql_query().
Fiz ali uma pequena alteração no update e acrescentei a variável $conexao como parâmetro da função mysql_query que fica sempre bem :P

Experimenta e diz alguma coisa ;)
i7 920 | ASUS P6T Deluxe V2 | 6GB Corsair Dominator PC3-12800 | BFG GTX285 OC2 | 2x WD 640GB + WD 750GB + Seagate 750GB + Samsung F1 1TB | Corsair HX-620 | HP w2207 | Lian Li PC-V1110B
SkylineGTR
Membro Vitalício
Membro Vitalício
 
Mensagens: 4184
Registado: Terça Dez 28, 2004 22:26

Mensagempor Kayn » Sábado Mar 31, 2007 1:59

Nao funcionou. Continua igual.
Mas nao me parece que seja disso, e eu explico porque.

A primeira coisa que eu fiz como diagnostico, foi um echo $nnome, imediatamente antes da linha $query_update. Ele devolve-me o correctamente o que foi escrito na caixa de texto, mas intrododuz o espaco vazio na BD, o que é estranho.

A sintaxe da query tambem deve estar correcta, que ela funciona bem se eu a introduzir directo na BD. E o parametro $id nessa linha esta a funcionar bem com a mesma sintaxe.

Eu penso que isto possa ter qualquer coisa a ver com $_POST, ou como a forma como o $_POST passa os dados pro $nnome, porque se eu definir um valor pro $nnome (tipo $nnome = '1' ) imediatamente antes da $query_update, ele introduz esse valor perfeitamente na BD.

O parametro da conecção é desnecessario nesse sitio. Se ja foi aberta uma ligacao a BD na mesma pagina, com sucesso, e nas proximas for omitida, ele usa a ultima que conseguiu usar, por isso nao me dei ao trabalho. Fica codigo mais limpo, mas se é redundante...
Imagem
Imagem
Kayn
Gurus
Gurus
 
Mensagens: 3038
Registado: Quarta Ago 04, 2004 3:34

Mensagempor Triple » Sábado Mar 31, 2007 12:28

Kayn n dá para postares o resto do código? pelo menos as partes que dizem "...(tabela)... "
Triple
Membro de Ouro
Membro de Ouro
 
Mensagens: 650
Registado: Sexta Jun 24, 2005 14:27

Mensagempor SkylineGTR » Sábado Mar 31, 2007 12:35

Experimenta usar o POST directamente no UPDATE:

Código: Seleccionar todos
$query_update = "UPDATE dados SET nome='".$_POST['nnome]."' WHERE id='".$id;
i7 920 | ASUS P6T Deluxe V2 | 6GB Corsair Dominator PC3-12800 | BFG GTX285 OC2 | 2x WD 640GB + WD 750GB + Seagate 750GB + Samsung F1 1TB | Corsair HX-620 | HP w2207 | Lian Li PC-V1110B
SkylineGTR
Membro Vitalício
Membro Vitalício
 
Mensagens: 4184
Registado: Terça Dez 28, 2004 22:26

Mensagempor Triple » Sábado Mar 31, 2007 22:00

Código: Seleccionar todos
<form name="nome do formulário" method="post" action="">


Kayn o que é que tens no method? é que se tiveres posto "get" não vai funcionar.
Triple
Membro de Ouro
Membro de Ouro
 
Mensagens: 650
Registado: Sexta Jun 24, 2005 14:27

Mensagempor Kayn » Terça Abr 03, 2007 1:54

amanha ponho o codigo todo, hoje ja tou cansado pra andar a mexer em codigo.

Nao, o method nao é get, é post. mas tambem ja experimentei com get s como method e até ja experimentei chama-los com $_REQUEST('xxx') em vez de $_POST ou $_GET.

ate funciona, mas o resultado é o mesmo problema... ja tou a ficar lixado com isto, porque nao tou a ver qual é o prob.

Tambem ja tinha tentado usar directamente o $_POST pra enfiar os dados na base dados. é igual.
Imagem
Imagem
Kayn
Gurus
Gurus
 
Mensagens: 3038
Registado: Quarta Ago 04, 2004 3:34

Mensagempor scroll » Sexta Mai 11, 2007 10:09

começa o debug.

faz um print ou echo de $query_update, e vê se de facto está receber os valores das variáveis.

Já verificaste o tipo de campo nas tabelas ? para resultar à 1ª põe esses campos em NULL.


abraço
Rui Gomes
Imagem
Imagem
scroll
Aprendiz
Aprendiz
 
Mensagens: 50
Registado: Sexta Mai 11, 2007 9:55

Mensagempor N_G » Domingo Jun 24, 2007 21:59

Exactamente. Faz um echo da query. penso que o problema virá tal como dizes da variável.

Aconteceu-me algo parecido uma vez. Depois de muito "marrar" e de muitas tentativas encontrei uma solução.

Eu tinha $id=$_POST['id'];

e na variável $id nao aparecia nada, mas ao fazer um echo do $_POST['id'] estava tudo bem.

A solução foi:

$id= "".$_Post['id'];

Pelo que me apercebi depois, detectava aquilo como não sendo texto ou número.

Tenta isto, também não perdes nada.

Cumprimentos
N_G
Membro de Prata
Membro de Prata
 
Mensagens: 156
Registado: Domingo Abr 04, 2004 21:51
Localização: Viseu/tondela

Mensagempor cryps » Quinta Jul 19, 2007 0:18

eu nao sou grande entendido, mas vou deixar aki a minha opiniao.

Nao falta ai um form com um botao submit k te redireciona para a pagina k prentedes? (até pode ser a mesma, mas desta vez a correr o código k precisas para fazer o update) se kiseres falar no msn manda pm. abraços
cryps
Aprendiz
Aprendiz
 
Mensagens: 46
Registado: Quinta Nov 24, 2005 19:37


Voltar para Programação

Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 2 visitantes

cron