Ir para conteúdo
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..

Compartilhar este post


Link para o post
Compartilhar em outros 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%')

Compartilhar este post


Link para o post
Compartilhar em outros 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) +

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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...

 

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

×

Informação importante

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