Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Criei uma tabela Teste com os campos ID e Texto. Depois gravei três registros.
id 1: volante direção porta (texto)
id 2: porta buzina roda (texto)
id 3: roda acelerador brake (texto)
Se minha busca é: "volante direção" OK, acha 1 resultado.
Se minha busca é: "volante roda", NADA, nenhum resultado encontrado.
Ou seja, buscar palavras contidas em IDs diferentes o resultado da busca é sempre "0".
Já aconteceu algo assim com vocês?? Tem uma solução?!
Abraços.
<?
if( !empty($_POST['palavra']) )
{
$palavra = str_replace(" ", "%", $_POST['palavra']); /* Altera os espaços adicionando no lugar o simbolo % */
$qr = "SELECT * FROM Teste WHERE texto LIKE '%".$palavra."%' ORDER BY id";
$sql = mysql_query($qr); // Executa a query no Banco de Dados
$total = mysql_num_rows($sql); // Conta o total ded resultados encontrados
echo "Sua busca retornou <b>'$total'</b> resultados.<br>";
while($r = mysql_fetch_array($sql)) { // Gera o Loop com os resultados
echo "<hr><br />";
echo $r[texto]."<br>";
}
}
?>Beraldo,
beleza, vou dar uma estudada nisso. Com a função explode já mexi. Agora, usando ela no SELECT nunca.
Vou ver, se funcionar posto aqui, se não, posto tb, rs.
Abraços.
Fiz um aqui, mas a minha lógica não funfou... qdo busca, fica sem parar listando todas as IDs.
<?
if( !empty($_POST['palavra']) )
{
$palavras = explode(" ", $_POST['palavra']);
for ($i=0;$i=$palavras;$i++) {
$qr = "SELECT * FROM Teste WHERE texto LIKE '%".$palavras[$i]."%' ORDER BY id";
$sql = mysql_query($qr); // Executa a query no Banco de Dados
$total = mysql_num_rows($sql); // Conta o total ded resultados encontrados
echo "Sua busca retornou <b>'$total'</b> resultados.<br>";
while($r = mysql_fetch_array($sql)) { // Gera o Loop com os resultados
echo "<hr><br />";
echo $r[texto]."<br>";
}
}
}
?>Abraços.
Tenta assim
if( !empty($_POST['palavra']) )
{
$palavras = explode(" ", trim($_POST['palavra']) );
$pesquisa = "SELECT * FROM Teste WHERE texto LIKE '%".$palavras[0]."%' ";
for($i=1; $i<count($palavras); $i++)
$pesquisa .= "AND texto LIKE '%".$palavras[$i]."%' ";
$pesquisa .= " ORDER BY id";
$resultado = mysql_query($pesquisa);
if ( $resultado )
{
while ( $conjunto[] = @mysql_fetch_row( $resultado ) );
@mysql_close( $conexao );
return $conjunto;
}
else
{
@mysql_close( $conexao );
return FALSE;
}
}A solução para resolver a busca com mais de uma palavra (uma tb) usando vírgula foi solucionada pelo amigo Jezão (postou a solução em um tópico diferente)
Segue abaixo código final...
Exemplo: 6,9,12,15
<?php
// conecta BD ...
require_once("conectar/config.php");
// palavras vindo do form...
$palavra = $_POST[palavra];
?>
<?php
$qry = "SELECT * FROM Relatorios WHERE id_rel in (".$palavra.") ORDER BY id_rel";
$result = mysql_query($qry);
$linhas = mysql_num_rows($result);
if ($linhas==0) {
echo "Não foi encontrado nenhum relatório.";
}?>
<table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td>
<?php
for($i=0;$i<$linhas;$i++){
$id_rel = mysql_result($result, $i, "id_rel");
$id_rep = mysql_result($result, $i, "id_rep");
echo "<tr><td>$id_rel - $id_rep<br></td></tr>\n";
}
?>
</table>
<?php
}
?>Abraços...
Qq coisa, postem aí.
Você terá de fazer o SELECT com cada uma das palavras da busca. Você pode usar explode() para separá-las e montar a busca dinamicamente, conforme o número de índices do array retornado pelo explode().
http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif