Ir para conteúdo

POWERED BY:

Arquivado

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

Reinaldo

Busca com paginação dando erro

Recommended Posts

Olá amigos preciso de uma ajuda:

Vejam bem o codigo abaixo que conta os registro quando é colocado o nome no campo de busca:

' conta o numero de registros...
sql = "SELECT COUNT(*) AS total FROM tabcadastro where empresa like '%"&VarEmpresa&"%' or chave like '%"&varchave&"%' and cidade='"&varcidade&"' and idcategoria = '"&varid&"'"
set objrs = conexao.execute(sql)

Aqui ele seleciona:

 


' selecionamos os registros...
sql="SELECT * FROM tabcadastro where empresa like '%"&VarEmpresa&"%' or chave like '%"&varchave&"%' and cidade='"&varcidade&"' and idcategoria = '"&varid&"' order by ID asc LIMIT " & (paginaAtual - 1) * pageSize & " , " & pageSize
Set objrs = conexao.execute(sql)

Não está correto por que tem momentos que pega tudo, mas se eu escolho outra cidade mesmo estando registrado no banco não aparece nada, a paginação funciona bem só essa forma de buscar os dados de acordo com a cidade,estado e os parametros que estou colocando que está dando erro ou seja tem horas que mostra tudo em outros casos não mostra nada.

Só coloquei a parte do condigo que está dando conflito acho que é o suficiente.

obs: Todas as informações estão numa unica tabela de cadastro(empresa,chave,cidade,idcategoria) estão na mesma tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele gera algum erro ???

dá um response.write na sua string sql, para ver o k esta sendo passado

sql="SELECT * FROM tabcadastro where empresa like '%"&VarEmpresa&"%' or chave like '%"&varchave&"%' and cidade='"&varcidade&"' and idcategoria = '"&varid&"' order by ID asc LIMIT " & (paginaAtual - 1) * pageSize & " , " & pageSize
response.write(SQL)
response.end()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resultado:

 

 

 

SELECT * FROM tabcadastro where empresa like '%eventos%' or chave like '%%' and cidade='Salvador' and idcategoria = '' order by ID asc LIMIT 0 , 12

 

Outra coisa o idcategoria não está sendo obedecido na busca ele pega qq coisa que tem no banco ou seja, se eu tiver na pagina referente a viagens colocar na busca eventos ele mostra tudo de eventos que tem outro idcategoria.

 

http://www.toldosefestas.net/viagenseturismo.asp?buscar=ok&idcategoria=4&busca=eventos&uf=5&cidade=Salvador&Submit=Buscar

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele pega devido o LIKE %

o id esta como string

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja o resultado:

 

SELECT * FROM tabcadastro where empresa like '%toldos%' and chave like '%toldos%' and cidade='Salvador' and idcategoria = 1 order by ID asc LIMIT 0 , 12

 

Todos os dados são pegos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

desta forma esta trazendo apenas o idcategoria = 1 !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

desta forma esta trazendo apenas o idcategoria = 1 !!!

 

 

De que forma devo montar essa consulta para que só traga os dados correspondentes a cada item?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu testei uma sql

SELECT * FROM tabela where campo1 like '%var1%' and campo2 like '%var2%' and campo3 ='var3' and idcategoria = 1

e funcionou normal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Analisa por favor porque não sei mais o que fazer, agora ele não acha nada....

 

' conta o numero de registros...

sql = "SELECT COUNT(*) AS total FROM tabcadastro where empresa like '%&VarEmpresa&%' and cidade='&varcidade&'"

set objrs = conexao.execute(sql)

'total de registros

recordCount = Cint(objrs("total"))

 

'calculamos o numero de paginas...

 

pageCount = Clng(recordCount / pageSize)

 

If pageCount < 1 then

pageCount = 1

end if

 

objrs.Close()

 

 

Flag1 = INT(paginaAtual / pagesize)

 

PI = INT(Flag1 * pagesize)

 

IF PI = 0 THEN

PI = 1

END IF

PF = PI + pagesize - 1

 

' selecionamos os registros...

 

sql="SELECT * FROM tabcadastro where empresa like '%&varchave&%' and chave like '%&varchave&%' and cidade='&varcidade&' and idcategoria = 1 order by ID asc LIMIT " & (paginaAtual - 1) * pageSize & " , " & pageSize

Set objrs = conexao.execute(sql)

 

 

 

 

 

eu testei uma sql

SELECT * FROM tabela where campo1 like '%var1%' and campo2 like '%var2%' and campo3 ='var3' and idcategoria = 1

e funcionou normal

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente usar o objeto recordset para testar

 

constring="provider=microsoft.JET.OLEDB.4.0;Data Source=" & Server.MapPath("db/seu banco.mdb")
Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring
set rs=Server.createobject("ADODB.Recordset")
	'crio a SQL
	sql = "SELECT COUNT(*) AS total FROM tabcadastro where empresa like '%&VarEmpresa&%' and cidade='&varcidade&'
	rs.open SQL,conexao,1,3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com mysql é da mesma forma, porque continua sem achar nada agora.

 

tente usar o objeto recordset para testar

 

constring="provider=microsoft.JET.OLEDB.4.0;Data Source=" & Server.MapPath("db/seu banco.mdb")
Set conexao=Server.CreateObject("ADODB.Connection")
conexao.open constring
set rs=Server.createobject("ADODB.Recordset")
	'crio a SQL
	sql = "SELECT COUNT(*) AS total FROM tabcadastro where empresa like '%&VarEmpresa&%' and cidade='&varcidade&'
	rs.open SQL,conexao,1,3

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho, ele gera algum erro ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual é o seu banco, tente rodar ele no QueryAnaliser do SQL Server ou no modo SQL do access, e veja o k é retornado

Compartilhar este post


Link para o post
Compartilhar em outros sites

O banco é o mysql o que você sugeriu abaixo não tenho nenhum conhecimento de como fazer.

 

Interessante é que só é mostrado algum registro se for dessa forma-> empresa like '%"&varEmpresa&"%' mas aí se eu colocar outros termos da busca não mostra nada.

 

qual é o seu banco, tente rodar ele no QueryAnaliser do SQL Server ou no modo SQL do access, e veja o k é retornado

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

será k junto com os outros critérios de busca ele naun esta encontrando, muitas vezes isso acontece, e você pode por exemplo, até dar algumas opcoes de pesquisa para o usre , como por exemplo, ele pode escolher entre busca usando o AND ,OR ou pela frase exata, eu colokei um exemplo no forum, dê uma analisada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me diz uma coisa quando se configura pra buscar por palavra chave o sistema ignora o id da categoria?

 

Acho que esse tem sido o problema na verdade porque cada pagina tem o idcategoria correspondente aquele servico e utilizando a busca por palavra chave ele pega informações de outras categorias.

 

é isso mesmo?

 

 

 

 

 

 

 

será k junto com os outros critérios de busca ele naun esta encontrando, muitas vezes isso acontece, e você pode por exemplo, até dar algumas opcoes de pesquisa para o usre , como por exemplo, ele pode escolher entre busca usando o AND ,OR ou pela frase exata, eu colokei um exemplo no forum, dê uma analisada...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se poder ver esse cogido pra ver o que acontece eu agradeço, ele não consgue ler todos os registros da busca do site por palavras chave:

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta o code inteiro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta o code inteiro...

 

Segue a parte principal do codigo onde é feito a consulta:

 

if request("buscar")="ok" then
varEmpresa = Request.Querystring("busca")
'session("palavrachave") = varEmpresa
varuf = Request.Querystring("uf")
varcidade=Request.Querystring("cidade")
varid = Request.QueryString("idcategoria")
varchave = Request.QueryString("busca")

'pega a pagina atual
pagina = request.ServerVariables("SCRIPT_NAME")

'numero de registros por pagina...
pageSize=10

if(len(Request.QueryString("p")) = 0 )then
 paginaAtual = 1
else
 paginaAtual = CInt(Request.QueryString("p"))
end if

' conta o numero de registros...

sql = "SELECT COUNT(*) AS total FROM tabcadastro where (idcategoria = 1 and empresa ='"&varEmpresa&"' and cidade='"&varcidade&"')or(idcategoria = 1 and chave like '%"&varchave&"%' and cidade='"&varcidade&"')"
set objrs = conexao.execute(sql)



'total de registros
recordCount = Cint(objrs("total"))

'calculamos o numero de paginas...

pageCount = Clng(recordCount / pageSize)

If pageCount < 1 then
pageCount = 1
end if

objrs.Close()


Flag1 = INT(paginaAtual / pagesize)

PI = INT(Flag1 * pagesize)

IF PI = 0 THEN
PI = 1
END IF
PF = PI + pagesize - 1

'Seleciona os registros

'set objrs=Server.CreateObject("ADODB.RECORDSET")
sql="SELECT * FROM tabcadastro where (idcategoria = 1 and empresa ='"&varEmpresa&"' and cidade='"&varcidade&"') or(idcategoria = 1 and chave like '%"&varchave&"%' and cidade='"&varcidade&"') order by ID asc, nivel desc LIMIT " & (paginaAtual - 1) * pageSize & " , " & pageSize
set objrs = conexao.execute(sql)
'objrs.open sql, conexao ,1 ,3
'response.Write(sql)
'response.End()

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.