[Resolvido] Mysql e datatables
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á?
Discussão (7)
Carregando comentários...