Ir para conteúdo

POWERED BY:

Arquivado

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

saloeric

[Resolvido] Mysql e datatables

Recommended Posts

Boa tarde, o seguinte código funciona bem com bases de dados access ou sql server, no mysql está a dar problemas,

 


  sEcho = Clng(Request("sEcho"))
  iDisplayLength = Clng(Request("iDisplayLength"))
  iDisplayStart = Clng(Request("iDisplayStart"))
  sSearch = decodeutf8(Request("sSearch"))
  
  strWhere = " and nome LIKE '%"&sSearch&"%'"_
  &" or login like '%"&sSearch&"%'"

  for k = 0 to 9
   if Request("bSortable_" & k) = "true" then
    order = order & Request("iSortCol_" & k) & " " & Request("sSortDir_" & k)
   end if
  next

  order = Replace(order,"0",", id")
  order = Replace(order,"1",", login")
  order = Replace(order,"2",", nome")
  order = Right(order, Len(order)-1)
  
  strOrderBy = " ORDER BY "&order
 
  SQL = "select * from clientes where id<>0"&strWhere&strOrderBy
  rs.open sql,conexao
  iTotalDisplayRecords = 0
  if rs.eof = false then
   do while not rs.eof
    iTotalDisplayRecords = iTotalDisplayRecords + 1
   rs.movenext
   loop
  rs.movefirst
  end if

  SQL2 = "SELECT count(*) FROM clientes where id<>0"
  Set rs2 = conexao.Execute(SQL2)
  iTotalRecords = rs2(0)
  rs2.close
  set rs2 = nothing
  %>
  {"sEcho": <%=sEcho%>, "iTotalRecords": <%=iTotalRecords%>, "iTotalDisplayRecords": <%=iTotalDisplayRecords%>, "aaData": [ 
  <% 
  i = 0
  if rs.eof = false then
   rs.move(iDisplayStart)
   do while i < iDisplayLength and not rs.eof
    
    encomendas = ""
    sql2 = "select loginid from compras where loginid="&rs("id")
    set rs2 = conexao.execute(sql2)
    if not rs2.eof then
     encomendas = "<a href='encomendascliente.asp?id="&rs("id")&"'><img border='0' title='Ver encomendas' src='/images/envio.png'></a>"
    end if
    rs2.close
    set rs2 = nothing
    
    if rs("newsletter") = true then news = "Activada"  else news = "Desactivada"
    
    aaData = aaData + "["&chr(34)&rs("id")&chr(34)&","&chr(34)&"<a class='azuis' href='javascript:detalhes("&rs("id")&")'>"&rs("login")&"</a>"&chr(34)&","&chr(34)&rs("nome")&chr(34)&","&chr(34)&rs("email")&chr(34)&","&chr(34)&rs("telefone")&chr(34)&","&chr(34)&news&chr(34)&","&chr(34)&datamysql(rs("data"))&chr(34)&","&chr(34)&"<a href='editarlog.asp?id="&rs("id")&"'><img border='0' title='Editar' src='/images/editar.png'></a>"&chr(34)&","&chr(34)&"<a class='pergunta' frase='Deseja apagar o utilizador' href='eliminarlog.asp?id="&rs("id")&"'><img border='0' title='Apagar' src='/images/apaga.png'></a>"&chr(34)&","&chr(34)&encomendas&chr(34)&"],"
   rs.movenext
   i = i + 1
   loop
   aaData = Left(aaData,Len(aaData)-1)
  else
   aaData = ""
  end if
  
  rs.close
  set rs = nothing
  conexao.close
  set conexao = nothing
  response.write aaData & "] }"

no jquery é chamado assim

 $('#tblclientes').dataTable({
     "bJQueryUI": true,
     "sPaginationType": "full_numbers",
     "bProcessing": true,
     "bServerSide": true,
     "sAjaxSource": "ajax_tabelas.asp?tipo=clientes",
     "fnDrawCallback": function () {
      $('.pergunta').click(function() {
 	    aperg = window.confirm($(this).attr("frase")+"?");
       if(aperg){
        return true;
       }
       else{
        return false;
       }
      });
     },
     "bAutoWidth": false,
     "aaSorting": [[0,'desc']] ,
     "aoColumns": [ 
      { "sWidth": "5%", "bSortable": true, "sType": "numeric" },
      { "sWidth": "15%", "bSortable": true, "sType": "html" },
      { "sWidth": "15%", "bSortable": true },
      { "sWidth": "18%", "bSortable": false },
      { "sWidth": "14%", "bSortable": false },
      { "sWidth": "9%", "bSortable": false },
      { "sWidth": "9%", "bSortable": false },
      { "sWidth": "5%", "bSortable": false },
      { "sWidth": "5%", "bSortable": false },
      { "sWidth": "5%", "bSortable": false }
     ],
     "oLanguage": {
      "sProcessing": "A processar...",
      "sLengthMenu": "Mostrar _MENU_ registos por página",
      "sZeroRecords": "Nenhum registo encontrado",
      "sInfo": "Mostrar _START_ a _END_ de _TOTAL_ registos",
      "sInfoEmpty": "Mostrar 0 a 0 de 0 registos",
      "sInfoFiltered": "(filtrado de _MAX_ registos totais)",
      "sSearch": "Procurar:",
       "oPaginate": {
        "sFirst":	"Pri.",
        "sPrevious": "Ant.",
        "sNext": 	"Seg.",
        "sLast": 	"Últ."
       }
     }
 });

Uso esse código com o plugin do jquery para tabelas o datatables, em que mostra os dados via ajax com paginação, no access e sql server rola bem, no mysql ao fazer a paginação faz até a 3 página (com 10 registos por página), mostra os 30 registos iniciais, mas depois não funciona mais para a frente.

Onde tem o rs.move(iDisplayStart), já alterei a variavel por numeros e pára no 27, o ponteiro não avança mais.

 

O que será?

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o erro que está dando?

 

a sintaxe dos bancos são diferentes então naturalmente algumas coisas precisarão ser adaptadas

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá, tá a dar esse erro quando o ponteiro está acima dos 27

 

"Active Server Pages, ASP 0115 (0x80004005)

Ocorreu um erro detectável (C0000005) num objecto externo. O script não pode continuar a ser executado.

/ges/ajax_tabelas.asp"

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se as permissões estão setadas corretamente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

boas, consegui resolver colocando

 


rs.cursorlocation = 3

e tive que alterar essa linha

if rs("newsletter") = true then news = "Activada"  else news = "Desactivada"

por

if rs("newsletter") = "-1" then news = "Activada"  else news = "Desactivada"

estranho é que na listagem normal usava o mesmo código e funcionava

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK, amigo....

 

 

resolvido

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.