Editar e Atualizar
08/03/2014
0
Escrevo esta mensagem devido a ter uma dúvida na programação PHP.
Eu tenho criada uma tabela - "animal" com os seguintes campos:
nome data prop peso, sexo, id
Estes campos já estão preenchidos, e são mostrados na página web. Agora pretendia que os mesmos fossem atualizados sempre que o utilizador pretendesse..
Para isso já desenvolvi numa página - animal1.php onde apresento os resultados o seguinte código:
include('config.php'); $sql="select *from animal"; $query=mysql_query($sql) or die ("Nao seleccionou tabela!"); $linhas=mysql_num_rows($query); if($linhas==0) echo "<tr>Não existem dados inseridos!</tr>"; /code] Na tabela seguinte estou a incluir o resultado imprimido, assim como o método POST, através do form e do botão Editar!! [code] <table bgcolor="white" cellpadding="6.5" width="1210" height="102"><caption= "Editar"><form action="formulario.php" method="post"> <tr><td ROWSPAN=4><b><em><img src="images/main_image.jpg"</td> </tr><tr><td> Nome científico: <?php echo $nome;?></td> <td> Data Nasc.: <?php echo $data;?> </td> <td> Peso: <?php echo $peso;?> Kg</td> </tr><tr><td> Proprietário: <?php echo $prop;?></td> <td> Sexo: <?php echo $sexo;?></td> <td> <button style='width:90;height:30' align ="center" type='submit'>><b><i>Editar</submit></button></td> </tr> </form></table> } ?> /code] Depois do utilizador clicar no editar é reencaminhado para a página formulário.php que possui o seguinte código: [code] <form action="animal1.php" method="post" name="Editar"> <BR> <b><h2><font color='red'>Atualizar os dados do animal 1:</b><br></h2></font> <h3>Nome Científico: <input type="text" name="campo1"/><br> Data Nascimento: <input type=text name="campo2" />(dd-mm-aaaa)<br> Proprietário: <input type="text" name="campo3" /><br> Sexo: <input type="text" name="campo4" /><br> Peso: <input type="text" name="campo5" /><br><br> <button style='width:90;height:40' type='submit'><font name= "Editar" color="#000080" ><b><i>Guardar</submit></button> </form>
Posteriormente coloquei o seguinte código na página animal1.php:
$name = $_POST["campo1"]; $data = $_POST["campo2"]; $prop = $_POST["campo3"]; $sexo= $_POST["campo4"]; $peso = $_POST["campo5"]; mysql_query ("UPDATE animal SET nome= '$name', data= '$data' , prop= '$prop , sexo= '$sexo' , peso= '$peso' WHERE id='$id'");
Até aqui tudo bem os campos são atualizados a questão é que quando entro a primeira vez na página, aparece-me a seguinte infomação:
Notice: Undefined index: campo1 in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\projects\MENU2\animal1.php on line 39 Notice: Undefined index: campo2 in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\projects\MENU2\animal1.php on line 40 Notice: Undefined index: campo3 in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\projects\MENU2\animal1.php on line 41 Notice: Undefined index: campo4 in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\projects\MENU2\animal1.php on line 42 Notice: Undefined index: campo5 in C:\Program Files\EasyPHP-DevServer-14.1VC9\data\localweb\projects\MENU2\animal1.php on line 43
Ainda experimentar colocar no ínicio dos POST um ciclo if, mas não reconhecia o post Editar, ou seja, a minha ideia era sempre que clicasse no editar ou no gravar, entrasse neste ciclo e aí sim fazia o update e ía buscar os valores atualizados do POST, senão apresenta sempre os valores atuais que estão na Tabela!
if(isset($_POST['editar'])){ $name = $_POST["campo1"]; $data = $_POST["campo2"]; $prop = $_POST["campo3"]; $sexo= $_POST["campo4"]; $peso = $_POST["campo5"]; mysql_query ("UPDATE animal SET nome= '$name', data= '$data' , prop= '$prop , sexo= '$sexo' , peso= '$peso' WHERE id='$id'"); }
Alguma Sugestão??
Cumprimentos
Pedro Santos
Posts
08/03/2014
Pedro Santos
<table bgcolor="white" cellpadding="6.5" width="1210" height="102"><caption= "BI_ Animal"><form action="formulario.php" method="post"> <tr><td ROWSPAN=4><img src="images/main_image.jpg" width="128" height="102" alt="image:GODZILLA" /></td> </tr><tr><td>Nome científico</u>: </b><font color='black'><i><?php echo $nome;?></td> <td>Data Nasc.</u>: </b><font color='black'><?php echo $data;?> </td> <td>Peso: <?php echo $peso;?> Kg</td> </tr><tr><td> Proprietário</u>: </b><font color='black'><?php echo $prop;?></font></td> <td>Sexo: <?php echo $sexo;?></font></td> <td> <button style='width:90;height:30' atype='submit'><font color="black" size='4' face="Perpetua"><b><i>Editar</submit></button></td> </tr></form></table>
Aqui crio uma tabela para mostrar os valores que leio diretamente da tabela da base de dados: animal e apresento os dados gravados na mesma.
Crio também um form e um botão para me direcionar para a página formulario.php de forma a editar os dados que são mostrados na tabela que criei anteriormente.
A Página formulario.php tem o seguinte código:
<form action="animal1.php" method="post" name="Editar"> <BR> <b><h2><font color='red'>Atualizar os dados do animal 1:</b><br></h2></font> <h3>Nome Científico: <input type="text" name="campo1"/><br> Data Nascimento: <input type=text name="campo2" />(dd-mm-aaaa)<br> Proprietário: <input type="text" name="campo3" /><br> Sexo: <input type="text" name="campo4" /><br> Peso: <input type="text" name="campo5" /><br><br> <button style='width:90;height:40' align ="center" type='submit'><font name= "Editar" color="#000080" size='4' face="Perpetua"><b><i>Guardar</submit></button> </form>
Quando eu clico no botão guardar os dados são guardados e atualizados, mas a questão é que quando entro pela primeira vez na página animal1.php ele não reconhece os campos: campo1,2,3,4 e campo5.
Tentei criar uma opção se só encontrasse no ciclo quando o utilizador clicasse no guardar, mas não consegui.. alguma sugestão?
08/03/2014
Rafael Carrenho
A sua solução tem lógica, mas na verdade na variável $_POST só entram os valores dos campos input, textearea e select. No entanto, você pode fazer uma verificação melhor antes de realizar o update:
if(count($_POST)){ $name = $_POST["campo1"]; $data = $_POST["campo2"]; $prop = $_POST["campo3"]; $sexo= $_POST["campo4"]; $peso = $_POST["campo5"]; mysql_query ("UPDATE animal SET nome= '$name', data= '$data' , prop= '$prop , sexo= '$sexo' , peso= '$peso' WHERE id='$id'"); }
De forma que, a variável $_POST (ou $_GET) vêm na requisição como um vetor, associando o nome do campo e seu valor. Logo após você pode fazer uma verificação se todos os campos foram preenchidos utilizando a função empty()
Espero que tenha ajudado! =)
08/03/2014
Pedro Santos
Resultou!!
Muito obrigado!
Bom fim de semana!
Clique aqui para fazer login e interagir na Comunidade :)