- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Impaginazione risultati di una query
-
Impaginazione risultati di una query
Ciao a tutti avrei bisogno del vostro aiuto perche da diverso tempo cerco di risolvere l'impaginazione di una lista venuta fuori da una query e non ci riesco. Ho provato ad applicare i vari codici trovati nei forum ma non riesco a concludere un bel niente. Gradirei tantissimo se qualcuno mi desse un cenno per capire da dove partire. Grazie
Di seguito il codice che utilizzo per la query
<%
'---Recupero i prodotti dal database e li stampo a video
SQLNavigazione = " SELECT * FROM Prodotti WHERE Offerta = true AND Giacenza=1 ORDER BY Prodotto ASC"
Set RSNavigazione = Conn.Execute (SQLNavigazione)
If Not RSNavigazione.Eof Then RSNavigazione.MoveFirst
Do While Not RSNavigazione.EoF
%>
<div align="center">
<table border="0" width="537" cellspacing="0" cellpadding="0">
<tr>
<td width="140">
<a href="catalogo.asp">
<p align="center">
<img src="wbresize.aspx?f=../<%=RSNavigazione("PFoto")%>&c=100&w=90&q=1" border="0">
</a>
</td>
<td width="397">
<a href="catalogo.asp">
<%=RSNavigazione("Prodotto")%>
</a>
</td>
</tr>
<tr>
<td colspan="2">
<hr size="1">
</td>
</tr>
</table>
</div>
<br>
<%
RSNavigazione.MoveNext
loop
RSNavigazione.Close
%>
-
Qual'è il problema che hai con quel codice? Penso comunque che dovresti aggiungere una riga per ogni risultato che ottieni, e non una nuova tabella, qualcosa del tipo:
<div>
...
<table>
<% per ogni riga del risultato %>
<tr>....</tr>
<%fine ciclo%>
</table>
,...
</div>
-
Si grazie, quello è il primo errore da sistemare, una riga per ogni risultato e non una tabella.
Quello che mi serve però è avere tipo 10 risultati per pagina ma non riesco ad applicare il codice, cioè non riesco prorpio a capire il suo funzionamento...
tanto per iniziare metterlo nella stessa pagina? insomma se mi dai qualche indicazione poi ci penso io a fare le prove ma almeno uno spunto concreto.
grazie mille
-
Non riesci a capire il funzionamento del codice qui sopra? In tal caso credo che ti serva leggere una guida sull'ASP. Se cominci da zero prova qualche altro linguaggio più evoluto, tipo ASP.NET.
In ogni caso il codice sopra esegue una query e poi per ogni riga del risultato scrive quello che vedi tra Do While ... e RSNavigazione.MoveNext. I valori pescati dal database vengono scritti con righe di questo tipo:<%=RSNavigazione("Prodotto")%>
Se vuoi fare la paginazione (i 10 risultati per pagina che dicevi sopra), ci vogliono un pò di controlli aggiuntivi. Come dicevo prima, se stai cominciando ora, usa ASP.NET, questo e molte altre cose te le trovi già fatte con pochi click.
-
scusa mi sono espresso male, non riusco a capire il codice che ho trovato da piu forum per fare la paginazione dei risultati della query in diverse pagine...
hai qualche cosa di semplice che funzioni bene?
grazie
-
Mi spiace ma di già fatto non ho niente, ASP lo conosco ma non lo uso, come detto ASP.NET è molto più semplice. In ogni caso posta qualcosa e vediamo se si riesce a capire il codice.
-
questo codice ad esempio può fare al caso mio? ho provato piu volte a modificarlo per adattarlo al mio codice di cui sopra ma non ci sono riuscito.
<%
'recupero la pagina
page = Request.QueryString("page")
' imposto il numero di record per pagina
perpage = 10'connessione al db
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("percorso/database.mdb")
Set Rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM messaggi ORDER BY id"
Rs.Open sql, Conn, 1, 3'imposto la variabile in modo da ottenere l'ultima se non ne viene specificata un'altra
If page = "" then
page = (rs.PageCount)
End if'imposto la dimensione della pagina
Rs.PageSize = perpage
' mi sposto all'ultima pagina
Rs.AbsolutePage = page'scrivo i link ai 10 record
For i = 1 to perpage
If Not Rs.EOF then
if Rs("id") < 10 then
Response.Write ("[<a href='tuapagina.asp?id=" & Rs("id") & "'>0" & Rs("id") & "</a>] ")
else
Response.Write ("[<a href='tuapagina.asp?id=" & Rs("id") & "'>" & Rs("id") & "</a>] ")
end if
Rs.MoveNext
end if
next'scrivo i numeri delle pagine
Response.Write "<P><B>Pagine:</B> "For pag= 1 to rs.PageCount
if page = pag then
'grassetto per la pagina corrente
Response.Write "<b>"
Response.Write "<A href='questapagina.asp?page=" & pag
Response.write "'>"
Response.Write pag
Response.Write "</A> "
Response.Write "</b>"
else
'normale per le altre pagine
Response.Write "<A href='questapagina.asp?page=" & pag
Response.write "'>"
Response.Write pag
Response.Write "</A> "
end if
NextResponse.Write "</P>"
'chiudo la connessione
Rs.Close
Set Rs = Nothing
Conn.Close
Set Conn = Nothing
%>
-
Si questo potrebbe andare, ma ripeto, se non riesci a capire il significato del codice prima è meglio che leggi qualche guida sul linguaggio ASP, almeno per avere i concetti di base.
-
il significato del codice un po lo capisco, se avessi avuto tempo avrei studiato ma mi sono rivolto al forum proprio perche mi serviva un aiuto pratico e veloce.
grazie lo stesso, sei stato gentilissimo
ciao
-
Tanto per cominciare queste sono le cose che non capisco:
<%
'recupero la pagina (QUALE PAGINA? QUESTO CODICE NON VA MESSO NELLA STESSA PAGINA DELLA QUERY?)
page = Request.QueryString("page")
' imposto il numero di record per pagina
perpage = 10'connessione al db (PERCHE LA CONNESISONE AL DB? L?HO Già FATTA CON LA MIA QUERY)
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("percorso/database.mdb")
Set Rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM messaggi ORDER BY id"
Rs.Open sql, Conn, 1, 3'imposto la variabile in modo da ottenere l'ultima se non ne viene specificata un'altra
If page = "" then
page = (rs.PageCount)
End if'imposto la dimensione della pagina
Rs.PageSize = perpage (DI QUALE DIMENSIONE PARLA)
' mi sposto all'ultima pagina
Rs.AbsolutePage = pageGrazie in anticipo a chi vorrà aiutarmi.
-
Il codice che hai postato tu serve per la paginazione.
Quando dice recupero la pagina intende il numero della pagina, cioè se io faccio
result.asp?page=3
vuol dire che volgio la terza pagina dei risultati.
Connessione e query sono due cose diverse, la connessione ti permette di accedere al database e fare le query.
Infine quando parla di dimensione intende il numero di risultati da visualizzare in ogni pagina, rappresentato dalla variabile perpage.
@partisan75 said:
Tanto per cominciare queste sono le cose che non capisco:
<%
'recupero la pagina (QUALE PAGINA? QUESTO CODICE NON VA MESSO NELLA STESSA PAGINA DELLA QUERY?)
page = Request.QueryString("page")
' imposto il numero di record per pagina
perpage = 10'connessione al db (PERCHE LA CONNESISONE AL DB? L?HO Già FATTA CON LA MIA QUERY)
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("percorso/database.mdb")
Set Rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM messaggi ORDER BY id"
Rs.Open sql, Conn, 1, 3'imposto la variabile in modo da ottenere l'ultima se non ne viene specificata un'altra
If page = "" then
page = (rs.PageCount)
End if'imposto la dimensione della pagina
Rs.PageSize = perpage (DI QUALE DIMENSIONE PARLA)
' mi sposto all'ultima pagina
Rs.AbsolutePage = pageGrazie in anticipo a chi vorrà aiutarmi.