Jump to content
Jack Oliveira

[RESOLVIDO] - Fazer destaque em order by

Recommended Posts

Ola Amigos

@Omar~ @Motta

estou com uma duvida e ao mesmo tempo problemas..

Tenho uma caixa de pesquisa nela quero realizar DESTAQUE

fiz de uma maneira funciona porem quando a pesquisa se torna vazia ele não deixa em ordem alfabética

No caso do destaque ele vai destacar por valor numérico 

Ex: todos que estiver com o valor 1 ele vai aparecer em primeiro

os que estiver com o valor 2 vai aparecer em segundo e assim vai...

No meu código fiz desta maneira no caso ele me dar o destaque

apenas quando a busca e vazia que ele não deixa em ordem alfabética

	$Query = DBRead('tbl_cidade','*',"WHERE status = 'S'  
	AND titulo LIKE '%$pesquisar%' 
	OR palavra_chave LIKE  '%%$pesquisar%%' 
	OR endereco LIKE '%%$pesquisar%%' 
	OR telefone LIKE '%$pesquisar%' 
	order by  id_destaque, titulo ASC  LIMIT $inicio, $qnt_result_pg"); if (is_array($Query)) { foreach ($Query as $dados) {
	 

Na busca vazia ou seja quando não fazer nenhuma busca quero que ele aparece assim

Ex: A, B, C, D.. Etc....

Se eu colocar assim ele traz em ordem alfabética porem não traz o destaque como é para ser

	$Query = DBRead('tbl_cidade','*',"WHERE status = 'S'  
	AND titulo LIKE '%$pesquisar%' 
	OR palavra_chave LIKE  '%%$pesquisar%%' 
	OR endereco LIKE '%%$pesquisar%%' 
	OR telefone LIKE '%$pesquisar%' 
	order by  titulo, id_destaque ASC  LIMIT $inicio, $qnt_result_pg"); if (is_array($Query)) { foreach ($Query as $dados) {
	 

  Gradeço se puderem dar uma luz ai..

Share this post


Link to post
Share on other sites

 

Uma solução 

Order by ((case when titulo LIKE '%$pesquisar%' then 1 else 0 end) +
	      (Case when palavra_chave LIKE  '%%$pesquisar%%' then 1 else 0) +
	      (Case when endereco LIKE '%%$pesquisar%%' then 1 else 0 end) +
	      (Case when telefone LIKE '%$pesquisar%' then 1 else 0 ))

Veja também isto 

https://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

 

 

cuidado com AND e OR no mesmo WHERE

AND (titulo LIKE '%$pesquisar%' 
	OR palavra_chave LIKE  '%%$pesquisar%%' 
	OR endereco LIKE '%%$pesquisar%%' 
	OR telefone LIKE '%$pesquisar%')

Share this post


Link to post
Share on other sites
7 minutos atrás, Motta disse:

Order by ((case when titulo LIKE '%$pesquisar%' then 1 else 0 end) + (Case when palavra_chave LIKE '%%$pesquisar%%' then 1 else 0) + (Case when endereco LIKE '%%$pesquisar%%' then 1 else 0 end) + (Case when telefone LIKE '%$pesquisar%' then 1 else 0 ))

Perdoa mais não consegui entender aqui

no caso 

order by  titulo, id_destaque ASC

onde ai que eu puderei usar o id_destaque, titulo

no caso aqui eu coloco assim

 

((case when titulo  then 1 else 0 end) +
	      (Case when id_destaque then 1 else 0) +

Share this post


Link to post
Share on other sites

Perdão entào peço eu , não devo ter entendido a pergunta.

Share this post


Link to post
Share on other sites
7 horas atrás, Motta disse:

Perdão entào peço eu , não devo ter entendido a pergunta.

Boa tarde amigo @Motta  eu tenha a caixa de busca aqui...  na order by id_destque, titulo ASC 

Aqui ele me mostra os destaque que eu preciso, Ex:

Basico -- value="5"

Bronze  - value="4"

Prata - value="3"

Ouro - value="2"

Diamante - value="1"

Aqui no caso os valores numerico que me da os destaque conforme for a busca no site

Ex2: 

Loja1/ Diamante - value="1"

A Loja2/Diamante - value="1"

F Loja3/Diamante - value="1"

Loja4/Ouro - value="2"

G Loja5/Ouro - value="2"

M Loja6/Ouro - value="2"

Se assim vai no destaques

Mas quando eu busco faço a busca vazia sem nada ele não me mostra em ordem alfabética

Ex: A,B,C,D,F,E.....

Se eu inverte o comando order by  titulo, id_destque ASC 

 

Ele me mostra em ordem alfabética mas não mostra os destaque como é para ser....

quando pesquisar por ex por loja ele não precisa mostra em ordem alfabética 

Entendeu? rsrsrs

Share this post


Link to post
Share on other sites

Consegui fazer aqui com ajuda do @Felipe Guedes Coutinho valeu mano pela ajuda ai Deus abençoa sempre você se tira um tempo para dedicar em ajudar as pessoas aqui...

 

Aqui esta a solução do meu problema 

if(empty($pesquisar)) { 
$Query = DBRead('tbl_cidade','*',"WHERE status = 'S'  
	AND (titulo LIKE '%$pesquisar%' 
	OR palavra_chave LIKE  '%%$pesquisar%%' 
	OR endereco LIKE '%%$pesquisar%%' 
	OR telefone LIKE '%$pesquisar%') 
	order by  titulo ASC  LIMIT $inicio, $qnt_result_pg");
} else {

$Query = DBRead('tbl_cidade','*',"WHERE status = 'S'  
	AND (titulo LIKE '%$pesquisar%' 
	OR palavra_chave LIKE  '%%$pesquisar%%' 
	OR endereco LIKE '%%$pesquisar%%' 
	OR telefone LIKE '%$pesquisar%') 
	order by id_destaque, titulo  LIMIT $inicio, $qnt_result_pg");
}
	
	if (is_array($Query)) { foreach ($Query as $dados) {

Obrigado @Motta pelas dicas ditas ai vou seguir o seu conselho cada vez que tenho as duvidas e alguém ajuda isso para mim e um grande prazer poder apender mais e mais com todos que queira ajudar aqui...

Valeu galera...

 

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.