Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407

    Problema con paginazione ASP & MySQL

    Ciao a tutti.

    Ho un problema con una paginazione asp e mysql.

    In pratica quando arrivo all'ultima pagina che mi mostra a video i records estratti e painati 25 per pagina, mi rimane attivo il link alla pagina successiva come se ci fossero altre righe da visualizzare; se clicco sul link si apre una pagina bianca vuota... cosa sbaglio in questo codice?

    codice:
    <%
       count = 0
       pageSize = 25
       
       if(len(Request.QueryString("pagina"))=0)then
          currentPage = 1
       else
          currentPage = CInt(Request.QueryString("pagina"))
       end if
    
       If Not IsNumeric (currentPage) Then currentpage = 1
       If currentPage < 1 Then currentPage = 1
    
       start = ((currentPage - 1) * pageSize)
       If start < 0 Then start = 0
    
    %>
    
    ..........
    
    <% if currentPage > 1 then %>
    Pag precedente 
    <% else %>
    Pag precedente
    <% end if %>
    | 
    
    //questo link rimane sempre attivo anche quando i records da estrarre sono finiti...//
    Pag successiva

  2. #2
    Dal codice che hai postato si vede che hai gestito solamente il link alla pagina precedente (attivo solo per currentPage > 1). Per fare una cosa analoga sul link alla pagina successiva dovresti determinare il numero di pagine max (calcolato con maxPage=numerorecord/pageSize, arrotondato per eccesso). Se currentPage = maxPage non visualizzi il link.
    Chi non cerca trova.

  3. #3
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    maxPage=numerorecord/pageSize

    Pagesize lo conosco (25) ma numerorecord come lo calcolo?

    Grazie

  4. #4
    Se usi l'oggetto recordset c'è la proprietà Count, altrimenti puoi fare una query tipo "SELECT Count...".
    Chi non cerca trova.

  5. #5
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Utilizzo ASP e MySQL, questa è la query che mi estrae i recordset che mi interessano:

    codice:
    select es as es, `codice n` as cn, `descrizione n` as dn, `descrizione l` as dl, substring_index(LN,'-',1) as r, sum(if(dove=1,1,0)) as intTotalB, sum(if(dove=2,1,0)) as intTotalL, count(substring_index(LN,'-',1)) as q from ( select es, id_Z, `codice n`, `descrizione no`, data, `descrizione l`, LN, 1 as dove from tbl_b as B where 1 and ( data between '2010-01-01' and '2010-06-23' and LN > '0' and es LIKE '%I%' ) union all select iddtes, id_Z, cp, imp, data_evento, substring_index(LN_MT,'-',-1), LN_MT, 2 as dove from tbl_l as L where 1 and ( data_evento between '2010-01-01' and '2010-06-23' and LN_MT > '0' and iddtes LIKE '%I%' ) ) as tab group by r having q > 3 order by q desc, `descrizione l` asc LIMIT 0, 25

  6. #6
    Questa query usa LIMIT e quindi al massimo ti estrae 25 record per volta. Dovresti fare un'altra query a parte che ti calcola il numero complessivo di record, qualcosa tipo questa:
    codice:
    SELECT COUNT(er) AS NumeroRecord FROM tabella
    Chi non cerca trova.

  7. #7
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Si ok però su quale delle tabelle interessate dalla limit devo eseguire la count?

  8. #8
    Sulle stesse tabelle in union.
    Chi non cerca trova.

  9. #9
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Ho provato, ma su questa query ho già un count che però non restituisce il totale dei records (count(substring_index(LN,'-',1)) as q) ma bensì i records che rispondono alle condizioni previste nella query:

    codice:
    select es as es, `codice n` as cn, 
           `descrizione n` as dn, `descrizione l` as dl, 
            substring_index(LN,'-',1) as r, sum(if(dove=1,1,0)) as intTotalB, 
            sum(if(dove=2,1,0)) as intTotalL, count(substring_index(LN,'-',1)) as q 
            from 
            ( select es, id_Z, `codice n`, 
             `descrizione no`, data, `descrizione l`, 
              LN, 1 as dove from tbl_b as B 
              where 1 and 
            ( data between '2010-01-01' 
              and '2010-06-23' and LN > '0' and es LIKE '%I%' ) 
              union all select iddtes, id_Z, cp, imp, data_evento, 
              substring_index(LN_MT,'-',-1), LN_MT, 2 as dove 
              from tbl_l as L where 1 and 
            ( data_evento between '2010-01-01' 
             and '2010-06-23' and LN_MT > '0' and iddtes LIKE '%I%' ) ) as tab 
    group by r having q > 3 
    order by q desc, `descrizione l` asc 
    LIMIT 0, 25

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.