Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

�talo Gustavo Araújo

Erro incomum

Recommended Posts

Bom dia galera, estou com um problema em minha aplicação PHP, do nada o sistema começou a dar erro ao inserir e alterar em todos os cadastros do sistema, já entrei em contato com a King Host onde esta hospedado mas nada resolveu...voltei bkp do banco, bkp da aplicação e o sistema persiste em dizer que a campos nulos em minha inserção ou alteração...já aconteceu algo parecido com alguém aqui....preciso muito da ajuda de vocês, estou com o problema a três dias e os clientes já estão ficando nervosos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Campos nulos? Você resgata os dados do formulário com $_POST/$_GET ou conta com register_globals?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quado você dá um print_r($_POST/$_GET) aparecem os dados que deveriam aparecer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só lembrando que o erro está acontecendo em todos os cadastros do sistema, eu não fiz nenhuma alteração no código o sistema estava em perfeito funcionamento até quinta feira...

Em baixo o código para cadastro de uma cultura:

Aqui é onde digito o valor e passo via post.

<table cellpadding="0" cellspacing="0" class="tablesorter" id="tb_cultura">
           <thead>
                  <tr valign="middle" height="35">
                         <th width="550"><a href="#" class="ativo">Nome/Variedade</a></th>
                         <th><a href="#">Fases</a></th>
                         <th width="19" class="print"> </th>
                         <th width="19" class="print"> </th>
                  </tr>  
                  <tr>
                         <form action="iframe-cultura-cad.php" method="post" class="cadastro" id="fcadastro" name="fcadastro">
                                <td>
                                   <input name="nome" type="text" class="campos" id="nome" size="104"/>
                                </td>
                                <td>
                                </td>
                         </form>
                         <td class="print">
                                <a href="javascript:;" onclick="enviarFormCad()" id="btCad">
                                   <img src="imagens/icon-salvar.png" alt="Salvar" width="15" height="16"/>
                                </a>
                         </td>
                         <td class="print">
                                <a id="btCancelCad" href="javascript:;" onclick="cancelar()">
                                   <img src="imagens/icon-cancelar.png" width="15" height="16" alt="Cancelar"/>
                                </a>
                         </td>
                  </tr>
           </thead>
$fazenda = new Fazenda();
   $fazenda->setIdFazenda($_SESSION['login_cliente']['id_fazenda']);

   $cultura = new Cultura();
   $cultura->setNomeCultura($_POST['nome']);
   $cultura->setFazenda($fazenda);
   //////////////////////////////////////////////////////
   // INSERT CULTURA
   //////////////////////////////////////////////////////
 
   $culturaApplication = new CulturaApplication();
   $culturaApplication->save($cultura);
// ///////////////////////////////////////////////////////////////////////////////
// PUBLIC METHODS
// ///////////////////////////////////////////////////////////////////////////////

public function save($cultura){
  return $this->culturaRepository->save($cultura);
}

/**
  * Salva um objeto Cultura.
  * @param Cultura $cultura
  * @throws Exception
  * @return boolean
  */
public function save($cultura){
  try{
   if($cultura instanceof Cultura){
        $stmte = $this->pdo->prepare("INSERT INTO CULTURA(IdFazenda, NomeCultura) VALUES (:IdFazenda, :NomeCultura)");
        $stmte->bindParam(":IdFazenda", $cultura->getFazenda()->getIdFazenda(), PDO::PARAM_INT);
        $stmte->bindParam(":NomeCultura", $cultura->getNomeCultura(), PDO::PARAM_STR);
        $executa = $stmte->execute();
        return $executa;
   }
   else
        throw new Exception('O atributo $cultura deve ser um objeto da classe Cultura.');
  }
  catch(PDOException $ex){
   echo $ex->getMessage();
   return FALSE;
  }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece quando há mudança na versão do banco de dados!

 

A versão antiga aceitava alguns campos sem valos que não eram nulos e agora devem não aceitar mais;

 

 

Talvez até pode ser mas o problema é que todos os formulários do sistema que eu utilizo o método $_POST para recuperar os valores do formulário está nulo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nos form está definido o metodo? method="post"...rs

Pergunta besta...mas vai que;

 

RSRS mas vai que....

 

Está sim definido o method="post" o que mais esta me incomodando que o erro está acontecendo em todos os formulários do sistema. Eu utilizei o código abaixo no inicio da pagina.

error_reporting(E_ALL);

E retornou o seguinte erro indicando a linha que passo o $_POST.

 

undefined index: nome in na linha 35 no caso...

Utilizei este código também para ver o que está recuperando no index e o resultado foi nulo....

echo '<pre>';
print_r($_POST);
echo '</pre>';
exit;

Tentei validar o campo, não deu erro ao cadastrar mas salvo em branco no banco...

 $nome = isset($_POST['nome']) ? $_POST['nome'] : '';

Preciso muito solucionar isso no meu sistema, amanha vai ter auditoria na fazenda e é preciso estar funcionando se não caso contrario perdemos o certificado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho. O seu problema não está na base de dados..

 

O problema do índice indefinido você resolve realmente com o isset(); que deve ser aplicado, porém, nada justifica você receber o POST nulo.. faça um formulário separado com 1 campo e 1 botao de submit e na página que recebe dê um print no $_POST pra ver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei o erro após vários testes..

 

Esse era o jeito que estava o formulário...

<table cellpadding="0" cellspacing="0" class="tablesorter" id="tb_cultura">
   <thead>
      <tr valign="middle" height="35">
         <th width="550"><a href="#" class="ativo">Nome/Variedade</a></th>
         <th><a href="#">Fases</a></th>
         <th width="19" class="print"> </th>
         <th width="19" class="print"> </th>
       </tr>       
       <tr>

<form action="iframe-cultura-cad.php" method="post" class="cadastro" id="fcadastro" name="fcadastro">
                <td>
                   <input name="nome" type="text" class="campos" id="nome" size="104"/>
                </td>
                <td>
                </td>
             </form>
             <td class="print">
                <a href="javascript:;" onclick="enviarFormCad()" id="btCad">
                   <img src="imagens/icon-salvar.png" alt="Salvar" width="15" height="16"/>
                </a>
             </td>
             <td class="print">
                <a id="btCancelCad" href="javascript:;" onclick="cancelar()">
                   <img src="imagens/icon-cancelar.png" width="15" height="16" alt="Cancelar"/>
                </a>
             </td>
          </tr>
       </thead>
    </table>

Como pode ver formulário esta dentro de Tabela....

 

Ai fazendo os testes eu coloquei a Tabela dentro de formulário...

<form action="iframe-cultura-cad.php" method="post" id="fcadastro" name="fcadastro">
    <table cellpadding="0" cellspacing="0" class="tablesorter" id="tb_cultura">
       <thead>
          <tr valign="middle" height="35">
             <th width="550"><a href="#" class="ativo">Nome/Variedade</a></th>
             <th><a href="#">Fases</a></th>
             <th width="19" class="print"> </th>
             <th width="19" class="print"> </th>
          </tr>       
          <tr>
             
                <td>
                   <input name="nome" type="text" class="campos" id="nome" size="104"/>
                </td>
                <td>
                </td>
             
             <td class="print">
                <a href="javascript:;" onclick="enviarFormCad()" id="btCad">
                   <img src="imagens/icon-salvar.png" alt="Salvar" width="15" height="16"/>
                </a>
             </td>
             <td class="print">
                <a id="btCancelCad" href="javascript:;" onclick="cancelar()">
                   <img src="imagens/icon-cancelar.png" width="15" height="16" alt="Cancelar"/>
                </a>
             </td>
          </tr>
       </thead>
    </table>
    </form>

Como o programa não foi desenvolvido por mim, fui contratado para dar manutenção não sabia dessa mal pratica de desenvolvimento dentro do sistema...o mais engraçado e que como que funcionou tanto tempo assim. Sera que só agora a W3C regulamentou? Vou sugerir que o sistema seja refeito...

 

 

Obrigado a todos que me ajudaram...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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