Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Paginazione in MySQL

  1. #1
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135

    Paginazione in MySQL

    Ciao.

    Sono riuscito a mettere su una paginazione dati in mysql.

    La paginazione avviene correttamente tranne quando applico dei filtri (condizioni) alle query, mi spiego meglio, questa è la query senza condizioni:

    codice:
    ord = trim(request("ord"))
    if ord = "" then
    ord = "uoat"
    end if
    
    sql = "SELECT * FROM tbl order by "& ord &" LIMIT " & (currentPage - 1) * pageSize & ", " & pageSize
    ed è tutto OK, ho 30 pagine totali.

    Quando invece applico una condizione come la seguente:

    codice:
    sql = "SELECT * FROM tbl where codice = "&codice&" order by "& ord &" LIMIT " & (currentPage - 1) * pageSize & ", " & pageSize
    L'estrazione avviene correttamente, però mi ritrovo sempre le 30 pagine totali e, se per caso ne vado a prendere una dove codice non è verificato, mi dice che non ci sono records da estrarre.

    Quasta cosa non mi piace perchè vorrei, quando c'è la condizione nella query, vedere le pagine totali per quella condizione e non le pagine totali.

    Spero d'essermi spiegato, così faccio l'impaginazione:

    codice:
    <%
    'Paginazione
    
    Response.Write "Numero Pagine:
    "
    For page = 1 to pageCount
      Response.Write "<A href='"&istring&"?page="&page
      Response.Write "&codice="&codice
      Response.write "'>"
      Response.write "<font size=1 color=#000080>"
      Response.Write page
      Response.Write "</A> " 
    Next
    Response.Write ">>"
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  2. #2
    devo proprio postare 'sta pillola???

    cmq fammi vedere un po' più di codice, quello li è troppo estrapolato e non si capisce dov'è l'errore (anche se lo intuisco)
    san imente saluta

    * http://simonecingano.it *

  3. #3
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    codice:
    <%
    
    pageSize = 20
    
    if(len(Request.QueryString("page"))=0)then
      currentPage = 1
    else
      currentPage = CInt(Request.QueryString("page"))
    end if
    
    sql = "SELECT COUNT(*) AS CNT FROM tbl"
    set rs = cn.execute(sql)
    
    recordCount = rs("CNT")
    pageCount = int(CInt(recordCount) / pageSize)
    rs.Close()
    
    ord = trim(request("ord"))
    if ord = "" then
    ord = "uoat"
    end if
    
    if codice <> "then
       
       sql = "SELECT * FROM tbl where codice = "&codice&" order by "& ord &" LIMIT " & (currentPage - 1) * pageSize & ", " & pageSize 
    
    else
      
       sql = "SELECT * FROM tbl order by "& ord &" LIMIT " & (currentPage - 1) * pageSize & ", " & pageSize
    
    end if
    
    set rs = server.createObject("ADODB.Recordset")
    rs.open sql, cn, 1, 3
    
    if rs.eof then
    
       response.write "Nessun record"
    
       else
          While Not rs.eof
    
    ' stampa i records estratti
    
      rs.MoveNext
          wend
    end if
    
    'Paginazione
    
    Response.Write "Numero Pagine:
    "
    For page = 1 to pageCount
      Response.Write "<A href='"&istring&"?page="&page
      Response.Write "&codice="&codice
      Response.write "'>"
      Response.write "<font size=1 color=#000080>"
      Response.Write page
      Response.Write "</A> " 
    Next
    Response.Write ">>"
    
    rs.close
    cn.Close
    
    set rs = nothing
    set cn = Nothing
    
    %>
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  4. #4
    codice:
    <%
    
    pageSize = 20
    
    if(len(Request.QueryString("page"))=0)then
      currentPage = 1
    else
      currentPage = CInt(Request.QueryString("page"))
    end if
    
    if codice <> "" then
       sql = "SELECT COUNT(*) AS CNT FROM tbl WHERE codice = " & codice
    else
       sql = "SELECT COUNT(*) AS CNT FROM tbl"
    end if
    
    set rs = cn.execute(sql)
    
    recordCount = rs("CNT")
    pageCount = int(CInt(recordCount) / pageSize)
    rs.Close()
    
    ord = trim(request("ord"))
    if ord = "" then
    ord = "uoat"
    end if
    
    if codice <> "" then
       sql = "SELECT * FROM tbl where codice = "&codice&" order by "& ord &" LIMIT " & (currentPage - 1) * pageSize & ", " & pageSize 
    else
       sql = "SELECT * FROM tbl order by "& ord &" LIMIT " & (currentPage - 1) * pageSize & ", " & pageSize
    
    end if
    
    set rs = server.createObject("ADODB.Recordset")
    rs.open sql, cn, 1, 3
    
    [.... bla bla bla .....]
    
    %>
    il solito testone! :rollo:
    san imente saluta

    * http://simonecingano.it *

  5. #5
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da imente il solito testone! :rollo:
    In effetti... :maLOL:

    cmq non va:

    Tipo di errore:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [MySQL][ODBC 3.51 Driver][mysqld-5.0.24-community-nt]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 '20' at line 1
    Su questa query:

    codice:
    SELECT COUNT(*) AS CNT FROM tbl 20
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  6. #6
    mo la testa te la spacco davvero

    togli quel 20... cos'è?

    ah, c'era un errore, mi era rimasto un PAGESIZE in mezzo alle scatole, ho modificato ma evidentemente troppo tardi...
    san imente saluta

    * http://simonecingano.it *

  7. #7
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da imente
    mo la testa te la spacco davvero

    togli quel 20... cos'è?

    ah, c'era un errore, mi era rimasto un PAGESIZE in mezzo alle scatole, ho modificato ma evidentemente troppo tardi...
    Non mi sono accorto della correzione, sorry adesso riprovo... grazie
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  8. #8
    Originariamente inviato da [trodat]
    Non mi sono accorto della correzione, sorry adesso riprovo... grazie
    ghghghghgh
    ottimo
    san imente saluta

    * http://simonecingano.it *

  9. #9
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Si adesso funziona... però succede un fatto strano... nel db mysql ho dei records che arrivano sino alla data di oggi 24-08-2006...

    Eseguo le due query:

    codice:
    SELECT COUNT(*) AS CNT FROM tbl where codice = 'Dom' order by dataoperazione
    
    SELECT * FROM tbl where codice = 'Dom' order by dataoperazione LIMIT 120, 20
    Ma la paginazione si ferma alla pagina numero 7 e cioè sino al 28-07-2006

    e i rimanenti records dove sono finiti ???
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  10. #10
    prima cosa, nel COUNT l'order by è superfluo...
    toglilo

    per ora controlla un secondo quanti ne conta, quanto è la pagesize e quante pagine fa.

    qualcosa dovrebbe non corrispondere
    san imente saluta

    * http://simonecingano.it *

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.