Array
(
)

Editar e Atualizar

PHP
Pedro Santos
   - 08 mar 2014

Olá a todos.
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:
#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>";

/[codigo]
	$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:
#Código
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!
#Código
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
   - 08 mar 2014

Verifiquei que deu erro no primeiro código que coloquei na página animal1.php para apresentar os resultados, mas este é o mesmo:
#Código

<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:

#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?

Milléo
   - 08 mar 2014

Olá Pedro!

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:

#Código

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! =)

Pedro Santos
   - 08 mar 2014

É isso mesmo!!
Resultou!!

Muito obrigado!
Bom fim de semana!