Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo Marcelo_26862

[Lógica de Programação] Função Pesquisa

Recommended Posts

Boa tarde pessoal.

Estava programando e travei na seguinte parte:

Preciso pesquisar os Tratores que tenho cadastrador no meu sistema.

Esta pesquisa se deve através do formulário que contém os seguintes campos:

 

Pesquisar pelo nº de série

Pesquisar pelo Modelo

Pesquisar pela Marca

Pequisar pelo Ano

Pesquisar pela Revisão

 

na minha função getTrator, eu recebo como parâmetro cada uma dessas informações digitadas pelo usuário, e utilizo-as para montar minha condição e passar para a classe DAO montar a query.

Beleza..tudo funcionando.

 

Porém, me deparei com um problema utilizando o seguinte código para a função

 

 function getTrator($n_serie,$modelo,$marca,$ano,$revisao) { // Pego os parâmetros
    if($n_serie OR $modelo OR $marca OR $ano OR $revisao){
$con = "AND"; // Se existir esses parâmetros (Se tiverem sido digitado pelo user),
    }else{           // eu concateno cada uma delas com um "AND" para montar a query.
$con = "";   // Se não tiverem sido digitadas, não uso "AND".
    }

    $condicao = $n_serie.$con.$modelo.$con.$marca.$con.$ano.$con.$revisao; // Monto a condição
    return $this->db->select($this->nomeTable,$condicao); //Envio para o DAO.

 

Beleza.

Porém, isso só funciona quando eu dou o select em duas ocasiões:

A ) Quando eu digito TODOS os campos

B ) Quando eu não digito nenhum campo

Quando eu digito apenas alguns campos, existe um erro de sintaxe SQL, algo como

 

SELECT * FROM tratores WHERE n_serie=12587951 AND AND AND AND

 

Alguém tem alguma idéia de como resolver?

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro quando você tem essa liberdade deve se trabalhar com valores padrões nas funções pois assim não ficariam obrigatórios.

 

o que você pode fazer é trabalhar com array

 

$array = array(
  'serie' => 'aaaxsfd',
  'modelo' => 'sansfild'
 );

function teste( $array() ){
  $sql = '';
  foreach($array as $campo => $valor){
     if($campo != 'serie' || $campo != 'modelo' || $campo != 'marca'){
         $sql .= "{$campo} = {$valor} AND";
      }
  }
 $sql = substr($sql, 0, -3);
}

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.