Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 18

criar um sistema de busca

12-01-2009 16:23

Ola pessoal eu quero criar um sistema de busca de 3 campos, mas não faço a minima ideia como se faz por isso estou a tentar fazer de um campo só mas nâo estou a conseguir fazer.
não sei muito bem por onde começar...

o que eu ja fiz esta aqui
<? require_once('Connections/config.php'); $cons = "select id, nome from teste"; if($pesquisa == 'sim') { $cons .= " and nome like '%$busca%'"; } else { $consulta .= " where nome like '%$busca%'"; } ?> <form action="<?echo $PHP_SELF;?>?pesquisa=sim" name="busca" method="post"> <input name="busca" id="busca" type="text"> <input type="button" value="Busca">



onde eu posso ler sobre o assunto? tenho visto alguns sistemas já feitos mas são bem complexos logo nao entendi nada :shock
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar um sistema de busca

12-01-2009 17:30

Seu script tá faltando algumas bases, por isso peço que dê uma estudada no script abaixo. Qualquer dúvida só postar.

http://www.codigosnaweb.com/forum/viewtopic.php?t=474
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 18

criar um sistema de busca

13-01-2009 14:58

eu tive a dar uma olhada no script e fiquei com uma dúvida eu queria tirar o * mas querira que o sistema continua-se a procurar por nomes incompletos, ou seja nao ser necessario digitar o * para realizar a procura da palavra

if ($acao == sim) { $busca = $_POST['busca']; // aqui esta a dúvida if (strstr($busca,'*') == true) { $busca = str_replace("*","",$busca); $cons = "SELECT * FROM teste Where nome Like '%$busca%'"; } else { $cons = "SELECT * FROM teste Where nome Like '$busca'";

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar um sistema de busca

13-01-2009 16:51

O * está definido nesse if

if(strstr($valor, '*')==TRUE) {

Basta você tirar todo o IF e colocar uma condição única, só usando o LIKE
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 18

criar um sistema de busca

13-01-2009 18:01

engraçado eu tinha feito isso mas nao tinha dado certo, vou tentar de novo talvez tenha errado em alguma coisa ..

mais uma vez obrigado
0
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 18

criar um sistema de busca

15-01-2009 11:54

o meu sistema ficou assim

<div align="center"> <form method="post" action="<?echo $PHP_SELF;?>?acao=sim" name="form1"> <input name="busca" id="busca" type="text"> <input type="submit" class="botao" name="Submit" value="busca" /> </form> </div> <table width="200" border="1" align="center"> <tr> <td>Gen&ecirc;ro</td> <td>Nome</td> </tr> <? if ($acao == sim) { $busca = $_POST['busca']; //$id = $_POST['busca']; $cons = "SELECT * FROM teste Where nome Like '%$busca%' or familia = '$busca' order by nome"; $res = mysql_query($cons) or die (mysql_error()); $total_linhas = mysql_num_rows ($res); while($linha = mysql_fetch_array($res)) { ?> <tr> <td><?= $linha['familia']."<br>"; ?></td> <td><?= $linha['nome']."<br>"; ?></td> </tr> <? } ?> </table> <? } echo "Resultados = ". $total_linhas; ?>

agora estou a tentar fazer com combo mas estou com algumas dúvidas, por exemplo qdo eu seleciono a combo e nao digitar eu queria que apenas fosse visualizado o que foi selecionado na combo no caso de selecionar a combo e o text ele iria considerar os dois campos, tou a tentar fazer mas ta complicado :!

<form method="post" action="<? echo $PHP_SELF; ?>?acao=sim" name="form1"> <select name="id"> <option value="todos"><<Todos>></option> <? $cons = mysql_query ("SELECT id FROM teste"); while($listar = mysql_fetch_array($cons)) { $id = $listar['id']; ?> <option value="<?=$id?>"><?=$id?></option> <? } ?> </select> <input name="busca" id="busca" type="text"> <input type="submit" class="botao" name="Submit" value="busca" /> </form>

0
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 18

criar um sistema de busca

15-01-2009 11:55

nesse sistema de busca o que pode ser feito para ficar melhor
??
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar um sistema de busca

15-01-2009 12:07

Vamos a melhoria

Você colocou
if ($acao == sim) {

Use
if ($_GET['acao'] == "sim") {

Assim vai pegar o valor correto enviado pelo Action para começar o processo

Você não precisa criar uma variável para cada input, pode somente fazer o seguinte
extract($_POST);

ao invés de

$busca = $_POST['busca'];
$nome = $_POST['nome'];
....

Outra coisa é não usar o SELECT * e sim definir os campos a serem retornados, para melhorar a consulta.

SELECT campo1, campo2, etc...

No while também pode ser usado o extract

while($linha = mysql_fetch_array($res)) {
extract($linha);
echo $familia;
}

Faz essas alterações aí e vê como fica. A dúvida sobre o combo eu não entendi muito bem.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 18

criar um sistema de busca

15-01-2009 12:33

na combo é o seguinte eu tenho duas opçoes de pesquisa uma é uma combobox e a outra opção é uma text box. A combo carrega os dados do campo familia da bd e a text procura os dados dessa familia. exemplo: combo: Todas as familias;A;B se eu selecionar na combo a familia A e clicar em buscar ira aparecer todos os nomes da familia A, mas se eu selecionar a familia A e na text escrever Tes por exemplo iria aparecer todos os nomes da familia A que que tivesse Te no nome.

são exemplos que estou a fazer para praticar o meu objetivo é fazer um sistema para catalogar os meus cds tipo uma vitrine de produtos.

em relação ao sistema de busca vou testar essas dicas

<form method="post" action="<? echo $PHP_SELF; ?>?acao=sim" name="form1"> <select name="id"> <option value="todos"><<Todos>></option> <? $cons = mysql_query ("SELECT familiaFROM teste"); while($listar = mysql_fetch_array($cons)) { $id = $listar['familia']; ?> <option value="<?=$id?>"><?=$id?></option> <? } ?> </select> <input name="busca" id="busca" type="text"> <input type="submit" class="botao" name="Submit" value="busca" /> </form>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar um sistema de busca

15-01-2009 12:41

MOVIDO: de PHP para MySQL
0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar um sistema de busca

15-01-2009 12:56

Você pode fazer o seguinte

Faz um extract para retirar os valores dos inputs

extract($_POST);

Agora você inicia sua consulta

$cons = "SELECT campo1, campo2 FROM suatabela WHERE ";

Agora a condicional do que será adicionado ao SELECT vai depender do preenchimento do input, da seguinte forma:

if(!empty($campo1) && empty($campo2)) { $selec.=" campo1='$campo1'"; } if(!empty($campo1) && !empty($campo2)) { $selec.=" campo1='$campo1' && campo2='$campo2'"; }

Foi feito o seguinte: no primeiro if, quando o primeiro campo estiver diferente de vazio e o segundo vazio, faz a consulta só com base no primeiro campo

no segundo if, quando o primeiro e o segundo campo estiverem preenchidos, busca com base nos 2 campos.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 18

criar um sistema de busca

15-01-2009 13:15

fiz um teste e deu certo

<? if ($_GET['acao'] == "sim") { extract($_POST); //$busca = $_POST['busca']; //$id = $_POST['busca']; $cons = "SELECT id,familia, nome FROM teste Where"; if(!empty($id) && empty($busca)) { $cons.=" familia='$id'"; } if(!empty($id) && !empty($busca)) { $cons.=" familia='$id' && nome like '%$busca%'"; } $res = mysql_query($cons) or die (mysql_error()); $total_linhas = mysql_num_rows ($res); ?> <? while($linha = mysql_fetch_array($res)) { ?> <? echo $linha['id']."&nbsp;"; echo $linha['nome']."<br>"; } echo "total de $total_linhas dado(s)."; ?> <? } ?>

muito obrigado esta ajudar bastante no meu estudo de php +mysql eu só naõ compreendi muito bem esta parte por isso nao coloquei
while($linha = mysql_fetch_array($res)) { extract($linha); echo $familia; }

eu exprimentei em vez de
while($linha = mysql_fetch_array($res)) { ?> <? echo $linha['id']."&nbsp;"; echo $linha['nome']."<br>";

mas não deu certo
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar um sistema de busca

15-01-2009 13:30

funciona assim

No while você usa o $linha para definir as colunas, ex.:

$linha['coluna_1']...
$linha['coluna_2']...
etc...

O extract tira o $linha, permitindo o uso de: $coluna_1 e $coluna_2

while($linha = mysql_fetch_array($res)) {
extract($linha);
echo "$coluna_1 e $coluna_2<br>";
}
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 18

criar um sistema de busca

15-01-2009 13:36

eu de novo eu tentei listar todas as familias da seguinte maneira mas ele só pega na primeira familia

<form method="post" action="<? echo $PHP_SELF; ?>?acao=sim" name="form1"> <select name="id"> <? $cons = mysql_query ("SELECT familia FROM teste"); while($listar = mysql_fetch_array($cons)) { $id = $listar['familia']; ?> <option value="<?=$id?>"><<Todos>></option> <? } ?> <? $cons = mysql_query ("SELECT familia FROM teste"); while($listar = mysql_fetch_array($cons)) { $id = $listar['familia']; ?> <option value="<?=$id?>"><?=$id?></option> <? } ?> </select> <input name="busca" id="busca" type="text"> <input type="submit" class="botao" name="Submit" value="busca" /> </form> ........ if ($_GET['acao'] == "sim") { extract($_POST); //$busca = $_POST['busca']; //$id = $_POST['busca']; $cons = "SELECT id,familia, nome FROM teste Where"; //if(!empty($familia) && empty($busca)){ //$cons.=" familia='$familia'"; //} if(!empty($id) && empty($busca)) { $cons.=" familia='$id'"; } if(!empty($id) && !empty($busca)) { $cons.=" familia='$id' && nome like '%$busca%'"; }

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar um sistema de busca

15-01-2009 13:42

Quantas famílias vc tem com um único id?

$cons.=" familia='$id'";

Porque você pediu para listar somente as famílias com o id passado
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 18

criar um sistema de busca

15-01-2009 13:51

eu tenho duas familias(dvd e cds) o id de uma é 1 o outro é 2

hehe agora fiquei confuso :bomb
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar um sistema de busca

15-01-2009 15:09

Eu imagino dessa forma:

[id] [tipo] [produto]
1 cd abc
2 dvd aaa
3 cd eee

Ai você quer buscar todos os cds

SELECT id, tipo, produto FROM suatabela WHERE ...
tipo='$tipo'

No caso quando for o nome também
SELECT id, tipo, produto FROM suatabela WHERE ...
tipo='$tipo' && nome LIKE '%$nome%'
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 18

criar um sistema de busca

15-01-2009 15:28

obrigado eu já tinha visto o que estava mal, sou iniciante ainda me confundo muito :grin . muito obrigado pela paciencia em ajudar
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar um sistema de busca

15-01-2009 15:39

:wink
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado