Jump to content


Photo

Existe Alguma Outra Forma?


  • Faça o login para participar
5 replies to this topic

#1 Super Cifras.Net

Super Cifras.Net

    Turista

  • Usuários
  • 32 posts
  • Sexo:Não informado

Posted 03/03/2004, 22:51

Olá pessoal,

Estou com um problema e gostaria de trocar uma idéia com vcs,

Quando vou fazer uma busca no mysql eu utilizava assim para fazer a busca:

$lista=mysql_query("SELECT * FROM musica  WHERE nome_music like '%$busca%' ORDER BY id ");

Mas notei um problema, quando eu digito uma palavra, funciona blz, mas quando eu digito 2 palavras a coisa complica, pois é busca a frase e não a busca separada por palavras.

Ex: $busca="amor odio";
Será buscado apenas as frases que tiverem "amor odio" e serão descartadas as frases que tivere "amor e odio".

Aí tentei isto:

$busc=explode(" ",$nome);
$cont = 0;
$teste= count($busc);
for ( $x=0; $x<$teste; $x++ ) {
   $cont++;
   $linha = $busc[$x];

    if($teste > $cont){
   $busca="nome_music like '%$linha%' and "; }else {$busca="nome_music like '%$linha%'";}

   }
$rime=mysql_query("SELECT * FROM musica  WHERE $busca ORDER BY id");

Só que apresenta erro.

Não sei se existe alguma outra forma de fazer uma busca por palavras ou se estou errando alguma coisa, gostaria da ajuda de vocês.
Você gosta de música???
Toca guitarra, violão ou outro instrumento???
------------------------------------------------------------------
Venha conhecer nosso site
http://www.supercifras.net
http://forum.supercifras.net

#2 ffmm

ffmm

    Veterano

  • Usuários
  • 1224 posts
  • Sexo:Não informado

Posted 03/03/2004, 23:04

Vc pode substituir os espaços por %, assim ele vai procurar mesmo as entradas que tiverem algo no meio.
Exemplo:
$valor_que_vai_colocar_na_query = str_replace(' ', '%', $valor_vindo_do_form);

#3 Super Cifras.Net

Super Cifras.Net

    Turista

  • Usuários
  • 32 posts
  • Sexo:Não informado

Posted 03/03/2004, 23:10

Olá ffmm2003,

Tentei e não deu certo.
Bom o que não deu certo???
Se eu colocar %amor%odio% ele ai listar as frases que contem as palavras nesta ordem amor e odio por exemplo, só que se uma frase tiver odio e amor o bd não vai listar.

Mas mesmo assim valeu ffmm2003 B) .

Edição feita por: Super Cifras.Net, 03/03/2004, 23:27.

Você gosta de música???
Toca guitarra, violão ou outro instrumento???
------------------------------------------------------------------
Venha conhecer nosso site
http://www.supercifras.net
http://forum.supercifras.net

#4 Rafael :)

Rafael :)

    Aprendendo e ensinando PHP.

  • Usuários
  • 549 posts
  • Sexo:Não informado
  • Localidade:São Paulo
  • Interesses:Aprender PHP!

Posted 04/03/2004, 00:33

Eae cara, blz!

cara, tipow vc pode fazer assim, como o Fábio falou, subtitui o espaço por um %

Exemplo:

$var = $_POST["texto"];

$palavra_buscar = str_replace(' ', '%', $var); //Irá Substituir o espaço por um %

$sql = mysql_query("SELECT * FROM tabela WHERE nome_music like '%.$palavra_buscar.%' ORDER BY id ");

Só isso, testta aí e vê se pega.... fiz na correria, mas concerteza pega

falou mano

té mais

Edição feita por: Rafael :), 04/03/2004, 00:35.

Jesus:

Justiça
Esperança
Saúde
União
Salvação

Deus é fiel...

#5 Super Cifras.Net

Super Cifras.Net

    Turista

  • Usuários
  • 32 posts
  • Sexo:Não informado

Posted 04/03/2004, 00:51

Pessoal

Continua dando problema

Ex:

Resultado do %deus%amor%

Deus está em todo lugar o amor vencerá

Deus de amor

Deus de Amor

Resultado do %amor%deus%

Amor de Deus

O Amor do Nosso Deus

Dependendo da forma que eu coloco, é listado de forma diferente, são as mesmas palavras, mas se eu colocar %deus%amor% vai lista algumas músicas e se eu colocar %amor%deus% vai listar outras, eu gostaria de uma forma que listase tudo independente da ondem das palavras.

Mas valeu pela dica Rafael :)
Você gosta de música???
Toca guitarra, violão ou outro instrumento???
------------------------------------------------------------------
Venha conhecer nosso site
http://www.supercifras.net
http://forum.supercifras.net

#6 Super Cifras.Net

Super Cifras.Net

    Turista

  • Usuários
  • 32 posts
  • Sexo:Não informado

Posted 05/03/2004, 12:15

Olá galera,

Bom, encontrei a resposta e estou colocando aqui para que quizer usar, funciona blz.

Não fui eu quem fiz, peguei em um site.

<html>
<head>
<title>Pesquisa Interna</title>
</head>
<?
# funcao para conectar no Banco de dados
function db_connect() {
$link = mysql_connect("localhost", "root", "");
if ($link && mysql_select_db("bancodados", $link)) {
return($link);
}
return(FALSE);
}
?>
<body bgcolor="#FFFFFF" text="#000000">
<p><font size="4"><b>Pesquisa Interna</b></font></p>
<?
if(strlen($OK) > 0) {
echo("<P><b>Resultado da Pesquisa Interna</b><p>");

$varSQL = "SELECT * FROM Search WHERE Body LIKE '%";
#abrindo conexao
$conn = db_connect() or die("Não foi possível conectar!");

$pares = split(" ", $chave);
for($i=0; $i<count($pares); $i++) {
$varSQL = $varSQL.$pares[$i]."%' ";
if ($i!=(count($pares)-1)) {
$varSQL = $varSQL."AND Body LIKE '%";
}
}

$resultado = mysql_query($varSQL) or die ("<p>Erro ao fazer a pesquisa. Tente novamente!");
$contador = 0;
while ($linha=mysql_fetch_array($resultado)) {
++$contador;
if ($contador >= $start && $contador < ($start + $max)) {
$NomePagina = $linha["NomePagina"];
$Titulo = $linha["Titulo"];
$Body = $linha["Body"];
echo("<p>");
echo("<b><a href=/kwb/$NomePagina>$Titulo</a></b><br>");
echo(substr($Body, 0, 400)." ...<br>");
echo("<font color=\"Gray\">$NomePagina</font>");
}
}
echo("<p>");
echo("<table width=150 cellspacing=0 cellpadding=0><tr><td>");
if ($start != '1') {
echo("<form method=post action=pesquise.php>");
echo("<input type=Hidden name=chave value=$chave>");
echo("<input type=Hidden name=start value=".($start - $max)."><input type=Hidden name=max value=$max>");
echo("<input type=submit name=OK value=Anterior>");
echo("</form>");
}
echo("</td><td>");
if ($contador > ($start + $max)) {
echo("<form method=post action=pesquise.php>");
echo("<input type=Hidden name=chave value=$chave>");
echo("<input type=Hidden name=start value=".($start + $max)."><input type=Hidden name=max value=$max>");
echo("<input type=submit name=OK value=Proximo>");
echo("</form>");
}
echo("</td></tr></table>");
#fechando a conexao
mysql_close($conn);
} else {
?>
<form name="form1" method="post" action="pesquise.php">
<table width="300" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Pesquise por:</td>
<td>
<input type="text" name="chave" size="20" maxlength="255">
</td>
<td>
<input type="submit" name="OK" value="OK">
</td>
</tr>
</table>
<input type="Hidden" name="start" value="1">
<input type="Hidden" name="max" value="10">
</form>
<?
}
?>
</body>
</html>

Só coloquei aqui pq derrepente alguem pode estar querendo um cod do mesmo tipo.

Obrigado a todos que ajudaram e t+ :D
Você gosta de música???
Toca guitarra, violão ou outro instrumento???
------------------------------------------------------------------
Venha conhecer nosso site
http://www.supercifras.net
http://forum.supercifras.net




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq