Jump to content


Photo

Problema Paginação Asp (Loja Locaweb ' Versão: 6.5)


  • Faça o login para participar
2 replies to this topic

#1 locoman

locoman

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 24/10/2011, 11:25

Olá amigos! Estou com um problema no meu código ASP com banco MySQL, mas não tá funcionando o link das páginas na paginação (ex: página 1 2 3 4). A página 1 carrega normal mas os demais links não funcionam... (vejam = http://www.ecidlojav...br/produtos.asp) :unsure:

Se alguem puder me ajudar agradeço d+

*o erro que aparece é esse:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 5.1 Driver][mysqld-5.1.54-rel12.6-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and url_subcategoria = '2'' at line 1
/funcoes/funcoes.asp, line 271


O Script aonde tá o erro é esse

OQUE TÁ DE VERMELHO É AONDE APONTA O ERRO LINHA: 271
'########################################################################################################
'SUB exibe_produtos
' - Lista os RS_Produto cadastrados com as opções COMPRA/DESCRIÇÃO/INDICAR
' - Chamada no arquivo RS_Produto.ASP
'########################################################################################################
Sub exibe_produtos()


if request("url_categoria") <> "" then

codcat = pega_dadobanco("Categorias","codigo_categoria","url_categoria","'"&request("url_categoria")&"'")

end if


if request("url_marca") <> "" then

codmarca = pega_dadobanco("Marcas","codigo_marca","url_marca","'"&request("url_marca")&"'")

end if

if request("codigo_marca") <> "" then

codmarca = request("codigo_marca")
url_marca_busca = pega_dadobanco("Marcas","url_marca","codigo_marca","'"&request("codigo_marca")&"'")

end if


if request("url_marca") <> "" then

codmarca = pega_dadobanco("Marcas","codigo_marca","url_marca","'"&request("url_marca")&"'")
url_marca_busca = request("url_marca")

end if

if request("url_subcategoria") <> "" then


Set RS_Subcategoria = Server.CreateObject("ADODB.Recordset")
RS_Subcategoria.CursorLocation = 3
RS_Subcategoria.CursorType = 0
RS_Subcategoria.LockType = 1
RS_Subcategoria.Open "SELECT codigo_subcategoria, h1_subcategoria, nome_subcategoria FROM Subcategorias WHERE sigla_idioma='"&varLang&"' AND codigo_categoria = "&codcat &" and url_subcategoria = '"request("url_subcategoria")"'" , Conexao
codsubcat = RS_Subcategoria("codigo_subcategoria")
'Fecha e libera da memória o objeto de Recordset
RS_Subcategoria.close
Set RS_Subcategoria = Nothing


'codsubcat = pega_dadobanco("Subcategorias","codigo_subcategoria","url_subcategoria","'"&request("url_subcategoria")&"'")

end if
'Query_produtos monta uma string para consulta no banco de dados
' Define a ordem de exibição dos produtos

If Request("orderby") <> "" Then
queryORDERBY = "ORDER BY Produtos." & Request("orderby")
Else
queryORDERBY = "ORDER BY Produtos." & Application("OrdemProduto")
End If

' Oculta a possibilidade de ordem dos produtos
exibeOrdemProd = False

'Se a busca partir de uma categoria
If request("tipo_busca") = "categoria" Then

Query_produtos = "SELECT Produtos.codigo_produto, Produtos.codigo_categoria, Produtos.codigo_subcategoria, Produtos.codigo_marca, Produtos.codigo_produto_loja, Produtos.nome_produto, Produtos.descricao_produto, Produtos.autor, Produtos.codigo_isbn, Produtos.tamanhos, Produtos.cores, Produtos.preco_base, Produtos.preco_unitario, Produtos.desconto, Produtos.moeda, Produtos.quantidade_produto, Produtos.img_produtoPQN, Produtos.img_produtoGRD, Produtos.img_produto_adic01PQN, Produtos.img_produto_adic01GRD, Produtos.img_produto_adic02PQN, Produtos.img_produto_adic02GRD, Produtos.img_produto_adic03PQN, Produtos.img_produto_adic03GRD, Produtos.peso, Produtos.Frete_Gratis, Produtos.destaque_vitrine, Produtos.promocao, Produtos.data_inicio, Produtos.data_fim, Produtos.disponivel, Produtos.sigla_idioma FROM Categorias INNER JOIN Produtos ON Categorias.codigo_categoria = Produtos.codigo_categoria WHERE Produtos.codigo_categoria = "&codcat&" AND Produtos.sigla_idioma = '"&varLang&"' AND Categorias.sigla_idioma = '"&varLang&"' AND Produtos.disponivel = 1 " & queryORDERBY

' Habilita a possibilidade de ordem dos produtos
exibeOrdemProd = True

'Se a busca partir de uma subcategoria
ElseIf request("tipo_busca") = "subcategoria" Then

Query_produtos = "SELECT Produtos.codigo_produto, Produtos.codigo_categoria, Produtos.codigo_subcategoria, Produtos.codigo_marca, Produtos.codigo_produto_loja, Produtos.nome_produto, Produtos.descricao_produto, Produtos.autor, Produtos.codigo_isbn, Produtos.tamanhos, Produtos.cores, Produtos.preco_base, Produtos.preco_unitario, Produtos.desconto, Produtos.moeda, Produtos.quantidade_produto, Produtos.img_produtoPQN, Produtos.img_produtoGRD, Produtos.img_produto_adic01PQN, Produtos.img_produto_adic01GRD, Produtos.img_produto_adic02PQN, Produtos.img_produto_adic02GRD, Produtos.img_produto_adic03PQN, Produtos.img_produto_adic03GRD, Produtos.peso, Produtos.Frete_Gratis, Produtos.destaque_vitrine, Produtos.promocao, Produtos.data_inicio, Produtos.data_fim, Produtos.disponivel, Produtos.sigla_idioma FROM Categorias INNER JOIN Produtos ON Categorias.codigo_categoria = Produtos.codigo_categoria WHERE Produtos.codigo_subcategoria = "&codsubcat&" AND Produtos.sigla_idioma = '"&varLang&"' AND Categorias.sigla_idioma = '"&varLang&"' AND Produtos.disponivel = 1 " & queryORDERBY

' Habilita a possibilidade de ordem dos produtos
exibeOrdemProd = True

'Se a busca partir de uma marca
ElseIf request("tipo_busca") = "marca" Then

Query_produtos = "SELECT Produtos.codigo_produto, Produtos.codigo_categoria, Produtos.codigo_subcategoria, Produtos.codigo_marca, Produtos.codigo_produto_loja, Produtos.nome_produto, Produtos.descricao_produto, Produtos.autor, Produtos.codigo_isbn, Produtos.tamanhos, Produtos.cores, Produtos.preco_base, Produtos.preco_unitario, Produtos.desconto, Produtos.moeda, Produtos.quantidade_produto, Produtos.img_produtoPQN, Produtos.img_produtoGRD, Produtos.img_produto_adic01PQN, Produtos.img_produto_adic01GRD, Produtos.img_produto_adic02PQN, Produtos.img_produto_adic02GRD, Produtos.img_produto_adic03PQN, Produtos.img_produto_adic03GRD, Produtos.peso, Produtos.Frete_Gratis, Produtos.destaque_vitrine, Produtos.promocao, Produtos.data_inicio, Produtos.data_fim, Produtos.disponivel, Produtos.sigla_idioma FROM Categorias INNER JOIN Produtos ON Categorias.codigo_categoria = Produtos.codigo_categoria WHERE Produtos.codigo_marca = "&codmarca&" AND Produtos.sigla_idioma = '"&varLang&"' AND Categorias.sigla_idioma = '"&varLang&"' AND Produtos.disponivel = 1 " & queryORDERBY

' Habilita a possibilidade de ordem dos produtos
exibeOrdemProd = True

'Se a busca partir de uma pesquisa por palavra chave
ElseIf request("tipo_busca") = "palavra" Then

'Request da palavra pesquisada
produto = request("produto")

'Caso não exista uma categoria para esta consulta
If request("codigo_categoria") <> "000" Then

Query_produtos = "SELECT Produtos.codigo_produto, Produtos.codigo_categoria, Produtos.codigo_subcategoria, Produtos.codigo_marca, Produtos.codigo_produto_loja, Produtos.nome_produto, Produtos.descricao_produto, Produtos.autor, Produtos.codigo_isbn, Produtos.tamanhos, Produtos.cores, Produtos.preco_base, Produtos.preco_unitario, Produtos.desconto, Produtos.moeda, Produtos.quantidade_produto, Produtos.img_produtoPQN, Produtos.img_produtoGRD, Produtos.img_produto_adic01PQN, Produtos.img_produto_adic01GRD, Produtos.img_produto_adic02PQN, Produtos.img_produto_adic02GRD, Produtos.img_produto_adic03PQN, Produtos.img_produto_adic03GRD, Produtos.peso, Produtos.Frete_Gratis, Produtos.destaque_vitrine, Produtos.promocao, Produtos.data_inicio, Produtos.data_fim, Produtos.disponivel, Produtos.sigla_idioma FROM Categorias INNER JOIN Produtos ON Categorias.codigo_categoria = Produtos.codigo_categoria WHERE (nome_produto like '%" & produto & "%' OR descricao_produto LIKE '%" & produto & "%') AND Produtos.codigo_categoria = "&request("codigo_categoria")&" AND Produtos.sigla_idioma = '"&varLang&"' AND Categorias.sigla_idioma = '"&varLang&"' AND Produtos.disponivel = 1 " & queryORDERBY

'Caso exista uma categoria para esta consulta
Else

Query_produtos = "SELECT Produtos.codigo_produto, Produtos.codigo_categoria, Produtos.codigo_subcategoria, Produtos.codigo_marca, Produtos.codigo_produto_loja, Produtos.nome_produto, Produtos.descricao_produto, Produtos.autor, Produtos.codigo_isbn, Produtos.tamanhos, Produtos.cores, Produtos.preco_base, Produtos.preco_unitario, Produtos.desconto, Produtos.moeda, Produtos.quantidade_produto, Produtos.img_produtoPQN, Produtos.img_produtoGRD, Produtos.img_produto_adic01PQN, Produtos.img_produto_adic01GRD, Produtos.img_produto_adic02PQN, Produtos.img_produto_adic02GRD, Produtos.img_produto_adic03PQN, Produtos.img_produto_adic03GRD, Produtos.peso, Produtos.Frete_Gratis, Produtos.destaque_vitrine, Produtos.promocao, Produtos.data_inicio, Produtos.data_fim, Produtos.disponivel, Produtos.sigla_idioma FROM Categorias INNER JOIN Produtos ON Categorias.codigo_categoria = Produtos.codigo_categoria WHERE (nome_produto like '%" & produto & "%' OR descricao_produto LIKE '%" & produto & "%') AND Produtos.sigla_idioma = '"&varLang&"' AND Categorias.sigla_idioma = '"&varLang&"' AND Produtos.disponivel = 1 " & queryORDERBY

End If

'Se a busca é de apenas produtos em ofertas
ElseIf request("tipo_busca") = "ofertas" Then

Query_produtos = "SELECT Produtos.codigo_produto, Produtos.codigo_categoria, Produtos.codigo_subcategoria, Produtos.codigo_marca, Produtos.codigo_produto_loja, Produtos.nome_produto, Produtos.descricao_produto, Produtos.autor, Produtos.codigo_isbn, Produtos.tamanhos, Produtos.cores, Produtos.preco_base, Produtos.preco_unitario, Produtos.desconto, Produtos.moeda, Produtos.quantidade_produto, Produtos.img_produtoPQN, Produtos.img_produtoGRD, Produtos.img_produto_adic01PQN, Produtos.img_produto_adic01GRD, Produtos.img_produto_adic02PQN, Produtos.img_produto_adic02GRD, Produtos.img_produto_adic03PQN, Produtos.img_produto_adic03GRD, Produtos.peso, Produtos.Frete_Gratis, Produtos.destaque_vitrine, Produtos.promocao, Produtos.data_inicio, Produtos.data_fim, Produtos.disponivel, Produtos.sigla_idioma FROM Categorias INNER JOIN Produtos ON Categorias.codigo_categoria = Produtos.codigo_categoria WHERE Produtos.sigla_idioma = '"&varLang&"' AND Categorias.sigla_idioma = '"&varLang&"' AND Produtos.disponivel = 1 " & queryORDERBY

' Habilita a possibilidade de ordem dos produtos
exibeOrdemProd = True

'Se não for busca a consulta ao banco de da página inicial ou outra página especifíca
Else
'Exibição dos produtos na página incial
If page="default" Then

'Caso o banco de dados seja MSSQL
If Application("TipoBanco") = "mssql" Then

Query_produtos = "SELECT Produtos.codigo_produto, Produtos.codigo_categoria, Produtos.codigo_subcategoria, Produtos.codigo_marca, Produtos.codigo_produto_loja, Produtos.nome_produto, Produtos.descricao_produto, Produtos.autor, Produtos.codigo_isbn, Produtos.tamanhos, Produtos.cores, Produtos.preco_base, Produtos.preco_unitario, Produtos.desconto, Produtos.moeda, Produtos.quantidade_produto, Produtos.img_produtoPQN, Produtos.img_produtoGRD, Produtos.img_produto_adic01PQN, Produtos.img_produto_adic01GRD, Produtos.img_produto_adic02PQN, Produtos.img_produto_adic02GRD, Produtos.img_produto_adic03PQN, Produtos.img_produto_adic03GRD, Produtos.peso, Produtos.Frete_Gratis, Produtos.destaque_vitrine, Produtos.promocao, Produtos.data_inicio, Produtos.data_fim, Produtos.disponivel, Produtos.sigla_idioma FROM Categorias INNER JOIN Produtos ON Categorias.codigo_categoria = Produtos.codigo_categoria WHERE destaque_vitrine = 1 AND Produtos.sigla_idioma = '"&varLang&"' AND Categorias.sigla_idioma = '"&varLang& "' AND Produtos.disponivel = 1 ORDER BY NewId()"

'Caso o banco de dados seja MYSQL
ElseIf Application("TipoBanco") = "mysql" Then

Query_produtos = "SELECT Produtos.codigo_produto, Produtos.codigo_categoria, Produtos.codigo_subcategoria, Produtos.codigo_marca, Produtos.codigo_produto_loja, Produtos.nome_produto, Produtos.descricao_produto, Produtos.autor, Produtos.codigo_isbn, Produtos.tamanhos, Produtos.cores, Produtos.preco_base, Produtos.preco_unitario, Produtos.desconto, Produtos.moeda, Produtos.quantidade_produto, Produtos.img_produtoPQN, Produtos.img_produtoGRD, Produtos.img_produto_adic01PQN, Produtos.img_produto_adic01GRD, Produtos.img_produto_adic02PQN, Produtos.img_produto_adic02GRD, Produtos.img_produto_adic03PQN, Produtos.img_produto_adic03GRD, Produtos.peso, Produtos.Frete_Gratis, Produtos.destaque_vitrine, Produtos.promocao, Produtos.data_inicio, Produtos.data_fim, Produtos.disponivel, Produtos.sigla_idioma FROM Categorias INNER JOIN Produtos ON Categorias.codigo_categoria = Produtos.codigo_categoria WHERE destaque_vitrine = 1 AND Produtos.sigla_idioma = '"&varLang&"' AND Categorias.sigla_idioma = '"&varLang&"' AND Produtos.disponivel = 1 ORDER BY RAND()"

End If

'Exibição dos produtos em página que não seja inicial e nem derivada de uma pesquisa
Else

Query_produtos = "SELECT Produtos.codigo_produto, Produtos.codigo_categoria, Produtos.codigo_subcategoria, Produtos.codigo_marca, Produtos.codigo_produto_loja, Produtos.nome_produto, Produtos.descricao_produto, Produtos.autor, Produtos.codigo_isbn, Produtos.tamanhos, Produtos.cores, Produtos.preco_base, Produtos.preco_unitario, Produtos.desconto, Produtos.moeda, Produtos.quantidade_produto, Produtos.img_produtoPQN, Produtos.img_produtoGRD, Produtos.img_produto_adic01PQN, Produtos.img_produto_adic01GRD, Produtos.img_produto_adic02PQN, Produtos.img_produto_adic02GRD, Produtos.img_produto_adic03PQN, Produtos.img_produto_adic03GRD, Produtos.peso, Produtos.Frete_Gratis, Produtos.destaque_vitrine, Produtos.promocao, Produtos.data_inicio, Produtos.data_fim, Produtos.disponivel, Produtos.sigla_idioma FROM Categorias INNER JOIN Produtos ON Categorias.codigo_categoria = Produtos.codigo_categoria WHERE Produtos.sigla_idioma = '"&varLang&"' AND Categorias.sigla_idioma = '"&varLang&"' AND Produtos.disponivel = 1 " & queryORDERBY

' Habilita a possibilidade de ordem dos produtos
exibeOrdemProd = True

End If

End If

'Captura o número da página atual se existir
If Request.QueryString("PN") = "" Then
'Se a captura for vazia, será atribuido o valor inicial
PaginaCorrente = 1
Else
'Existindo captura, o valor é atribuido à página corrente
PaginaCorrente = Request.QueryString("PN")
End If

'Cpatura o número para exibição de produtos por página
If page="default" Then
'Se página exibida for a inicial (vitrine), será atribuido o valor do application("ProdutosVitrine")
VarIntervalo = Application("ProdutosVitrine")
ElseIf Request.QueryString("FctIntervalo")= "" Then
'Se a captura for vazia, será atribuido o valor do application("produtosporpagina")
VarIntervalo = Application("ProdutosPorPagina")
Else
'Existindo captura, o valor será atribuido ao intervalo de produtos exibidos por páginas
VarIntervalo = Request.QueryString("FctIntervalo")
End If

'Cria o objeto RS_Produto de recordset
Set RS_Produto = CreateObject("ADODB.Recordset")
Set RS_Produto.ActiveConnection = Conexao
RS_Produto.CursorLocation = 3
RS_Produto.CursorType = 0
RS_Produto.LockType = 1
RS_Produto.CacheSize = VarIntervalo

'Havendo necessidade descomente a linha abaixo para saber qual query está sendo executada.
'Response.write Query_produtos

'Executa da Query de consulta
RS_Produto.Open Query_produtos
'Define o o número de produtos exibidos na página
RS_Produto.PageSize = CInt(VarIntervalo)
'Define o número total de páginas
VarTotalPaginas= RS_Produto.PageCount
'Define o número total de produtos
Var_TotalRegistros = RS_Produto.recordcount



A FUNCTION PAGINAÇÃO LOGO ABAIXO

'########################################################################################################
'FUNCTION paginacao
' - Monta os links de páginação.
' - Usado onde ha necessidade de paginação
'########################################################################################################

Function paginacao(FctStrAdicional,FctTotalPaginas,FctIntervalo)

'Define qual é a página corrente
If Request.QueryString("PN") = "" THEN
PaginaCorrente = 1
Else
PaginaCorrente = Request.QueryString("PN")
End If

'Captura o endereço da página corrente
var_url = Request.serverVariables("SCRIPT_NAME")
arrayx = split(var_url,"/")

'Monta URL da paginação a partir do endereço capturado
do while I < ubound(arrayx)
I = I + 1

If len(trim(VarURLPaginacao)) = 0 then
VarURLPaginacao = arrayx(i)
End If

If arrayx(I) > VarURLPaginacao then
VarURLPaginacao = arrayx(I)
lngIndexMaiorValor = I
exit do
End If
loop

If RIGHT(VarURLPaginacao,4) <> ".asp" Then
VarURLPaginacao = ""
End If

Flag = INT(FctTotalPaginas / FctIntervalo)
Flag1 = INT(PaginaCorrente / FctIntervalo)
PI = Flag1 * FctIntervalo

If PI = 0 THEN
PI = 1
End If

PF = PI + FctIntervalo - 1
If CInt(Flag1) >= CInt(1) THEN
Response.Write "<a href="&VarURLPaginacao&"?PN=" & PI - 1 & "&FctIntervalo=" & FctIntervalo & FctStrAdicional & " ><B>"&Application("MiddleTxtAnterior")&"</B>&nbsp;.</a>"
End If

If (PaginaCorrente - 1) >= "1" Then
Response.Write "<a href="&VarURLPaginacao&"?PN=" & Request("PN") - 1 & "&FctIntervalo=" & FctIntervalo & FctStrAdicional & " ><B>"&Application("MiddleTxtAnterior")&"</B></a>&nbsp;."
End If

FOR I = PI TO PF
If CInt(I) <= CInt(FctTotalPaginas) THEN
If CInt(PaginaCorrente) = CInt(I) THEN
response.write "<b>" & I & "</b>&nbsp;.&nbsp;"
Else
response.write "<a href="&VarURLPaginacao&"?PN=" & I & "&FctIntervalo=" & FctIntervalo & FctStrAdicional & " ><b>" & I & "</b></a>&nbsp;.&nbsp;"
FctPaginaAtual = Cint(PaginaCorrente)
End If
End If
NEXT

If CDbl(PaginaCorrente) < CDbl(FctTotalPaginas) Then
Response.Write "<a href="&VarURLPaginacao&"?PN=" & FctPaginaAtual + 1 & "&FctIntervalo=" & FctIntervalo & FctStrAdicional &" ><B>"&Application("MiddleTxtProxima")&"</B></a>&nbsp;"
End If

If (CInt(Flag1) < CInt(Flag)) THEN
If CInt(PF) <> CInt(FctTotalPaginas) THEN
Response.Write "<a href="&VarURLPaginacao&"?PN=" & PF + 1 & "&FctIntervalo=" & FctIntervalo & FctStrAdicional &" ><B>"&Application("MiddleTxtProxima")&"</B>&nbsp;</a>"
End If
End If

End Function

'########################################################################################################
'--> FIM SUB paginacao
'########################################################################################################


Edição feita por: locoman, 24/10/2011, 11:27.


#2 stumpy

stumpy

    Novato no fórum

  • Usuários
  • 14 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 24/10/2011, 12:47

Estão faltando os & na sua string no final na subcategoria

"SELECT codigo_subcategoria, h1_subcategoria, nome_subcategoria FROM Subcategorias WHERE sigla_idioma='"&varLang&"' AND codigo_categoria = "&codcat &" and url_subcategoria = '" & request("url_subcategoria")& "'"


Nunca mais trabalho para eles www.fechou.com.br

#3 locoman

locoman

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 03/11/2011, 10:52

Estão faltando os & na sua string no final na subcategoria

"SELECT codigo_subcategoria, h1_subcategoria, nome_subcategoria FROM Subcategorias WHERE sigla_idioma='"&varLang&"' AND codigo_categoria = "&codcat &" and url_subcategoria = '" & request("url_subcategoria")& "'"



Olá amigo, já coloquei o " & " na string na subcategoria + mesmo assim tá dando o mesmo erro...#
Já fucei, mexi em tudo que é possível + num to conseguindo arrumar.

Aguém + pode me dar um HELP...




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq