Ir para conteúdo
Fórum Script Brasil
  • 0

Array: Como excluir chave que contém valor = ""?


Bruno Aguiar

Pergunta

Fala galera, boa tarde. Estou com o seguinte problema: tenho 5 tipos de filtros numa página. Posso usar 1 ou até os 5 ao mesmo tempo. Daí, pra consultar no banco de dados, eu fiz da seguinte maneira:

($data_inicial_filtro <> "" AND $data_final_filtro <> "") ? $filtro_data = "data_ped>='$data_inicial_filtro' AND data_ped<='$data_final_filtro'" : $filtro_data = "";
                    
($valor_final_filtro <> "") ? $filtro_valor = "valor_ped>='$valor_inicial_filtro' AND valor_ped<='$valor_final_filtro'" : $filtro_valor = "";
                            
($tipo_ped <> "") ? $filtro_tipo = "tipo_ped IN($tipo_ped)" : $filtro_tipo = "";
                                
($conta_ped <> "") ? $filtro_conta = "conta_ped IN($conta_ped)" : $filtro_conta = "";
                                
($status_ped <> "") ? $filtro_status = "status_ped IN($status_ped)" : $filtro_status = "";
                            
$todos_filtros = array($filtro_data, $filtro_valor, $filtro_tipo, $filtro_conta, $filtro_status);
                                
$todos_filtros = implode(' AND ',$todos_filtros);
                                
$consulta = mysql_query("SELECT * FROM pedidos_conf WHERE $todos_filtros ORDER BY $classificacao $ordem");

O fato de usuário poder usar 1 ou até os 5 filtros ao mesmo tempo é que gera o problema, pois quando o IMPLODE for adicionar os AND, ele vai adicionar também onde o filtro não for utilizado(ou seja, que contiver o valor ""), pois foi salva um array com o valor "". O que eu gostaria era excluir estas arrays que possuem o valor "".

Pessoal, desde já, agradeço.

Abraços.

PS.: caso alguém saiba como fazer isto de outra maneira, por favor, não hesite em me falar. :D

Editado por Bruno Aguiar
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Jefferson. Muito obrigado por ter respondido a minha dúvida. Olhei rapidamente o comando que me passou e não vi ele auxiliando a resolver este problema. Porém, o problema já foi resolvido: foi necessário modificar o código para o seguinte:

if($data_inicial_filtro <> "" AND $data_final_filtro <> "") {
    $todos_filtros[] = "data_ped>='$data_inicial_filtro' AND data_ped<='$data_final_filtro'";
}
if($valor_final_filtro <> "") {
    $todos_filtros[] = "valor_ped>='$valor_inicial_filtro' AND valor_ped<='$valor_final_filtro'";
}
if($tipo_ped <> "") {
    $todos_filtros[] = "tipo_ped IN($tipo_ped)";
}
if($conta_ped <> "") {
    $todos_filtros[] = "conta_ped IN($conta_ped)";
}
if($status_ped <> "") {
    $todos_filtros[] = "status_ped IN($status_ped)";
}
$todos_filtros = implode(' AND ',$todos_filtros);
$consulta = mysql_query("SELECT * FROM pedidos_conf WHERE $todos_filtros ORDER BY $classificacao $ordem");

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0

Bruno,

uma outra solução que utilizo nesse caso é depois de concatenar tudo remover o final;

$todos_filtros = implode(' AND ',$todos_filtros);
$todos_filtros = substr($todos_filtros,0,-4);
Jefferson. Muito obrigado por ter respondido a minha dúvida. Olhei rapidamente o comando que me passou e não vi ele auxiliando a resolver este problema. Porém, o problema já foi resolvido: foi necessário modificar o código para o seguinte:
if($data_inicial_filtro <> "" AND $data_final_filtro <> "") {
    $todos_filtros[] = "data_ped>='$data_inicial_filtro' AND data_ped<='$data_final_filtro'";
}
if($valor_final_filtro <> "") {
    $todos_filtros[] = "valor_ped>='$valor_inicial_filtro' AND valor_ped<='$valor_final_filtro'";
}
if($tipo_ped <> "") {
    $todos_filtros[] = "tipo_ped IN($tipo_ped)";
}
if($conta_ped <> "") {
    $todos_filtros[] = "conta_ped IN($conta_ped)";
}
if($status_ped <> "") {
    $todos_filtros[] = "status_ped IN($status_ped)";
}
$todos_filtros = implode(' AND ',$todos_filtros);
$consulta = mysql_query("SELECT * FROM pedidos_conf WHERE $todos_filtros ORDER BY $classificacao $ordem");

Obrigado!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...