Ir para conteúdo
Israel Lira

<br /><b>Notice</b>: Undefined variable: codigo in

Recommended Posts

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>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

<!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);
          
           }
?>

 

 

 

image.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

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>

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.