Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    82

    problama paginazione dati

    Salve a tutti.
    Premetto che non sono espertissimo di linguaggi di programmazione.....

    Ho un problema sulla pagina news del sito dell'agenzia per cui lavoro. Esiste un elenco completo di tutte le news inserite durante il periodo di un anno, e come potete immaginare dopo qualche mese la pagina diventa un po lunghetta da visualizzare e pertanto volevo paginare i dati. Vagando per il web sono alla fine riuscito ad applicare questa soluzione:

    <%
    dim currentPage, pageSize, recordCount, pageCount

    ' imposta il numero di record da visualizzare in ogni pagina
    pageSize = 5

    ' "legge" la pagina corrente dalla querystring
    if(len(Request.QueryString("page"))=0)then
    currentPage = 1
    else
    currentPage = CInt(Request.QueryString("page"))
    end if

    dim cn, rs, sql

    set cn = Server.CreateObject("ADODB.Connection")
    cn.Open "Driver={SQL Server};Server=xx.xxx.xxx.xx;Database=MSSqlxxxxx;U id=MSSqlxxxxx;Pwd=xxxxxxxx;"

    ' conteggia il numero di record totali della query e il numero di pagine (per la visualizzazione dei link delle altre pagine)
    SQL = "SELECT COUNT(*) AS CNT FROM TBL_News"
    set rs = cn.execute(sql)
    recordCount = rs("CNT")
    ' ottieni il numero delle pagine totali
    pageCount = int(CInt(recordCount) / pageSize)
    rs.Close()
    ' seleziona i record da visualizzare nella pagina corrente
    SQL = "SELECT TOP " & (currentPage - 1) * pageSize & pageSize &" * FROM TBL_News WHERE abilitata='1' ORDER BY data DESC"

    set rs = cn.execute(sql)
    %>

    Il discorso sta nel fatto che per farlo semi-funzionare ho dovuto modificare la query, in quanto il tutorial che io ho seguito prevedeva in origine questa query:

    SELECT * FROM TBL_News WHERE abilitata='1' ORDER BY data DESC" &_ " LIMIT " & (currentPage - 1) * pageSize & ", " & pageSize

    Solo che il mio db è MsSql, e non supporta la clausola LIMIT che io ho sostituito con la clausola TOP. Inoltre i valori pageSize della query originale sono divisi da una virgola, mentre se provo a dividerli in maniera uguale nella query modificata da me mi da errore.

    Nella pagina dell'elenco io visualizzo correttamente il numero delle pagine (al momento mi da da 1 a 9 e visualizzando 5 record a pagina è giusto), e nella prima pagina vedo solo le ultime 5 news (ed anche questo è giusto); solo che quando mi sposto nelle altre pagine la paginazione smette di funzionare e vedo l'elenco completo.

    Qualcuno sa indicarmi dove sta l'errore e come si potrebbe risolvere????
    Grazie a tutti....

  2. #2
    cerca sul forum.... ci sono moltissimi esempi

    non usare count(*) per contare, devi fare due query.... usa la proprietà recordcount del recordset

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    82
    Innanzitutto grazie per la risposta...

    Guarda io ho cercato, e non solo sul forum, i problemi però sono principalmente due:

    1) trovo tantissimo materiale su MySQL ma pokissimo su MsSQL che a quanto pare è un tantino più ostico ed inoltre ciò che vale per uno non è detto vada bene per l'altro

    2) come detto in origine sono neofita di programmazione, è da poco che sto iniziando a manovrarci; ho provato a lavorare su motissimi esempi trovati in rete, e quello con cui sono giunto più vicino al risultato era quello che ho esposto....

    Vedrò comunque di studiare anche su ciò che mi hai indicato sperando di riuscire a tirarne fuori qualcosa.....

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.