Ir para conteúdo
andreval

resultado de consulta duplicado

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

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())

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por antonio_milat
      Meu listener está sendo chamado duas vezes, mas o evento só é disparado uma vez.
      Eu copiei a base do código da documentação do Lumen 5.7 e aparentemente está tudo configurado corretamente. Não consigo encontrar o problema.
       
      bootstrap/app.php
      $app->register(App\Providers\EventServiceProvider::class);  
      app/Providers/EventServiceProvider.php
      protected $listen = [ 'App\Events\NewAuthEvent' => [ 'App\Listeners\SendNewAuthListener', ], ];  
      app/Events/NewAuthEvent.php
      use Illuminate\Queue\SerializesModels; use App\Data\Entity\User; use App\Data\Entity\Authorization; use Illuminate\Support\Facades\Log; class NewAuthEvent { use SerializesModels; public $user; public $auth; public function __construct(User $user, Authorization $auth) { Log::debug("Disparado uma vez"); $this->user = $user; $this->auth = $auth; } }  
      app/Listeners/SendNewAuthListener.php
      use App\Events\NewAuthEvent; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use App\Data\Service\MessengerService; use Illuminate\Support\Facades\Log; class SendNewAuthListener { private $messenger; public function __construct(MessengerService $messenger) { Log::debug("Chamado duas vezes"); $this->messenger = $messenger; } public function handle(NewAuthEvent $event) { Log::debug("Chamado duas vezes também"); $this->messenger->new($event->user, $event->auth); } }  
      Disparando o evento:
      event(new NewAuthEvent($objUser, $objAuthorization)); Estou me esquecendo de algum parâmetro ou configuração? Agradeço desde já!
    • Por leoteixeira2
      Ola pessoal, blz ??? 
       
      Galera estou com uma grande dificuldade para fazer uma consulta MYSQL. Preciso que retorne os produtos e a quantidade venda do mesmo para cada funcionario. Como a tabela a baixo:
       
      ESPECIFICACAO
      TOTAL_VENDAS_LUCAS
      TOTAL_VENDAS_LUIZ
      TOTAL_VENDAS_MARCELO
      PRECO_SC
      PRECO_PR
      CUSTO
      FANDANGOS
      3.5
      6.7
      7.0
      7.90
      8.50
      5.00
      COCA COLA
      5.6
      5.6
      8.0
      8.50
      8.70
      6.00
      ALCATRA
      12.4
      8.2
      6.4
      15.78
      14.47
      10.00
      CERVEJA
      44.8
      54.9
      5.3
      14.75
      10.64
      12.36
      BARALHO
      32.9
      5.0
      4.8
      5.74
      6.20
      4.20
       
      Porém não sei como que estrutura  varios WHERE na mesma consulta, porque são varios funcionarios(5). Tipo o código a baixo só me retorna os valores do funcionario Luiz Henrique. Minha duvida então é o seguinte, como que faço para ter o total_venda de cada funcionario em uma mesma consulta como na tabela acima.
      SELECT DISTINCT(especificacao), preco_sc, preco_pr, custo, SUM(venda_sc) + (venda_pr) as total_venda_luiz FROM pagamentos where funcionario=("Luiz Henrique") and (dia >='01' and dia <='31') and mes=('11') and ano=('2018') GROUP BY especificacao;  
      Alguem poderia me dar uma luz por favor ???? OBRIGADOOO
    • Por leoteixeira2
      Ola pessoal, blz ??? 
       
      Galera estou com uma grande dificuldade para fazer uma consulta MYSQL. Preciso que retorne os produtos e o valor total da venda do mesmo para cada funcionario. Como a tabela a baixo:
       
      ESPECIFICACAO
      TOTAL_VENDAS_LUCAS
      TOTAL_VENDAS_LUIZ
      TOTAL_VENDAS_MARCELO
      PRECO_SC
      PRECO_PR
      CUSTO
      FANDANGOS
      3.5
      6.7
      7.0
      7.90
      8.50
      5.00
      COCA COLA
      5.6
      5.6
      8.0
      8.50
      8.70
      6.00
      ALCATRA
      12.4
      8.2
      6.4
      15.78
      14.47
      10.00
      CERVEJA
      44.8
      54.9
      5.3
      14.75
      10.64
      12.36
      BARALHO
      32.9
      5.0
      4.8
      5.74
      6.20
      4.20
       
      Porém não sei como que estrutura  varios WHERE na mesma consulta, porque são varios funcionarios(5). Tipo o código a baixo só me retorna os valores do funcionario Luiz Henrique. Minha duvida então é o seguinte, como que faço para ter o total_venda de cada funcionario em uma mesma consulta como na tabela acima.
      SELECT DISTINCT(especificacao), preco_sc, preco_pr, custo, SUM(venda_sc) + (venda_pr) as total_venda_luiz FROM pagamentos where funcionario=("Luiz Henrique") and (dia >='01' and dia <='31') and mes=('11') and ano=('2018') GROUP BY especificacao;  
      Alguem poderia me dar uma luz por favor ???? OBRIGADOOO
    • Por leoteixeira2
      Ola pessoal, blz ??? 
       
      Galera estou com uma grande dificuldade para fazer uma consulta MYSQL. Preciso que retorne os produtos e a quantidade venda do mesmo para cada funcionario. Como a tabela a baixo:
       
      ESPECIFICACAO
      TOTAL_VENDAS_LUCAS
      TOTAL_VENDAS_LUIZ
      TOTAL_VENDAS_MARCELO
      PRECO_SC
      PRECO_PR
      CUSTO
      FANDANGOS
      3.5
      6.7
      7.0
      7.90
      8.50
      5.00
      COCA COLA
      5.6
      5.6
      8.0
      8.50
      8.70
      6.00
      ALCATRA
      12.4
      8.2
      6.4
      15.78
      14.47
      10.00
      CERVEJA
      44.8
      54.9
      5.3
      14.75
      10.64
      12.36
      BARALHO
      32.9
      5.0
      4.8
      5.74
      6.20
      4.20
       
      Porém não sei como que estrutura  varios WHERE na mesma consulta, porque são varios funcionarios(5). Tipo o código a baixo só me retorna os valores do funcionario Luiz Henrique. Minha duvida então é o seguinte, como que faço para ter o total_venda de cada funcionario em uma mesma consulta como na tabela acima.
      SELECT DISTINCT(especificacao), preco_sc, preco_pr, custo, SUM(venda_sc) + (venda_pr) as total_venda_luiz FROM pagamentos where funcionario=("Luiz Henrique") and (dia >='01' and dia <='31') and mes=('11') and ano=('2018') GROUP BY especificacao;  
      Alguem poderia me dar uma luz por favor ???? OBRIGADOOO
    • Por wilson c. antonio
      Eu recebo os dados via post, nome e cpf, mas minha consulta não retorna nenhum dado da tabela consultada.
      O que está errado?
      <?php include("../_conexao/funcoes.php"); $con=conectado(); #conferindo os dados recebidos via $_POST if(isset($_POST['btnLogin'])){ #addslashes(trim)remove as sobras de texto em branco dos campos $nome = addslashes(trim($_POST['nNome'])); $cpf = addslashes(trim($_POST['nCPF'])); } $sql=$con->prepare("SELECT * FROM bolsa WHERE bolsa.cpf = $cpf "); $sql->execute(); while($linha=$sql->fetch(PDO::FETCH_ASSOC)){ //paginação - somar quantidade de usuários $id_bolsa = $linha['id_bolsa']; $nome = $linha['nome']; $sobrenome = $linha['sobrenome']; $ddata = date('d/m/Y', strtotime($linha['dtprv'])); $nota = $linha['nota']; $acertos = $linha['acertos']; } ?> <input type="text" value="<?php echo $nota?>" readonly="true"/> <input type="text" value="<?php echo $cpf?>" readonly="true"/>  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.