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

Busca Usando


taudujas

Pergunta

Pessoal estou querendo aprender a fazer busca usando um select, já vi varios sites assim, por exemplo:

Campo de busca ai tem para selecionar a categoria no select e logo mais o botao pesquisar.

A duvida é a seguinte: terei o nome do campo busca e no select as categorias, mas como ficaria os valores deste select? ele é ligado com o like?

Obs: não estou pedindo pronto, somente gostaria de um esclarecimento.

obrigado. biggrin.gif

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

eu faço assim, exemplo:

tenho uma tabela "produtos" com os campos:

id

nome

quantidade

preço

tipo

vamos considerar esse campo tipo tendo valores fixos como:

cereal

fruta

legumes

etc...

aih eu tenho um select: "Selecionar por tipo:" com os valores possíveis do campo tipo... quando o usuário seleciona um tipo:

<script language="JavaScript">
  function MudaTipo(Sender) {
    var pagina;
    pagina = $PHP_SELF + "?tipo=" + Sender.value + "&pagn=1";
    parent.document.location.href = pagina;
  }
</script>

<select name="tipo" onchange="mudatipo(this)">
(aqui eu fiz no onchange, mas você pode fazer no onclick de um botão tb...) Envia uma query_string com o valor do tipo. Ae é só você realizar uma busca como essa:
if (isset($_GET["tipo"])) {
  $query = "select * from produtos where tipo = ".$_GET["tipo"];
} else {
  $query = "select * from produtos";
}

ufa... wink.gif

acho que tá meio complicadin né?

mas espero tb que esse seja o jeito mais fácil!!

falou!

Link para o comentário
Compartilhar em outros sites

  • 0

só em uma...

pagina = $PHP_SELF + "?tipo=" + Sender.value + "&pagn=1";

e mesmo assim esse não é "o código", você disse que não queria o código então, tentei explicar um pouco... cool.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, cara, pra fazer isso que você quer eu faria da seguinte forma:

Montaria a query com base nos campos de foram preenchidos. Ou seja, só adicionaria o "AND campo like '%valor%' " caso o select correspondente fosse preenchido...

Mas posta o código aí de como você estava fazendo...

Link para o comentário
Compartilhar em outros sites

  • 0

Ok Error estou fazendo assim olha:

<?

include "bd.php"

?>

<html>

<head>

<title>Buscar anuncios - liga Negocios.</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<form name="form1" method="post" action="busca.php">

  <table width="66%" border="0">

    <tr>

      <td width="22%"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Busca:</font></strong></td>

      <td width="19%"><input name="palavra" type="text" id="palavra"></td>

      <td width="59%"><select name="tabela">

              <option value="select">Selecione</option>

<?

$sql = "SELECT nome FROM diversos ORDER BY nome";

$exec = mysql_query($sql);

while ($array = mysql_fetch_array($exec))

{

$tabela = $array['nome'];

$tabela = strtoupper($tabela);

    echo "<option value=\"$tabela\">$tabela</option>\n";

}

?>

        </select>

        <input type=submit" name="Submit" value="Buscar"></td>

    </tr>

  </table>

</form>

</body>

</html>

Busca.php

<?

include "bd.php";

//pega os dados digitados no formulario

$busca = $_POST["busca];

$select = $_POST['select'];

// seleciona os dados do banco

$query = mysql_query("SELECT $busca where nome like '$select'") or die(mysql_error());

$contagem = mysql_num_rows($query);// verifica os numeros de linhas

if ($contagem == 0) //se for igual a zero

{

echo "<center><font color = \"#0000FF\">Não Achou Nenhum Registro</font></center>

<a href=\"javascript:history.go(-1)\"><center>Voltar</center></a>";

exit();

}

else{

while ($select= mysql_fetch_array($query)){

$nome = $select["nome"];

echo "$nome<br>";

echo "Erro: ". mysql_error();

}

}

?>

Mas não da certo, não retorna erro nem nada.

Link para o comentário
Compartilhar em outros sites

  • 0

<?

include "bd.php";

//pega os dados digitados no formulario

$busca = $_POST["busca"];

$select = $_POST['select'];

// seleciona os dados do banco

$query = mysql_query("SELECT $busca where nome like '$select'") or die(mysql_error());

$contagem = mysql_num_rows($query);// verifica os numeros de linhas

if ($contagem == 0) //se for igual a zero

{

echo "<center><font color = \"#0000FF\">Não Achou Nenhum Registro</font></center>

<a href=\"javascript:history.go(-1)\"><center>Voltar</center></a>";

exit();

}

else{

while ($select= mysql_fetch_array($query)){ //essa linha tem um problema

$nome = $select["nome];

echo "$nome<br>";

echo "Erro: ". mysql_error();

}

}

?>

Está vendo a linha que eu marquei?

Agora olha a sua query... dentro dessa query você usa a variável $select, que é a mesma que você atribui o valor da mysql_fetch_array(). Então, depois da primeira verificação, isso vai dar erro...

Link para o comentário
Compartilhar em outros sites

  • 0

Error coloquei assim:

<?

include "bd.php";

//pega os dados digitados no formulario

$busca = $_POST["busca"];

$select = $_POST['select'];

// seleciona os dados do banco

$query = mysql_query("SELECT FROM $select where nome LIKE '$busca'") or die(mysql_error());

$contagem = mysql_num_rows($query);// verifica os numeros de linhas

if ($contagem == 0) //se for igual a zero

{

echo "<center><font color = \"#0000FF\">Não Achou Nenhum Registro</font></center>

<a href=\"javascript:history.go(-1)\"><center>Voltar</center></a>";

exit();

}

else{

while ($select= mysql_fetch_array($query)){

$nome = $select["nome"];

echo "$nome<br>";

echo "Erro: ". mysql_error();

}

}

?>

e retornou:

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 'FROM '' where nome LIKE ''' at line 1
Link para o comentário
Compartilhar em outros sites

  • 0

Olha agora:

<?

include "bd.php";

//pega os dados digitados no formulario

$busca = $_POST["busca"];

$select = $_POST['select'];

// seleciona os dados do banco

$query = mysql_query("SELECT * FROM $select where $busca LIKE '$busca'") or die(mysql_error());

$contagem = mysql_num_rows($query);// verifica os numeros de linhas

if ($contagem == 0) //se for igual a zero

{

echo "<center><font color = \"#0000FF\">Não Achou Nenhum Registro</font></center>

<a href=\"javascript:history.go(-1)\"><center>Voltar</center></a>";

exit();

}

else{

while ($select= mysql_fetch_array($query)){

$nome = $select["nome"];

echo "$nome<br>";

echo "Erro: ". mysql_error();

}

}

?>

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 'where LIKE ''' at line 1

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, não querendo ser chato, mas aparentemente você não entende como essas queries funcionam...

Acho que seria uma boa você pegar uma apostila e dar uma boa lida na parte de conexões e interação com o MySQL...

Veja esse tópico: http://www.sosphp.com.br/forum/index.php?s...indpost&p=12543

E esse link: http://dev.mysql.com/doc/mysql/pt/SELECT.html smile.gif

E explica aí pra gente o que é essa variável $busca, $select e etc...

Link para o comentário
Compartilhar em outros sites

  • 0

o meu banco é este:

CREATE TABLE `diversos` (

  `codigo` int(10) unsigned NOT NULL auto_increment,

  `data` date NOT NULL default '0000-00-00',

  `categoria` varchar(60) NOT NULL default '',

  `opnegocio` varchar(40) NOT NULL default '',

  `nome` varchar(60) NOT NULL default '',

  `grupo` varchar(40) NOT NULL default '',

  `valor` varchar(50) NOT NULL default '',

  `descricao` text NOT NULL,

  `foto` varchar(200) NOT NULL default '',

  `contato` varchar(60) NOT NULL default '',

  `cidade` varchar(50) NOT NULL default '',

  `uf` char(2) NOT NULL default '',

  `email` varchar(60) NOT NULL default '',

  PRIMARY KEY  (`codigo`)

) TYPE=MyISAM AUTO_INCREMENT=4 ;

CREATE TABLE `imoveis` (

  `codigo` int(10) unsigned NOT NULL auto_increment,

  `data` date NOT NULL default '0000-00-00',

  `categoria` varchar(70) NOT NULL default '',

  `opnegocio` varchar(40) NOT NULL default '',

  `tipo` varchar(40) NOT NULL default '',

  `bairro` varchar(40) NOT NULL default '',

  `endereco` varchar(60) NOT NULL default '',

  `valor` varchar(40) NOT NULL default '',

  `descricao` text NOT NULL,

  `foto` varchar(200) NOT NULL default '',

  `contato` varchar(70) NOT NULL default '',

  `cidade` varchar(40) NOT NULL default '',

  `uf` char(2) NOT NULL default '',

  `email` varchar(60) NOT NULL default '',

  PRIMARY KEY  (`codigo`)

) TYPE=MyISAM AUTO_INCREMENT=1 ;

CREATE TABLE `veiculos` (

  `codigo` int(10) unsigned NOT NULL auto_increment,

  `data` date NOT NULL default '0000-00-00',

  `categoria` varchar(80) NOT NULL default '',

  `opnegocio` varchar(80) NOT NULL default '',

  `modelo` varchar(40) NOT NULL default '',

  `motor` varchar(40) NOT NULL default '',

  `anomod` varchar(40) NOT NULL default '',

  `cor` varchar(30) NOT NULL default '',

  `valor` varchar(20) NOT NULL default '',

  `descricao` text NOT NULL,

  `foto` varchar(200) NOT NULL default '',

  `contato` varchar(40) NOT NULL default '',

  `uf` char(2) NOT NULL default '',

  `email` varchar(60) NOT NULL default '',

  PRIMARY KEY  (`codigo`)

) TYPE=MyISAM AUTO_INCREMENT=1 ;

A Variavel $busca é o campo onde a pessoa vai digitar as palavras, como d20 por exemplo e select é onde ela vai procurar, na categoria no caso, logo a tabela do banco entendeu?

Link para o comentário
Compartilhar em outros sites

  • 0

<?

include "bd.php"

?>

<html>

<head>

<title>Buscar anuncios - liga Negocios.</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<form name="form1" method="post" action="busca.php">

  <table width="66%" border="0">

    <tr>

      <td width="22%"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Busca:</font></strong></td>

      <td width="19%"><input name="palavra" type="text" id="palavra"></td>

      <td width="59%"><select name="tabela">

              <option value="select">Selecione</option>

<?

$sql = "SELECT nome FROM diversos ORDER BY nome";

$exec = mysql_query($sql);

while ($array = mysql_fetch_array($exec))

{

$tabela = $array['nome'];

$tabela = strtoupper($tabela);

    echo "<option value=\"$tabela\">$tabela</option>\n";

}

?>

        </select>

        <input type="submit" name="Submit" value="Buscar"></td>

    </tr>

  </table>

</form>

</body>

</html>

esta ai em vermelho.

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...