Estou com um problema numa situação de atualização de cadastro no banco de dados. Usei métodos explicados em outros tópicos do Fórum porém não obtive sucesso.
- Tenho 3 páginas: lista, editar e salvar, todas .php.
- Puxo as informações do banco em lista.php e as linco para serem editadas em editar.php.
- O link funciona, abre em editar.php com o id vindo do banco e trazendo as informações necessárias, tudo certo.
- Eu altero os dados da coluna nome, por exemplo, e ele vai para a tela salvar.php mas não salva a alteração no banco, ele apaga ela!
- Tentei dar um echo em $id e $nome para ver o que estava chegando na tela, o id vem (pois estava no hidden da página anterior), mas não vem nada do $nome para salvar.php.
Exemplo:
Nome [Carlos] > altero para [João]
[Botão Editar] > clico em editar
Ele salva o dado, da coluna Nome do banco, em branco:
Nome [_______]
O que pode estar errado? Segue meu código das 3 páginas:
Obs: A linhas estão comentadas de acordo com um post do blog da Microcamp (link), talvez ajude no raciocínio:
::: Página que lista.php:
<?php
require_once('Connections/inscricao.php');
mysql_select_db($database_inscricao, $inscricao);// Selecionando o banco de dados
$resultado = mysql_query("SELECT * FROM congresso"); // A Variável $resultado faz uma consulta na tabela selecionando todos os registros de todos os campos
while($linha = mysql_fetch_array($resultado)) //A instrução while faz um loop entre todos os registros e armazena seus valores na variável $linha
{//Inicia o loop
?>
<a href="editar.php?id=<?php echo $linha['id']; ?>"><!-- Passando o valor do id para a página editar.php -->
<?php
echo $linha['nome']; // Mostra o valor do registro dentro do loop
echo "<br />";
} // Retorna para o início do loop caso existam mais registros a serem mostrados
mysql_close($inscricao);
?>
::: Página editar.php
<?php
$id = $_GET['id']; // Recebendo o valor vindo do link
require_once('Connections/inscricao.php');
mysql_select_db($database_inscricaoicloc, $inscricao);// Selecionando o banco de dados
$resultado = mysql_query("SELECT * FROM congresso WHERE id = '".$id."'"); // Há variável $resultado faz uma consulta em nossa tabela selecionando somente o registro desejado
while($linha = mysql_fetch_array($resultado)) //Já a instrução while faz um loop entre todos os registros e armazena seus valores na variável $linha
{
?>
<form method="POST" action="salvar.php">
<input type="hidden" name="id" value="<?php echo $linha['id']; ?>" /><!-- Passando o valor da id em um campo oculto -->
<strong>Nome</strong>:
<input type="text" name="nome" value="<?php echo $linha['nome']; ?>" /><br /><!-- Mostrando dentro do form o valor do campo nome -->
Pergunta
wioart
Olá companheiros,
Estou com um problema numa situação de atualização de cadastro no banco de dados. Usei métodos explicados em outros tópicos do Fórum porém não obtive sucesso.
- Tenho 3 páginas: lista, editar e salvar, todas .php.
- Puxo as informações do banco em lista.php e as linco para serem editadas em editar.php.
- O link funciona, abre em editar.php com o id vindo do banco e trazendo as informações necessárias, tudo certo.
- Eu altero os dados da coluna nome, por exemplo, e ele vai para a tela salvar.php mas não salva a alteração no banco, ele apaga ela!
- Tentei dar um echo em $id e $nome para ver o que estava chegando na tela, o id vem (pois estava no hidden da página anterior), mas não vem nada do $nome para salvar.php.
Exemplo:
Nome [Carlos] > altero para [João]
[Botão Editar] > clico em editar
Ele salva o dado, da coluna Nome do banco, em branco:
Nome [_______]
O que pode estar errado? Segue meu código das 3 páginas:
Obs: A linhas estão comentadas de acordo com um post do blog da Microcamp (link), talvez ajude no raciocínio:
::: Página que lista.php:
<?php
require_once('Connections/inscricao.php');
mysql_select_db($database_inscricao, $inscricao);// Selecionando o banco de dados
$resultado = mysql_query("SELECT * FROM congresso"); // A Variável $resultado faz uma consulta na tabela selecionando todos os registros de todos os campos
while($linha = mysql_fetch_array($resultado)) //A instrução while faz um loop entre todos os registros e armazena seus valores na variável $linha
{//Inicia o loop
?>
<a href="editar.php?id=<?php echo $linha['id']; ?>"><!-- Passando o valor do id para a página editar.php -->
<?php
echo $linha['nome']; // Mostra o valor do registro dentro do loop
echo "<br />";
} // Retorna para o início do loop caso existam mais registros a serem mostrados
mysql_close($inscricao);
?>
::: Página editar.php
<?php
$id = $_GET['id']; // Recebendo o valor vindo do link
require_once('Connections/inscricao.php');
mysql_select_db($database_inscricaoicloc, $inscricao);// Selecionando o banco de dados
$resultado = mysql_query("SELECT * FROM congresso WHERE id = '".$id."'"); // Há variável $resultado faz uma consulta em nossa tabela selecionando somente o registro desejado
while($linha = mysql_fetch_array($resultado)) //Já a instrução while faz um loop entre todos os registros e armazena seus valores na variável $linha
{
?>
<form method="POST" action="salvar.php">
<input type="hidden" name="id" value="<?php echo $linha['id']; ?>" /><!-- Passando o valor da id em um campo oculto -->
<strong>Nome</strong>:
<input type="text" name="nome" value="<?php echo $linha['nome']; ?>" /><br /><!-- Mostrando dentro do form o valor do campo nome -->
<input type="submit" value="Editar" />
</form>
<?php
}
?>
::: Página salvar.php: (acredito que o erro esteja aqui, pois até a tela editar tudo funciona)
<?php
require_once('Connections/inscricao.php');
mysql_select_db($database_inscricaoicloc, $inscricao);// Selecionando o banco de dados
$id = $_POST['id'];
$nome= $_POST['nome'];
echo $id;
echo $nome;
mysql_query("UPDATE congresso SET nome='".$nome."' WHERE id='".$id."'");
mysql_close($inscricao);
?>
Agradeço desde já pela colaboração.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.