Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fiz algumas buscas, até encontrei várias referencias apontando o mesmo erro que o meu, porém, não entendi ao certo o problema.
Ao abrir uma pagina estou obtendo o seguinte erro:
<br /><b>Notice</b>: Undefined variable: codigo in <b>D:\PROJETOS\LOCALHOST\FOLHADEPAGAMENTO\CARGOSEDITAR.php</b> on line <b>36</b><br />
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> Editar cargo </title>
<link href="css/form.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<?php
if (!empty($_GET['codigo']))
{
/**
Conecta com o PostgreSQL
*/
$dns = "port=55432 dbname=folha user=fortesrh password=1234";
$db = pg_connect($dns);
$codigo = (int) $_GET['codigo'];
$resultado = pg_query($db, "SELECT * FROM cargo WHERE codigo='{$codigo}'");
$row = pg_fetch_assoc($resultado);
$codigo = $row['codigo'];
$descricao = $row['descricao'];
$salario = $row['salario'];
}
?>
<body>
<form enctype="multipart/form-data" action="http://localhost/FOLHADEPAGAMENTO/CARGOSALVARUPDATE.php" method="POST">
<label>Código</label>
<input name="codigo" readonly="1" type="text" style="width: 30%" value="<?=$codigo?>"><br>
</form>
<label>Descrição</label>
<input name="descricao" readonly="1" type="text" style="width: 50%" value="<?=$descricao?>"><br>
<label>Salário</label>
<input name="salario" readonly="1" type="text" style="width: 25%" value="<?=$salario?>"><br>
<input type="submit">
</form>
</body>
</html><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> Editar cargo </title>
<link href="css/form.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<?php
if(!empty($_GET['codigo'])){
/**
Conecta com o PostgreSQL
*/
$dns = "port=55432 dbname=folha user=fortesrh password=1234";
$db = pg_connect($dns);
$codigo = (int) $_GET['codigo'];
$resultado = pg_query($db, "SELECT * FROM cargo WHERE codigo='{$codigo}'");
$row = pg_fetch_assoc($resultado);
$codigo = $row['codigo'];
$descricao = $row['descricao'];
$salario = $row['salario'];
}
else $codigo = $descricao = $salario = null;
?>
<body>
<form enctype="multipart/form-data" action="http://localhost/FOLHADEPAGAMENTO/CARGOSALVARUPDATE.php" method="POST">
<label>Código</label>
<input name="codigo" readonly="1" type="text" style="width: 30%" value="<?=$codigo?>"><br>
<label>Descrição</label>
<input name="descricao" readonly="1" type="text" style="width: 50%" value="<?=$descricao?>"><br>
<label>Salário</label>
<input name="salario" readonly="1" type="text" style="width: 25%" value="<?=$salario?>"><br>
<input type="submit">
</form>
</body>
</html>
--------------------------------------------------------------------------------
<?php
$dados = $_POST;
if ($dados['codigo']) {
/**
Conecta com o PostgreSQL
*/
$dns = "port=55432 dbname=folha user=fortesrh password=1234";
$db = pg_connect($dns);
/**
Atribui a variável $query a instrução para deletar um registro.
*/
$query = "UPDATE cargo SET descricao = '{$dados['descricao']}',
salario = '{$dados['salario']}'
WHERE codigo = '{$dados['codigo']}'";
$resultado = pg_query($db, $query); /** Executa a consulta na conexão com o banco de dados e com query*/
if ($resultado) {
print 'Cargo atualizado com sucesso';
}
else {
print pg_last_error($db);
}
/**
Fecha a conexão com o PostgreSQL
*/
pg_close ($db);
}
?>

Supondo que esse trecho abaixo seja o o arquivo form.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> Editar cargo </title>
<link href="css/form.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<?php
if(!empty($_GET['codigo'])){
/**
Conecta com o PostgreSQL
*/
$dns = "port=55432 dbname=folha user=fortesrh password=1234";
$db = pg_connect($dns);
$codigo = (int) $_GET['codigo'];
$resultado = pg_query($db, "SELECT * FROM cargo WHERE codigo='{$codigo}'");
$row = pg_fetch_assoc($resultado);
$codigo = $row['codigo'];
$descricao = $row['descricao'];
$salario = $row['salario'];
} else $codigo = $descricao = $salario = null;
?>
<body>
<form enctype="multipart/form-data" action="http://localhost/FOLHADEPAGAMENTO/CARGOSALVARUPDATE.php" method="POST">
<label>Código</label>
<input name="codigo" type="text" style="width: 30%" value="<?=$codigo?>"><br>
<label>Descrição</label>
<input name="descricao" type="text" style="width: 50%" value="<?=$descricao?>"><br>
<label>Salário</label>
<input name="salario" type="text" style="width: 25%" value="<?=$salario?>"><br>
<input type="submit">
</form>
</body>
</html>
e esse seja o arquivo **CARGOSALVARUPDATE.php**
<?php
$codigo = isset($_POST["codigo"]) ? $_POST["codigo"] : false;
$descricao = isset($_POST["descricao"]) ? $_POST["descricao"] : "";
$salario = isset($_POST["salario"]) ? $_POST["salario"] : "";
if($codigo){
/** Conecta com o PostgreSQL */
$dns = "port=55432 dbname=folha user=fortesrh password=1234";
$db = pg_connect($dns);
/** Atribui a variável $query a instrução para deletar um registro. */
$query = "UPDATE cargo SET descricao = '$descricao',
salario = '$salario'
WHERE codigo = '$codigo'";
$resultado = pg_query($db, $query); /** Executa a consulta na conexão com o banco de dados e com query*/
if($resultado) print 'Cargo atualizado com sucesso';
else print pg_last_error($db);
/** Fecha a conexão com o PostgreSQL */
pg_close ($db);
}
?>
Pelo que parece, o form já vem setado a variável ***$codigo***, por exemplo:
http://localhost/form.php?codigo=10
Desta forma retornaria o formulário preenchido. Ao alterar e clicar em Enviar é direcionado via $_POST para o link abaixo:
http://localhost/FOLHADEPAGAMENTO/CARGOSALVARUPDATE.php
Correto?
Se for desta forma, os códigos apresentados já estão corrigidos e não há problemas.
Agora se você não informar um valor para a variável $codigo, o formulário sempre ficará vazio.
O link desta forma retorna um formulário vazio:
http://localhost/form.php
E o link desta forma retornará o formulário preenchido:
http://localhost/form.php?codigo=10
Foi colocado um numero 10 apenas para efeito de entendimento.
Edit: a configuração readonly="1" que estava bloqueando a digitação dentro do campo de texto!
/uploads/monthly_2019_04/image.thumb.png.c22d27835489164812c1d66e92779a50.png" />
CARGOSEDITAR.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> Editar cargo </title>
<link href="css/form.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<?php
if(!empty($_GET['codigo'])){
/**
Conecta com o PostgreSQL
*/
$dns = "port=55432 dbname=folha user=fortesrh password=1234";
$db = pg_connect($dns);
$codigo = (int) $_GET['codigo'];
$resultado = pg_query($db, "SELECT * FROM cargo WHERE codigo='{$codigo}'");
$row = pg_fetch_assoc($resultado);
$codigo = $row['codigo'];
$descricao = $row['descricao'];
$salario = $row['salario'];
} else $codigo = $descricao = $salario = null;
?>
<body>
<form enctype="multipart/form-data" action="http://localhost/FOLHADEPAGAMENTO/CARGOSALVARUPDATE.php" method="POST">
<label>Código</label>
<input name="codigo" type="text" style="width: 30%" value="<?=$codigo?>"><br>
<label>Descrição</label>
<input name="descricao" type="text" style="width: 50%" value="<?=$descricao?>"><br>
<label>Salário</label>
<input name="salario" type="text" style="width: 25%" value="<?=$salario?>"><br>
<input type="submit">
</form>
</body>
</html>
Nenhuma de suas variáveis estão declaradas caso não estejam recebendo algum valor, você deve declara-las antes da condição IF, ou com um ELSE após a condição IF e colocar as variáveis com valores nulos ou vazios.
Assim:
<!DOCTYPE html>