subkiller Posted March 12, 2009 at 09:54 AM Report Share #250115 Posted March 12, 2009 at 09:54 AM boas eu estava aqui a tentar desenvolver um motor de pesquisa para o meu site mas gostava de pedir umas opinioes... eu fiz um SELECT a todas as minhas tabelas da base dados para procurar em todos os campos que me interesassem e depois tentei comparar o valor da textbox com os campos da bd para ver se encontrava alguma coisa igual... é a forma mais correcta de fazer isto? alguem me pode indicar um tutorial sobre isso? cumps. Link to comment Share on other sites More sharing options...
elcsat Posted March 12, 2009 at 10:47 AM Report Share #250148 Posted March 12, 2009 at 10:47 AM podes fazer assim select * from tabela,tabela1 where desc='%au%'.... algo mais completo assim http://devzone.zend.com/node/view/id/1304 Link to comment Share on other sites More sharing options...
subkiller Posted March 12, 2009 at 11:08 AM Author Report Share #250164 Posted March 12, 2009 at 11:08 AM eu fiz o meu select assim: SELECT campo1, campo2 FROM tabela1 UNION SELECT campo1, campo2 FROM tabela 2 UNION .... WHERE tabela1.campo1 = $pesquisa OR tabela1.campo2=$pesquisa foi uma coisa deste genero.... vou ver o link que me deste. obrigado Link to comment Share on other sites More sharing options...
subkiller Posted March 12, 2009 at 11:10 AM Author Report Share #250166 Posted March 12, 2009 at 11:10 AM agora que tou a ver é melho usar o LIKE Link to comment Share on other sites More sharing options...
elcsat Posted March 12, 2009 at 11:59 AM Report Share #250206 Posted March 12, 2009 at 11:59 AM sim o like é muito util ja conseguiste o que querias? Link to comment Share on other sites More sharing options...
subkiller Posted March 12, 2009 at 12:00 PM Author Report Share #250208 Posted March 12, 2009 at 12:00 PM nao, estava a ver outra coisa... mas mais logo vou experimentar. obrigado pela ajuda Link to comment Share on other sites More sharing options...
Nuvem Posted March 12, 2009 at 12:01 PM Report Share #250209 Posted March 12, 2009 at 12:01 PM podes fazer assim select * from tabela,tabela1 where desc='%au%'.... algo mais completo assim http://devzone.zend.com/node/view/id/1304 WHERE campo='%alguma coisa%' não é correcto. O operador = é usado para comparações estáticas/definidas, enquanto que quando queres procurar um palavra num conjunto de texto, o operador correcto a ser usado é o LIKE. SELECT campos FROM tabela WHERE campo LIKE '%alguma coisa%' Aprendes umas bases porreiras aqui: http://w3schools.com/sql Link to comment Share on other sites More sharing options...
subkiller Posted March 13, 2009 at 08:03 PM Author Report Share #250597 Posted March 13, 2009 at 08:03 PM Resolvido, se alguem quiser, eu posso disponibilizar o codigo... 😉 Link to comment Share on other sites More sharing options...
scorch Posted March 13, 2009 at 08:08 PM Report Share #250599 Posted March 13, 2009 at 08:08 PM Posta aqui. Assim se alguém procurar, encontra logo. É mais simples. 😉 PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to comment Share on other sites More sharing options...
subkiller Posted March 13, 2009 at 09:21 PM Author Report Share #250607 Posted March 13, 2009 at 09:21 PM ta simples, menos a minha query: if(isset($_GET["pesquisar"])) { if(!($id = mysql_connect($server, $username, $password))) { return 0; } if (mysql_select_db($database, $id)) { $pesquisa=$_GET["pesquisa"]; if($pesquisa<>"") { //query $query="SELECT * FROM tabela WHERE tabela.nome LIKE '%$pesquisa%' OR tabela.descricao LIKE '%$pesquisa%' UNION SELECT * FROM tabela2 WHERE tabela2.nome LIKE '%$pesquisa%' OR tabela2.descricao LIKE '%$pesquisa%''"; $res=mysql_query($query) or die(mysql_error()); $count=mysql_num_rows($res); if($count==0) { $warning = "<font color='red'>A sua pesquisa nao encontrou resultados</font>"; } else { $warning = "<font color='green'>A sua pesquisa \"".$pesquisa."\" deu ".$count." resultados:</font><br>"; //$warning .= "<table border=1>"; //$warning .= "<tr><td>mensagem</td><td>texto</td></tr>"; $warning .= "<p><h6>Resultados:</h6></p>"; while($reg=mysql_fetch_array($res, MYSQL_NUM)) { //$warning .= "$reg[0]<br>"; $warning .= "<p>$reg[1]</p>"; } //$warning .= "</table>"; } } else { $warning = "<font color='red'>Campo pesquisa vazio</font>"; } } } nao esta comentado mas é um codigo simples.... xD depois basta fazer: if(isset($warning)) { echo "$warning"; } onde quiser listar os resultados o form: <form action="index.php" method="GET"> <input type="text" name="pesquisa" value="Pesquisar"> <input type="submit" name="pesquisar" value="pesquisar"> </form> kualker duvida digam... 😉 Link to comment Share on other sites More sharing options...
softklin Posted March 13, 2009 at 11:44 PM Report Share #250629 Posted March 13, 2009 at 11:44 PM Antes de usares os dados do GET, tens de escapar possiveis caracteres que possam alterar a tua query. Isto, se não quiseres ter bases de dados vazias, entre outras surpresas menos agradáveis 😉 Tão simples como fazer <?php $pesquisa = mysql_real_escape_string($_GET["pesquisa"]); ?> e evita muitos problemas. de realçar que é necessária uma ligação a um servidor mysql, que já está lá em cima. Nick antigo: softclean | Tens um projeto? | Wiki P@P Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post. Link to comment Share on other sites More sharing options...
subkiller Posted March 14, 2009 at 11:48 AM Author Report Share #250644 Posted March 14, 2009 at 11:48 AM obrigado pela sugestao... 😉 Link to comment Share on other sites More sharing options...
elcsat Posted March 14, 2009 at 03:36 PM Report Share #250676 Posted March 14, 2009 at 03:36 PM se tas preocupado com segurança podes fazer assim mysql_db_query("base_de_dados", sptrinf("....%s...",mysql_real_escape_string(trim($_GET["pesquisa"])))); Link to comment Share on other sites More sharing options...
djthyrax Posted March 14, 2009 at 09:40 PM Report Share #250744 Posted March 14, 2009 at 09:40 PM se tas preocupado com segurança podes fazer assim mysql_db_query("base_de_dados", sptrinf("....%s...",mysql_real_escape_string(trim($_GET["pesquisa"])))); sprintf("%s", mysql_real_escape_string($_GET['pesquisa'])); Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now