Ir para conteúdo

POWERED BY:

Arquivado

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

erickhoepfner

[Resolvido] Erro ao deixar campo data em branco

Recommended Posts

Caros amigos,

 

Estou utilizando a função abaixo (criada pelo Leandro Vieira) para converter a data digitada dd/mm/aaaa para que no banco seja gravada aaaa-mm-dd.

 

=============================================================================

function converter_data($strData) {

// Recebemos a data no formato: dd/mm/aaaa

// Convertemos a data para o formato: aaaa-mm-dd

if ( preg_match("#/#",$strData) == 1 ) {

$strDataFinal = "'";

$strDataFinal .= implode('-', array_reverse(explode('/',$strData)));

$strDataFinal .= "'";

}

return $strDataFinal;

}

=============================================================================

 

A função é aplicada aqui:

 

converter_data($_POST['data_visita']),

 

FUNCIONA PERFEITAMENTE!

 

O problema é que quando a data não é digitada no campo do form (ou seja, deixada em branco), recebo o seguinte erro:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' NULL, ..........

 

Se eu retirar a função e mantiver o padrão americano, posso deixar o campo em branco que não há o menor problema!

 

Quero manter a função e poder deixar o campo data em branco (no form).

 

Como resolvo isso?

 

 

Muito grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique o valor de $_POST['data_visita'] antes de aplicar a função. Se for vazio, nem aplique a função, passe o valor NULL direto. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

[]s

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique o valor de $_POST['data_visita'] antes de aplicar a função. Se for vazio, nem aplique a função, passe o valor NULL direto. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

[]s

Beraldo

Opa. Obrigado pela resposta.

Sem querer abusar, você pode passar esse código?

Não entendo o suficiente ainda para isso.

 

A lógica é bem clara, mas o código complica.

 

Grato novamente

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o que o skiner postou acima.

Se sua função retorn a dta, faça assim:

 

if (isset($_POST['data'])
{
	$data = converte_data($_POST['data']);
}
else
{
	$data = "NULL";
}

Daí use $data na consulta SQL

 

[]s

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o que o skiner postou acima.

Se sua função retorn a dta, faça assim:

 

if (isset($_POST['data'])
{
	$data = converte_data($_POST['data']);
}
else
{
	$data = "NULL";
}

Daí use $data na consulta SQL

 

[]s

Beraldo

Caro Beraldo,

Sua sugestão foi de grande valia.

Analilsando (e entendo) o proposto, foi necessário apenas testar o campo dentro da própria função.

Para tal, coloquei o else logo após o comando.

 

Veja como ficou:

 

==================================================

function converter_data($strData) {

// Recebemos a data no formato: dd/mm/aaaa

// Convertemos a data para o formato: aaaa-mm-dd

if ( preg_match("#/#",$strData) == 1 ) {

$strDataFinal = "'";

$strDataFinal .= implode('-', array_reverse(explode('/',$strData)));

$strDataFinal .= "'";

}

else {

$strDataFinal = "NULL";

}

return $strDataFinal;

}

==================================================

 

Muito obrigado novamente a todos que ajudaram!

Abs

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.