1
resposta

DATE - 2 formularios

Boa tarde, minha dúvida é tenho 2 formulários para alimentar 1 tabela do BD. O primeiro formulário utiliza a data o segundo não. Ao fazer o insert do primeiro ok sem problemas eu utilizo preg replace e formato a data e envio para o bd. Mas ao utilizar a segunda tabela onde não preciso da data, eu utilizei (não sei se é o melhor caminho) um input hidden NULL para o campo data. Porém ao verificar na inserção do BD o PHP manda dado vazio e não NULL. Acredito que ao passar pelo preg replace, ele não aceita NULL e não envia a informação NULL para o BD. Existe alguma forma de fazer isso ?

<input type="hidden" name="data_nascimento" class="form-control" value="NULL">
$pessoa->setData_nascimento($_POST["data_nascimento"]);
public function setData_nascimento($data_nascimento)
    {
        $data_nascimento= preg_replace("/\D+/", "", $data_nascimento); 
    $this->data_nascimento = $data_nascimento;

    }
function inserePessoa($pessoa) {
    $query = "insert into pessoa (nome, endereco, numero, bairro, cidade, uf, cep,
     cpf, cnpj, data_nascimento, rg, telefone, email, estado_civil_id, nacionalidade,
      profissao, complemento, tipo_pessoa_id, parte_id, natureza_juridica_id)
       values ('{$pessoa->getNome()}','{$pessoa->getEndereco()}',{$pessoa->getNumero()},
       '{$pessoa->getBairro()}','{$pessoa->getCidade()}','{$pessoa->getUf()}',
       {$pessoa->getCep()}, {$pessoa->getCpf()}, '{$pessoa->getCnpj()}',
       {$pessoa->getData_nascimento()},{$pessoa->getRg()},{$pessoa->getTelefone()},
       '{$pessoa->getEmail()}',{$pessoa->getEstado_civil()},'{$pessoa->getNacionalidade()}',
       '{$pessoa->getProfissao()}','{$pessoa->getComplemento()}',{$pessoa->getTipo_pessoa()},
       {$pessoa->getParte()},{$pessoa->getNatureza_juridica()})";

      var_dump($query);exit;

    return mysqli_query($this->conexao, $query);
    }
1 resposta

Oi Sergio, tudo bom?

Isso acontece porque ao concatenar null em uma string temos o valor vazio.

Por exemplo, no caso a seguir:

echo "teste ".NULL." NULO";

A saida é:

teste NULO

Se você quiser garantir o texto "NULL" na sua query, é necessario fazer a verificação na variável antes. Algo como:

$teste = "NULL";
echo "teste ".$teste." NULO";

Assim, o resultado é:

teste NULL NULO

Verifica se o valor que a gente ta passando pro atributo data_nascimento é "NULL" ou NULL =)