Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola pessoal
quando faço a pesquisa de 1 palavra tudo fica certo
se fizer de duas ou mais, ele repete de acordo com o
numero de palavras pesquisadas, seque codgio
exemplo de resultado com duas palavras
39 | 244 | RECURSOS HUMANOS | IRPF | 2016-04-10 | 2016-04-30 | 2016-04-19 | certidão de casamento | 8f75fd02b40c418cb259a93a7c9b9a29.jpg | ARQUIVADO / DIGITALIZADO | 2016-04-10 22:25:55 | INSITE CONSULTORIA | ADM39 | 244 | RECURSOS HUMANOS | IRPF | 2016-04-10 | 2016-04-30 | 2016-04-19 | certidão de casamento | 8f75fd02b40c418cb259a93a7c9b9a29.jpg | ARQUIVADO / DIGITALIZADO | 2016-04-10 22:25:55 | INSITE CONSULTORIA | ADM
codigo da consulta:
//rotina de busca
$busca = @$_REQUEST["busca"];
if ($busca<>"") {
$palavra = explode(" ", $busca);
$totalPalavras = count($palavra);
for($i = 0; $i < $totalPalavras; $i++){
$consultaUsuario = @$consultaUsuario." OR $campoBusca like '%".$palavra[$i]."%'";
}
}else{
$consultaUsuario = "OR $campoBusca like '%".$busca."%'";
}
$buscaUsuario = "WHERE 1=1 ".$consultaUsuario;
echo $buscaUsuario;
$SQL = mysql_query("SELECT * FROM $tabela
$buscaUsuario
ORDER BY $tabela.$campoId DESC
LIMIT $inicio,$limite") OR DIE(mysql_error());
//sql da paginação
$consulta = mysql_query("SELECT * FROM $tabela $buscaUsuario") OR DIE(mysql_error());
//rotina de contagem de paginas
$total_registros = mysql_num_rows($consulta);
$total_paginas = Ceil($total_registros / $limite);
?>
codigo da mostra do resuldado:
<?php while($RF = mysql_fetch_array($SQL)){ ?>
<form method="post" action="<?php echo $arquivoadd?>">
<tr>
<td><?php echo $RF["hstId"];?></td>
<td><?php echo date('d/m/y', strtotime($RF["hstData"]));?></td>
<td><?php echo $RF["hstAcao"];?></td>
<td><?php echo $RF["hstTabela"];?></td>
<td><?php
if($busca == ""){
echo $RF["hstBusca"];
} else {
$pesquisa = explode(" ", $busca);
for ($i = 0; $i < count($pesquisa); $i++) {
$resposta = str_ireplace(trim($pesquisa[$i]), trim("<span style='background-color:#FFFF00'><b>$pesquisa[$i]</b></span>"), $RF["hstBusca"]);
echo $resposta;
}
}
?>
</td>
</tr>
</form>
<?php } ?>
GRATO
estou usando mysql
--
-- Estrutura da tabela tb_historico
--
CREATE TABLE `tb_historico` (
`hstId` int(11) NOT NULL,
`hstData` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`hstAcao` varchar(1) DEFAULT NULL,
`hstTabela` text,
`hstBusca` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;Ok, tem o SQL da consulta ?
Brother, da um print na sua consulta e joga direto no banco. Pode colocar o resultado do print com o select formado aqui também pra gente ver.
exemplo de resultado com duas palavras
39 | 244 | RECURSOS HUMANOS | IRPF | 2016-04-10 | 2016-04-30 | 2016-04-19 | certidão de casamento | 8f75fd02b40c418cb259a93a7c9b9a29.jpg | ARQUIVADO / DIGITALIZADO | 2016-04-10 22:25:55 | INSITE CONSULTORIA | ADM39 | 244 | RECURSOS HUMANOS | IRPF | 2016-04-10 | 2016-04-30 | 2016-04-19 | certidão de casamento | 8f75fd02b40c418cb259a93a7c9b9a29.jpg | ARQUIVADO / DIGITALIZADO | 2016-04-10 22:25:55 | INSITE CONSULTORIA | ADM
exemplo do sql:
SELECT * FROM tb_historico
WHERE 1=1 OR hstBusca LIKE '%"244"%' OR hstBusca LIKE '%"DIGITALIZADO"%'
ORDER BY tb_historico.hstId DESC
LIMIT 1,50") OR DIE(mysql_error())
Amigo, gere o busca apenas em uma instrução LIKE. Dica substitua os espaços em branco por %.
Algo parecido com isso
SELECT * FROM tb_historicoWHERE 1=1 OR hstBusca LIKE '%"244"%"DIGITALIZADO"%'
ORDER BY tb_historico.hstId DESC
obrigado pela dica, mas não funcionou, não separou nenhum resultado.
e o que acho o meu principal problema esta na exibição dos resultados, pois
ele acha os resultado ai quando vai para exibir ele exibi de acordo com o
numero de palavras pesquisadas, se for 2 duas vezes a pesquisa, a primeira
com a primeira paravra marcada e a segunda exibe com a segunda palavra
marcada.
repare dentro do FOR que esta o erro
codigo de exibição:
<?php while($RF = mysql_fetch_array($SQL)){ ?>
<form method="post" action="<?php echo $arquivoadd?>">
<tr>
<td><?php echo $RF["hstId"];?></td>
<td><?php echo date('d/m/y', strtotime($RF["hstData"]));?></td>
<td><?php echo $RF["hstAcao"];?></td>
<td><?php echo $RF["hstTabela"];?></td>
<td><?php
if($busca == ""){
echo $RF["hstBusca"];
} else {
$pesquisa = explode(" ", $busca);
for ($i = 0; $i < count($pesquisa); $i++) {
$resposta = str_ireplace(trim($pesquisa[$i]), trim("<span style='background-color:#FFFF00'><b>$pesquisa[$i]</b></span>"), $RF["hstBusca"]);
echo $resposta;
}
}
?>
</td>
</tr>
</form>
<?php } ?>
Grato
Claro, como nós não vimos isso antes :D, mas está resolvido ?
Olá amigo, você pode descrever o modelo da tabela de dados e o sql que utiliza para consulta ?