Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Israel Lemes

MYSQL SELECT * e count(*)

Recommended Posts

Bom Dia!
Sou novo em programação PHP+MySQL
meu código é complexo, de certa forma,
ele deve funcionar da seguinte forma:
Ele pega uma variável (array), e altera o SELECT com UNION para toda quantidade de array
é para um sistema de busca que devo implantar em meu site, você procura e ele verifica palavra por palavra no banco de dados...
porém, eu não estou conseguindo de forma alguma organizar os resultador por ordem de contagem
tipo o count(*)...
Abaixo postei o código como está funcionando, mas ele não organiza por contagem, organiza por dados da base de dados, o que eu gostaria de mudar...
Ficaria muito agradecido se alguém me ajudasse a implantar o sistema Count(*) no código abaixo, de uma forma que funcione!!
desde já, muito obrigado!




if (count($a) > 1) {
$sqla =
" SELECT * FROM a
WHERE
( nome LIKE '%$a[0]%' OR
link LIKE '%$a[0]%' OR
site LIKE '%$a[0]%' )
&& (regiao = 'p' or regiao = 'e' && uf = '$e' or cidade = '$c')";
for ($i=1;$i<count($a);$i++) { $sqla .=
" UNION
SELECT * FROM a
WHERE
( nome LIKE '%$a[$i]%' OR
link LIKE '%$a[$i]%' OR
site LIKE '%$a[$i]%' )
&& (regiao = 'p' or regiao = 'e' && uf = '$e' or cidade = '$c')
";
}
$sqla .= 'ORDER BY plano, nome';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito Obrigado!

Eu consegui da seguinte forma:

 

 

if (count($a) > 1) {
$sqla ="
SELECT *,
(MATCH (nome) AGAINST ('%$a[0]%' in boolean mode) * 10)
+
(MATCH (categoria) AGAINST ('%$a[0]%' in boolean mode) * 5)
+
(MATCH (produtos) AGAINST ('%$a[0]%' in boolean mode) * 3)
+
(MATCH (servicos) AGAINST ('%$a[0]%' in boolean mode) * 3)
+
(MATCH (descricao) AGAINST ('%$a[0]%' in boolean mode) * 3)
+
(MATCH (fone1, fone2, fone3, fone4, fone5) AGAINST ('%$a[0]%' in boolean mode) * 5)
+
(MATCH (email) AGAINST ('%$a[0]%' in boolean mode) * 1)
+
(MATCH (facebook) AGAINST ('%$a[0]%' in boolean mode) * 1)
+
(MATCH (youtube) AGAINST ('%$a[0]%' in boolean mode) * 1)
+
(MATCH (site) AGAINST ('%$a[0]%' in boolean mode) * 1)
AS rank
FROM a
WHERE
(( nome LIKE '%$a[0]%' OR
link LIKE '%$a[0]%' OR
descricao LIKE '%$a[0]%' OR
produtos LIKE '%$a[0]%' OR
servicos LIKE '%$a[0]%' OR
fone1 LIKE '%$a[0]%' OR
fone2 LIKE '%$a[0]%' OR
fone3 LIKE '%$a[0]%' OR
fone4 LIKE '%$a[0]%' OR
fone5 LIKE '%$a[0]%' OR
email LIKE '%$a[0]%' OR
facebook LIKE '%$a[0]%' OR
youtube LIKE '%$a[0]%' OR
site LIKE '%$a[0]%' )
&& (regiao = 'p' or regiao = 'e' && uf = '$e' or cidade = '$c'))";
for ($i=1;$i<count($a);$i++) { $sqla .=
" UNION
SELECT *,
(MATCH (nome) AGAINST ('%$a[$i]%' in boolean mode) * 10)
+
(MATCH (categoria) AGAINST ('%$a[$i]%' in boolean mode) * 5)
+
(MATCH (produtos) AGAINST ('%$a[$i]%' in boolean mode) * 3)
+
(MATCH (servicos) AGAINST ('%$a[$i]%' in boolean mode) * 3)
+
(MATCH (descricao) AGAINST ('%$a[$i]%' in boolean mode) * 3)
+
(MATCH (fone1, fone2, fone3, fone4, fone5) AGAINST ('%$a[$i]%' in boolean mode) * 5)
+
(MATCH (email) AGAINST ('%$a[$i]%' in boolean mode) * 1)
+
(MATCH (facebook) AGAINST ('%$a[$i]%' in boolean mode) * 1)
+
(MATCH (youtube) AGAINST ('%$a[$i]%' in boolean mode) * 1)
+
(MATCH (site) AGAINST ('%$a[$i]%' in boolean mode) * 1)
AS rank
FROM a
WHERE
( nome LIKE '%$a[$i]%' OR
link LIKE '%$a[$i]%' OR
descricao LIKE '%$a[$i]%' OR
produtos LIKE '%$a[$i]%' OR
servicos LIKE '%$a[$i]%' OR
fone1 LIKE '%$a[$i]%' OR
fone2 LIKE '%$a[$i]%' OR
fone3 LIKE '%$a[$i]%' OR
fone4 LIKE '%$a[$i]%' OR
fone5 LIKE '%$a[$i]%' OR
email LIKE '%$a[$i]%' OR
facebook LIKE '%$a[$i]%' OR
youtube LIKE '%$a[$i]%' OR
site LIKE '%$a[$i]%' )
&& (regiao = 'p' or regiao = 'e' && uf = '$e' or cidade = '$c')
";
}
$sqla .= "ORDER BY rank DESC, plano DESC, nome";
Está funcionando Bem até aí!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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