Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Senhores, boa tarde.
Tenho um form que não é obrigatório o preenchimento da data. Porém toda vez que vou fazer o update me da um erro. A minha saída foi fazer um IF
if ($f_data_resp == '')
{ $alterar_dados = odbc_exec($conexao,"UPDATE documentos SET Data_Of = '$f_data_of', Data_recebido = '$f_data_rec', razao = '$f_expedidor', OBS = '$f_obs', Parte = '$f_parte', posisao = '$posicao' where Chave = $id"); }
else
{ $alterar_dados = odbc_exec($conexao,"UPDATE documentos SET Data_Of = '$f_data_of', Data_recebido = '$f_data_rec', razao = '$f_expedidor', OBS = '$f_obs', Parte = '$f_parte', data_respondido = '$f_data_resp', posisao = '$posicao' where Chave = $id"); }
Funciona que é uma beleza. Porém essa não será a única data que poderá ficar vazia.
Dei uma pesquisada e vi umas querys com condição (IF) montei algo assim.
odbc_exec($conexao,"UPDATE documentos SET Data_Of = '$f_data_of', Data_recebido = '$f_data_rec', razao = '$f_expedidor', OBS = '$f_obs', Parte = '$f_parte', [color="#FF0000"]data_respondido = IF('$f_data_resp' = '', '','$f_data_resp'[/color]), posisao = '$posicao' where Chave = $id");
Porém não deu certo. Tentei também usar uma função.
function Ver_data_vazia($str){
if ($str == '31/12/1969')
//if (is_null($str))
{ return ""; }
else
{ return $str; }
}
odbc_exec($conexao,"UPDATE documentos SET Data_Of = '$f_data_of', Data_recebido = '$f_data_rec', razao = '$f_expedidor', OBS = '$f_obs', Parte = '$f_parte', [color="#FF0000"]data_respondido = Ver_data_vazia($f_data_resp)[/color]), posisao = '$posicao' where Chave = $id");
Grato pela ajuda.
Qualquer saída que simplifique será de grande valia. Abraços..
O erro é o seguinte:
Tipo de dados imcompatível na expressão de critério., SQL state 22005
Porque o campo que eu puxo do form vem vazio e o campo data do banco não aceita vazio.
Use um valor default :seta: 0000-00-00
Ou já grave com um valor :seta: CURDATE( )
>
Use um valor default :seta: 0000-00-00
Ou já grave com um valor :seta: CURDATE( )
Usar o valor default 0000-00-00 não dá no access e curdate no php também não, uma vez que eu não tenho nada a necessidade de inserir a data naquele momento.
Qual o erro que aparece? É algum erro de restrição no campo ou de formato inválido?
Se for restrição, basta tirar a obrigatoriedade do campo de data (NOT NULL para NULL) no próprio banco.
Se for de formato, basta mudar para o formato yyyy-mm-dd padrão do mysql.
[]'s