Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 54
  1. #1
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418

    [JSP] paginazione record

    Ciao a tutti, io devo suddividere i risultati di una query su più pagine in ASP ho visto che si fa in questo modo:

    <%
    record = 5
    page = Request("£page")
    if page="" then
    page = 1
    end if

    apro connessione


    rs = ......


    with rs
    .LockType = 3
    .CursorType = 3
    .CursorLocation = 3
    .ActiveConnenction = conn
    .Open "select * from ..."
    .PageSize = record
    end with

    if rs.eof then
    ....
    else
    rs.AbsolutePage = page
    For i = 1 to record
    if not rs.eof then

    ciao

    rs.movenext
    end if
    next
    end if

    ..write "Pagine:"

    For pag=1 to rs.PageCount
    if pag<>cInt(Request("page")) then
    ...write "<a href=2....?page=" & pag & ">pag</a>
    else
    write pag & "|"
    end if
    next
    %>

    Come si può una cosa simile con JSP?

  2. #2
    io ti avevo postato la soluzione con l'opzione LIMIT per la query
    io faccio così(anche se utilizzo delle stored procedure) e so che anche in php si utilizza questo metodo per fare la paginazione....

    se quello non va bene per le tue esigenze non saprei proprio come fare

  3. #3
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    ma non ho capito

  4. #4
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    il fatto è che io non posso mettere un valore massimo di record perché i record non sono fissi, sono molto "aleatori"

  5. #5
    prova a fare prima una "select count" per sapere quanti sono i valori nel db e il risultato lo metti come opzione alla LIMIT di cui ti parlavo qui

  6. #6
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    cioè il valore max, intendi dire?

  7. #7
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    non riesco a capire come fai a fare questo


    Originariamente inviato da danka

    in questomodo la prima volta che apri la pagina il risultato saranno i campi da 0 a 20...
    nel link che farai sul tasto next poi passi come parametro x+y, in questo modo ogni volta che richiami la pagina vai avanti di 20 in 20

    devi però gestire il problema della fine dei campi, quindi devi sapere quanti sono i campi del db e fermarti in tempo

    questo naturalmente a livello teorico...non sono riuscito a testarlo

  8. #8
    esatto, se fai una select count di tutte le righe che hai nel db puoi sapere quale sarà il valore massimo che poi non ti serve per la LIMIT(mi sono sconfuso) ma per controllare di non andare oltre con la paginazione...

    se hai 50 record e li impagini per 20 alla terza pagina potrebbe darti dei problemi quindi ti conviene controllarlo e poi almeno sai che sono finiti e termini con i tasti "next"

    avresti quindi
    quando la chiami la prima volta
    LIMIT 0,20
    poi la richiami e avrai LIMIT 20,20
    e infine LIMIT 40,20

    ora non so esattamente se devi mettere 20,20 o 21,20...non mi ricordo se considera anche lo 0 o no...se fai un paio di tentativi però te ne rendi conto
    e poi non ricordo se il fatto che non ci siano più campi può dare fastidio quindi al posto di 40,20 dovresti mettere 40, 10

    mi rendo conto di aver fatto un casino...se non ti è chiaro qualcosa o tutto fammi un fischio

  9. #9
    Utente di HTML.it L'avatar di userfra
    Registrato dal
    Jul 2001
    Messaggi
    1,418
    Cioè io faccio una cosa di questo tipo:

    <%
    ResultSet rs = st.executeQuery("select count(*) AS ID from tab");

    rs.next();

    String conta = rs.getString(1);

    ResultSet rs2 = st.executeQuery("select * from tab LIMIT '" + conta + "'", 20);

    %>

    ????
    dopo di che, cosa faccio

  10. #10
    no, mi sono spiegato male
    il primo parametro della LIMIT rappresenta il valore da cui vuoi partire...quindi nella prima pagina = 0 e il secondo il numero di campi che vuoi estrarre

    provo a spiegarmi meglio:
    pagina.jsp è la pagina che contiene la select

    valore_massimo che sarà il risultato della select count, per sapere quanti sono le righe contenute nel db

    valore_iniziale corrisponde al valore con cui inizi a elencare i risultati della select, quindi nella prima pagina sarà uguale a 0 mentre nelle altre lo devi recuperare con una request.getParameter()
    quindi:
    codice:
    if(request.getParameter("inizio") != null) valore_iniziale = Integer.parseInt(request.getParameter("inizio"));
    else valore_iniziale = 0;
    numero_campi rappresenta il numero di campi che vuoi in ogni pagina

    quando chiami pagina.jsp la prima volta hai
    "select * from tabella LIMIT "+valore_iniziale+","+numero_campi;
    dove valore_iniziale è uguale a 0...

    sul tastino "next" metti un link tipo:
    ./pagina.jsp?inizio=<%=valore_iniziale+numero_campi% >

    così alla chiamata successiva avrai valore_iniziale = 20

    il numero totale di record ti serve solo per fare un controllo per il tastino "next" che visualizzerai solo se valore_iniziale è minore di valore_massimo

    non so se mi sono spiegato bene stavolta, purtroppo non sempre riesco a spiegare quello che mi frulla in testa....sono un po' incasinato, ho il mio unico neurone che ogni tanto sfasa per la solitudine

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.