Ir para conteúdo

POWERED BY:

Arquivado

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

Dodo15

[Resolvido] Categorias de busca

Recommended Posts

Bom Dia

Eu fiz um formulario de pesquisa e agora qero colocar categorias de pesquisa nele e cada categoria que seleciono iria buscar em um banco de dados...

 

Ex: eu tenho o codigo:

 

<select name="" id="">
<option value="">Tinta</option>
<option value="">Elétrica</option>
<option name="" id="">Ferragens</option>
<option name="" id="">Hidraulica</option>
<option name="" id="">Promoção</option>
</select>

 

Qando eu selecionar tinta vai buscar na tabela "tinta", quando eu seleciono eletrica vai buscar na tabela dentro da database busca "Eletrica"...

 

Os codigos que eu estou usando sao esses:

busca.php

<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$con = mysql_connect($host,$user,$pass);
$db = 'busca';
mysql_select_db($db,$con) or print mysql_error();

mysql_select_db("busca");

$criterio = $_POST['busca'];
$_pagi_sql = "SELECT * FROM busca WHERE descricao LIKE '%$criterio%'";
$_pagi_cuantos = 10;

$_pagi_nav_anterior = "<< Anterior";
$_pagi_nav_siguiente = "Próxima >>";
$_pagi_nav_primera = "";
$_pagi_nav_ultima = "";
$_pagi_nav_estilo = "Paginacao";
include("paginator.class.php");
while ($campo = mysql_fetch_assoc($_pagi_result)){
?>
 <div id="pai">
   <div id="codigo"><?php echo $campo['id']; ?></div>
   <div id="descricao"><?php echo $campo['descricao']; ?></div>
   <div id="emb"><?php echo $campo['emb']; ?></div>
   <div id="un"><?php echo $campo['un']; ?></div>
   <div id="preco">R$<?php echo $campo['preco']; ?></div>
 </div>
 <?php
}
echo $_pagi_navegacion;

?>
<br />
<a href="index.php">VOLTAR</a>
</body>
</html> 

 

Index.php

<form method="POST" action="busca.php">
 <input type="text" name="busca" size="20">
<select name="" id="">
<option value="">Tinta</option>
<option value="">Elétrica</option>
<option name="" id="">Ferragens</option>
<option name="" id="">Hidraulica</option>
<option name="" id="">Promoção</option>
</select>
 <input type="submit" value="Buscar" name="ok">
</form>

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

* Pegue os dados do FORM

* Verifique qual a opção escolhida e de acordo com a opção, altere na SQL a tabela a ser pesquisada.

 

EX:

$tabela = $_POST['name_campo_select'];

switch($tabela) {
    case 'tintas':
    $tabela = 'tintas';
    break;

    case 'outra_tabela':
    $tabela = 'outra_tabela';
    break;
}

 

Mais ou menos isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse caso a propriedade name do select tem que ser busca vou te mostra um exemplo bem basico

<form method="post" action="#" name="teste1">
<select name="busca">
 <option value="tinta">Tinta</option>
       <option value="eletrica">Elétrica</option>
       <option value="ferragens" id="">Ferragens</option>
       <option value="hidraulica" id="">Hidraulica</option>
       <option value="promocao" id="">Promoção</option>

</select>
<input type="submit" name="mostrar" value="Mostrar" />
<?php
if(isset($_POST['mostrar'])==1){
$tabela = $_POST['busca'];
echo "$tabela";}
?>
</form>

 

foi só pra dar uma luz captou ?

o que eu quis tentar passar pra voce é que o valor do select quando selecionado é pego pela propriedade name do select e vai pegar o value do campo selecionado exemplo se o cara escolher tinta a variavel vai ter o valor de tinta logo na query só dar o comando certo

mysql_query("select * from $valor"); //vai selecionar tudo da tabela que ta selecionado o select!

deu pra entender?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<select name="categoria" id="">
       <option value="tinta">Tinta</option>
       <option value="eletrica">Elétrica</option>
       <option value="ferragens">Ferragens</option>
       <option value="hidraulica">Hidraulica</option>
       <option value="promocao">Promoção</option>
</select>


$criterio = $_POST['busca'];
$categoria = $_POST['categoria'];
$_pagi_sql = "SELECT * FROM busca WHERE descricao LIKE '%$criterio%' AND categoria=$categoria";

 

Mais antes de fazer a busca é bom fazer uma validação pra ver se não esta vazio

 

if (!empty($criterio) && !empty($categoria)) {
    // executar busca
}
else {
    // dá um header localtion para o formulario
}

 

 

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi bem, você quer que qnd selecione a opção Tinta, Eletrica ele pesquise nas respectivas tabelas?

Se for este o caso você faz assim no value voce insere o nome da tabela, e depois no busca.php você recebe o valor de select e transforma em um campo para pesquisar a tabela, por ex.

 

Na opção tinta você tem a tabela tbTinta, na Eletrica a tabela chama-se tbEletrica, etc...

 

Assim você atualiza dinamicamente a instrução SQL sem muitas complicações e etc...

Abaixo um exemplo

 

<select name="txtTabela">
       <option value="tbTinta">Tinta</option>
       <option value="tbEletrica">Elétrica</option>
       ....
</select>

 

na pagina onde você recebe os valores voce faz assim

 

<?php
...

$tbNome = $_POST['txtTabela'];
$criterio    = $_POST['busca'];

$_pagi_sql = "SELECT * FROM `{$tbNome}` WHERE descricao LIKE '%$criterio%'";
$_pagi_cuantos = 10;

...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo :D

Já ta funcionando...

 

Mas como eu faço pra mostrar na minha index todos os produtos dessa tabelas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

$sql = mysql_query(select * from tabela1);
$sql2 = mysql_query(select * from tabela2);
$sql3 = mysql_query(select * from tabela3);

while($tabela1 = mysql_fetch_array($sql)){
//tabela tinta
$nome_tinta = $tabela1['nome'];

}
while($tabela2 = mysql_fetch_array($sq2)){
//tabela hidraulicos
$nome_hidraulicos = $tabela2['nome'];

}while($tabela3 = mysql_fetch_array($sql3)){
//tabela produtos
$nome_produtos = $tabela3['nome'];

}

ficaria algo mais ou menos assim com coloquei ou joga tudo em array ou entao usa o case e break

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu um problema...

 

Eu estou usando esse codigo:

<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$con = mysql_connect($host,$user,$pass);
$db = 'busca';
mysql_select_db($db,$con) or print mysql_error();

mysql_select_db("busca");

$criterio = $_POST['busca'];

$tbNome = $_POST['select'];
$criterio    = $_POST['busca'];

$_pagi_sql = "SELECT * FROM `{$tbNome}` WHERE descricao LIKE '%$criterio%'";

$_pagi_cuantos = 10; // Itens por página


// ESTES 5 ÚLTIMOS SÃO VALORES EXTRAS, NÃO PRECISA COLOCA-LOS A MENOS QUE QUEIRA ALTERAR NOME DA ESCRITA OU ADICIONAR ALGUMA CLASS A TAG QUE CONTERÁ A PAGINAÇÃO
$_pagi_nav_anterior = "<< Anterior"; // Titulo texto link página anterior
$_pagi_nav_siguiente = "Próxima >>"; // Titulo texto link próxima página
$_pagi_nav_primera = ""; // Texto link primeira página
$_pagi_nav_ultima = ""; // Texto link última página
$_pagi_nav_estilo = "Paginacao"; // Classe para estilo css


// Aqui incluimos a biblioteca que carregará todos os valores setados acima.
include("paginator.class.php");

// While com a variavel especial $_pagi_result
while ($campo = mysql_fetch_assoc($_pagi_result)){
 ?>
 <div id="pai">
   <div id="codigo"><?php echo $campo['id']; ?></div>
   <div id="descricao"><?php echo $campo['descricao']; ?></div>
   <div id="emb"><?php echo $campo['emb']; ?></div>
   <div id="un"><?php echo $campo['un']; ?></div>
   <div id="preco">R$<?php echo $campo['preco']; ?></div>
 </div>
 <?php
}
// Aqui ele exibe a paginação
echo $_pagi_navegacion;

?>

 

Quando eu vou passar para a outra pagina ele ta problema, fala que nao existe...

oque posso fazer para resolver?

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.