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

Sistema de Busca em BD


gersonab

Pergunta

Boa Tarde Galera.

Tenho um sistema de busca que funciona perfeitamente, só que gostaria de acrescentar a busca por intervalo de "ano" , tenho pesquisado na net e ainda não encontrei a solução para este , por este motivo resolvi vir buscar ajuda d vocês.

item 1 - O acréscimo seria a busca por ano , a dificuldade é que esta coluna esta como decimal (4,0) e já tenho aproximadamente 1350 itens cadastrados , logo qualquer tipo de alteração desta coluna seria inviavel.

item 2 - O script de busca anterior .

if($categoria || $marca || $model || $condicao) {
    
    $query = "SELECT * FROM $dbvin WHERE";
    if($categoria) { $query .= " categoria='$categoria' AND"; }
    if($marca) { $query .= " marca='$marca' AND"; }
    if($model) { $query .= " model LIKE '%$model%' AND"; }
    if($condicao) { $query .= " condicao='$condicao'"; }
    
    if(substr($query, strlen($query)-4, 4) == ' AND') {    $query = substr($query, 0, strlen($query)-4); }
} else {
    $query = "SELECT * FROM $dbvin";
}
item 3 - Atual -> não funciona a busca por ano .
if($categoria || $marca || $model || $condicao || $anomodelo) {
    
    $query = "SELECT * FROM $dbvin WHERE";
    if($categoria) { $query .= " categoria='$categoria' AND"; }
    if($marca) { $query .= " marca='$marca' AND"; }
    if($model) { $query .= " model LIKE '%$model%' AND"; }
    if($condicao) { $query .= " condicao='$condicao' AND"; }
    if($anomodelo) { $query .= " anomodelo BETWEEN 'data1' AND 'data2'"; }
    // trim extra AND if neccessary
    if(substr($query, strlen($query)-4, 4) == ' AND') {    $query = substr($query, 0, strlen($query)-4); }
} else {
    $query = "SELECT * FROM $dbvin";
}

++++

<td align="left">Ano Inicial
                          <select class='menu' name='data1' style='width:50px'>
                            <option value=''></option>
                            <? for ($n = 0; $n < count($ano); $n++) { echo "<option value='$ano[$n]'>$ano[$n]</option>"; } ?>
                          </select>
                      </td>
                      <td align="left"> Ano Final
                          <select class='menu' name='data2' style='width:50px'>
                            <option value=''></option>
                            <? for ($n = 0; $n < count($ano); $n++) { echo "<option value='$ano[$n]'>$ano[$n]</option>"; } ?>
                          </select>
                      </td>

Agradeceria qualquer ajuda .

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Mudei o tipo de coluna para poder facilitar .

Como a busca é entre valores de um numero inteiro fica mais facil, porém ainda não consegui .

if($categoria || $marca || $model || $condicao || $anomodelo ) {
    
    $query = "SELECT * FROM $dbvin WHERE ";
    if($categoria) { $query .= " categoria='$categoria' AND"; }
    if($marca) { $query .= " marca='$marca' AND"; }
    if($model) { $query .= " model LIKE '%$model%' AND"; }
    if($condicao) { $query .= " condicao='$condicao' AND "; }
    if($anomodelo) { $query .= " anomodelo >= 'datainicio' AND anomodelo <= 'datafim'"; }
    
    if(substr($query, strlen($query)-6, 6) == ' AND') {    $query = substr($query, 0, strlen($query)-6); }
} else {
    $query = "SELECT * FROM $dbvin";
}

$link = mysql_connect($dbhost, $dbuser, $dbpass);
$result = mysql_db_query($dbname, $query, $link);
if(mysql_num_rows($result)) { $numitems = mysql_num_rows($result); }
else { $numitems = 0; }
mysql_close($link);

Lembro que , na minha tabela tenho somente uma coluna que é anomodelo int(10) e que os dados desta coluna são o ano , ex: 1998 , 2000 , 2005 .....

Link para o comentário
Compartilhar em outros sites

  • 0

Existe dois campos chamados datainicio e datafim? Se sim você tem que colar $ na frente... ou seja:

Troca isso:

$query .= " anomodelo >= 'datainicio' AND anomodelo <= 'datafim'";

Por isso:

$query .= " anomodelo >= '$datainicio' AND anomodelo <= '$datafim'";

Link para o comentário
Compartilhar em outros sites

  • 0

Não da, pois na tabela eu só tenho um campo que se chama anomodelo e esta como int , datainicio e datafim estão vindo do select do formulario , eu preciso é compara e buscar os intervalos entre os dois .

seria como buscar entre 1985 a 1990 , retornando todos os itens neste intervalo .

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...