Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problemi con paginazion ASP & MySQL

    Salve,
    dopo essere passato da Access a MySQL, ho riscontrato moltissimi problemi con la paginazione dei dati contenuti nel database MySQL.
    Ho seguito le indicazioni contenute in varie guide reperite su internet, ma anche queste sembrano sbagliare e comunque non riesco proprio a comprendere quale sia l'errore.
    Di seguito il listato con gli script in asp che ho usato.
    L'errore riguarda la linea "pageSize = 30" (ma se pagesize non si può usare con MySQL, perchè tutte le guide - compreso un articolo su freeasp.html.it - lo usano?!?) ed è il seguente "Microsoft VBScript compilation (Ox800A0408) Invalid Character".
    Grazie a chiunque voglia aiutarmi.

    codice:
    <%
    dim letteraindice
    letteraindice=Request.QueryString ("lettera") 
    
    dim pagina
    pagina = Cint(request.querystring("pag"))
    if pagina<=0 then pagina=1
    
    Set adoCon = Server.CreateObject("ADODB.Connection")
    adoCon.ConnectionString = "server=localhost;db=database;uid=root;pwd=innovatel;driver={MySQL ODBC 3.51 Driver}"
    adoCon.Open
    SQLcount = "SELECT COUNT(archivio.gruppo) AS totale FROM archivio WHERE gruppo LIKE '" & letteraindice & "%'"
    Set adoRstCount=adoCon.Execute(SQLcount)
    
    ________pageSize = 30
    ________' Quanti records per pagina
    
    ________inizio = (pagina - 1) * pageSize
    ________' il primo record di ogni pagina
    
    ________totali = Cint(adoRstCount("totale"))
    ________' Quanti records abbiamo estratto dalla query
    
    ________NumPagine = totali/pageSize
    ________' Quante pagine abbiamo ottenuto
    
    ________' L'if successivo serve ad arrotondare per eccesso il numero di pagine
    ________' nel caso in cui ottenessimo un numero decimale
    ________' ad esempio 20 records da distribuire in 6 pagine
    
    ________If NumPagine-Cint(NumPagine) > 0 Then
    ________________NumPagine = Cint(NumPagine+1)
    ________Else
    ________________NumPagine = Cint(NumPagine)
    ________End If
    ________
    
    adoRstCount.Close
    Set adoRstCount=Nothing
    adoCon.Close
    Set adoCon = Nothing
    %>
    
    ' qui inizia la pagina e c'è il solito html
    
    <%
    ' Collegamento Database
    Set adoConn = Server.CreateObject("ADODB.Connection")
    adoCon.ConnectionString = "server=localhost;db=database;uid=root;pwd=innovatel;driver={MySQL ODBC 3.51 Driver}"
    adoCon.Open
    sql="SELECT * FROM archivio WHERE gruppo LIKE '" & letteraindice & "%' LIMIT '" & inizio & ", " & PageSize & "%' ORDER BY gruppo"
    Set adoRst=adoCon.Execute(sql)
    
    if totali > 0 then
    ________for i=1 to PageSize
    ________________if adoRst.eof<>true and adoRst.bof<>true then
    %>
    <TR>
    <TD width="50%" bgcolor="#363D45"><%=rs(3)%></TD>
    <TD width="50%" bgcolor="#363D45"><%=rs(1)%>
    <font color="#FFAC00"><% if RS("settimana") = "si" then
    	Response.Write ("SPOTLIGHTS ON")
       end if %></font>
    </TD>
    </TR>
    <%
    adoRst.movenext
    ________________end if
    ________next
    ________Else
    ________________Response.write("Nessun record trovato")
    end if
    %>
    
    <tr align="right" valign="top" bgcolor="#363D45"> 
              <td colspan="4">
                  <%
            If totali > PageSize AND NumPagine > pagina then
    ________________Response.write("Pagina successiva
    ")
    ________End If
    
    
    ________If pagina > 1 then
    ________________Response.write("
    Pagina precedente")
    ________End If
    
    adoRst.close
    Set adoRst=Nothing
    adoCon.Close
    Set adoCon=Nothing
    %>
    
    ' poi la pagina finisce

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Questo funziona perfettamente: http://freeasp.html.it/articoli/view...olo.asp?id=224

    Che versione hai di MySQL?

    Roby

  3. #3
    Ciao e grazie per la disponibilità
    La versione di MySQL che uso è la 4.1.13, comunque l'ultima disponibile sul sito www.mysql.com.

    Ho provato il listato che c'è al link che mi hai segnalato, ma c'è ancora qualcosa che non va...

    Di seguito l'asp e alla fine del post gli errori.

    codice:
    <%
    dim letteraindice
    letteraindice=Request.QueryString ("lettera") 
    
    'Recupero le variabili per paginare
    page = Cint(request.querystring("page"))
    if page = 0 then page = 1
    
    'Assegno il nome del database
    database = "database"
    call dbConnect(objConn, database)
    'Totale dei record
    strSQL = "SELECT COUNT(*) FROM archivio"
    Set objRS = objConn.Execute(strSQL)
    tot_record = objRS(0)
    set objRS = nothing
    'Record per pagina
    pageSize = 5
    'Primo record di ogni pagina
    inizio = (page - 1) * pageSize
    'Pagine complessive per effetto della paginazione
    pagine_totali = tot_record / pageSize
    'Arrotondamento in caso di resto della divisione precedente
    if pagine_totali - CInt(pagine_totali) > 0 then
    pagine_totali = CInt(pagine_totali + 1)
    else
    pagine_totali = CInt(pagine_totali)
    end If
    %>
    <html>
    <head>
    ecc...
    
    <%
    'Visualizzazione dei record paginati
    strSQL="SELECT * FROM archivio WHERE gruppo LIKE '" & letteraindice & "%' ORDER BY gruppo LIMIT " & inizio & ", " & PageSize
    Set objRS = server.CreateObject("ADODB.Recordset")
    objRS.Open strSQL, objConn
    
    if tot_record > 0 then
            for i=1 to PageSize
                    if objRS.eof<>true and objRS.bof<>true then
    
    %>
    <TR>
    <TD width="50%" bgcolor="#363D45"><%=rs(3)%></TD>
    <TD width="50%" bgcolor="#363D45"><%=rs(1)%>
    <font color="#FFAC00"><% if RS("settimana") = "si" then
    	Response.Write ("SPOTLIGHTS ON")
       end if %></font>
    </TD>
    </TR>
    <%
    objRS.movenext
                    end if
            next
            Else
              Response.write("Nessun record trovato")
    end if
    %>
    
    <tr align="right" valign="top" bgcolor="#363D45"> 
              <td colspan="4">
                  <%
    			  'Pagine precedenti
                  if page > 1 then
                  Response.write("<--")
                  else
                  Response.Write ("|")
                  end if
            
    		'Pagine successive
             if tot_record > pageSize and pagine_totali > page then
             Response.write("-->")
             else
             Response.Write ("|")
             end if
    
    objRS.close
    set objRS = nothing
    		
    call dbDisconnect(objConn, database)
    'SUB
    'Apertura connessione database
    sub dbConnect(objConn, database)
    connectionstring = "DRIVER={MySQL ODBC 3.51 Driver};DATABASE="& database &";SERVER=localhost;UID=root;PASSWORD=innovatel"
    set objConn = server.createObject("ADODB.Connection")
    objConn.Open connectionstring
    end sub
    'Chiusura connessione database
    sub dbDisconnect(objConn, database)
    objConn.close
    set objConn = nothing
    end sub
    %>
    ERRORI
    (1) Se uso la seguente stringa in SQL per connettermi al database:
    strSQL = "SELECT COUNT(*) FROM archivio WHERE gruppo LIKE '"&letteraindice
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    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 ''A' at line 1
    /disintegration/archivio_recensioni2_prova.asp, line 14

    (2) Se invece uso questa:
    strSQL = "SELECT COUNT(*) FROM archivio"
    Microsoft VBScript runtime (0x800A000D)
    Type mismatch
    /disintegration/archivio_recensioni2_prova.asp, line 22

    (linea 22: pagine_totali = tot_record / pageSize)

    A questo punto non riesco proprio più a capirci niente
    Grazie

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Gruppo sarà un campo testo...

    codice:
    strSQL = "SELECT COUNT(*) FROM archivio WHERE gruppo LIKE '"&letteraindice  &"'"

    Roby

  5. #5
    errore 1:
    codice:
    strSQL = "SELECT COUNT(*) FROM archivio WHERE gruppo LIKE '"&letteraindice &"'"
    errore 2:
    prova questo
    codice:
    strSQL = "SELECT COUNT(*) as tot FROM archivio"
    Set objRS = objConn.Execute(strSQL)
    if not objRs.eof then
    tot_record = objRS("tot")
    else
    tot_record=0
    end if

  6. #6
    Grazie ragazzi!
    I vostri aiuti mi hanno messo sulla strada giusta e mi hanno aiutato a risolvere il problema.
    A chiunque potesse servire riporto di seguito il codice funzionante per la paginazione in Asp di dati contenuti in un database MySQL.
    codice:
    <%
    dim letteraindice
    letteraindice=Request.QueryString ("lettera") 
    
    'Recupero le variabili per paginare
    page = Cint(request.querystring("page"))
    if page = 0 then page = 1
    
    'Assegno il nome del database
    database = "database"
    call dbConnect(objConn, database)
    'Totale dei record
    strSQL = "SELECT COUNT(*) as tot FROM NomeTabella WHERE NomeCampo LIKE '" & letteraindice & "%'"
    Set objRS = objConn.Execute(strSQL)
    if not objRs.eof then
    tot_record = Cint(objRS("tot"))
    else
    tot_record=0
    end if
    set objRS = nothing
    
    'Record per pagina
    pageSize = 30
    'Primo record di ogni pagina
    inizio = (page - 1) * pageSize
    'Pagine complessive per effetto della paginazione
    pagine_totali = tot_record / pageSize
    'Arrotondamento in caso di resto della divisione precedente
    if pagine_totali - CInt(pagine_totali) > 0 then
    pagine_totali = CInt(pagine_totali + 1)
    else
    pagine_totali = CInt(pagine_totali)
    end If
    %>
    
    <%
    'Visualizzazione dei record paginati
    strSQL="SELECT * FROM NomeTabella WHERE NomeCampo LIKE '" & letteraindice & "%' ORDER BY NomeCampo LIMIT " & inizio & ", " & PageSize
    Set rs = server.CreateObject("ADODB.Recordset")
    rs.Open strSQL, objConn
    
    if tot_record > 0 then
            for i=1 to PageSize
                    if rs.eof<>true and rs.bof<>true then
    
    %>
    <TR>
    <TD><%=rs(3)%></TD>
    <TD><%=rs(1)%></TD>
    </TR>
    <%
    rs.movenext
                    end if
            next
            Else
              Response.write("Nessun record trovato")
    end if
    %>
    
    <%
    			  'Pagine precedenti
                  if page > 1 then
                  Response.write("<--")
                  else
                  Response.Write ("")
                  end if
    			  
    			  'Mostra la pagina corrente in BOLD (non cliccabile) + tutte le altre (cliccabili)
    For pag = 1 to pagine_totali
      If pag = page Then
        Response.Write(""&pag&"")
      Else
        Response.Write(" "&pag&" ")
      End If
    Next
    		
    		'Pagine successive
             if tot_record > pageSize and pagine_totali > page then
             Response.write("-->")
             else
             Response.Write ("")
             end if
    		
    call dbDisconnect(objConn, database)
    'SUB
    'Apertura connessione database
    sub dbConnect(objConn, database)
    connectionstring = "DRIVER={MySQL ODBC 3.51 Driver};DATABASE="& database &";SERVER=localhost;UID=root;PASSWORD="
    set objConn = server.createObject("ADODB.Connection")
    objConn.Open connectionstring
    end sub
    'Chiusura connessione database
    sub dbDisconnect(objConn, database)
    objConn.close
    set objConn = nothing
    end sub
    %>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.