+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 10 su 10

Discussione: impaginazione record database

  1. #1
    ghis non è in linea Novello
    Post
    5

    impaginazione record database

    Buongiorno,
    sto creando una pagina di elenco articoli recuperandoli da database access
    La pagina funziona ma in questo modo mi mette gli articoli uno sotto l'altro. io vorrei metterli uno di fianco all' altro 3 alla volta. Vedo altri siti che lo fanno.
    Questi sono i codici che uso
    codice:
    <%
    Dim sqlquery
    sqlquery = "select  *  FROM [Catalogo, Articoli]  WHERE IDLinea = " & idlineadicatalogo & " AND InVendita=true"
    
    Dim RecordsetArticoli
    Set RecordsetArticoli = DatabaseWebStore.Execute(sqlquery)
    %>
        <%iPageSize = 5 'NUMERO RECORD PER PAGINA
                   
                   
                    Set RecordsetArticoli = Server.CreateObject("ADODB.Recordset")
               
                    RecordsetArticoli.PageSize = iPageSize
                    RecordsetArticoli.CacheSize = iPageSize
                    RecordsetArticoli.Open sqlquery, DatabaseWebStore, adOpenStatic, adLockReadOnly, adCmdText
                   
                    recCount = RecordsetArticoli.RecordCount
                    iPageCount = RecordsetArticoli.PageCount
                   
    
                    If iPageCurrent > iPageCount Then iPageCurrent = iPageCount
                    If iPageCurrent < 1 Then iPageCurrent = 1    
                       
                    If iPageCount = 0 Then
                    Else
                        RecordsetArticoli.AbsolutePage = iPageCurrent
                        iRecordsShown = 0
                       
                       
                       
                       
                    End If
                    %>
    
    <%If RecordsetArticoli.EOF Then%>
    <%Else%>
    codice:
    <%Do While iRecordsShown < iPageSize And Not RecordsetArticoli.EOF
                ID = RecordsetArticoli("ID")
                        Codice = RecordsetArticoli("Codice")
                        Denominazione = RecordsetArticoli("Denominazione")
                        Informazioni = RecordsetArticoli("Informazioni")
                        Informazioni1= RecordsetArticoli("Informazioni1")
                        Informazioni3= RecordsetArticoli("Informazioni3")
                        InformazioniComplete = RecordsetArticoli("InformazioniComplete")
                        InformazioniEstese = RecordsetArticoli("InformazioniEstese")
                        Confezione = RecordsetArticoli("Confezione")
                        Prezzo = RecordsetArticoli("Prezzo")
                        RiferimentoDiIcona = RecordsetArticoli("RiferimentoDiIcona")
                        RiferimentoDiFoto = RecordsetArticoli("RiferimentoDiFoto")
    %>
    Grazie

    qui è dove stampa
    codice:
    <TD width="87%" bordercolor="#98C4DD" height="90">
    <p style="margin-left: 5" class="title"><%=Denominazione%></p>
    <a href="scheda_articolo.asp?idarticolo=<%=ID%>"><p class="text"><% =Left(InformazioniEstese, 200)%>...</a><br>
    <br>
    Prezzo €&nbsp;<b><%=Prezzo%></b>
    </td>
    
    <table id="table37" border="0" cellpadding="0" cellspacing="0">
    	
    	<tr>
    		<td>
    			</td>
    		<td bgcolor="#FFFFFF">
    			<%If RiferimentoDiIcona <> "" Then%>
    <a href="scheda_articolo.asp?idarticolo=<%=ID%>"><IMG SRC="http://forum.masterdrive.it/images/small/<%=RiferimentoDiIcona%>" border="0" alt="<%=Denominazione%>"></a>
    Ultima modifica di AntonioG; 06-08-2017 07:40  Motivo: Messaggi uniti

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    14,896
    Blogs
    5
    Tu cosa hai pensato di fare? Quale codice hai scritto? Il codice è tuo?

    Come suggerimento generale ti posso dire che

    a) devi leggere i record del DB piazzando i dati in un vettore di tre elementi strutturati per volta

    b) devi passare questo vettore ad una procedura che visualizzi gli elementi stampando i tre elementi in una tabella con 3 colonne
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    ghis non è in linea Novello
    Post
    5
    Grazie per la risposta.
    lo script dovrebbe essere questo ma la mia poca conoscenza di asp non mi permette di contestualizzarlo nel ciclo

    codice:
    count=0
    do while ......
     Conta = Conta + 1
        if  Conta = colonne then
            conta = 0
           response.write "</tr><tr>"
        end if

  4. #4
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,677
    AntonioG ti ha fatto tre domande. E non te le ha fatte a caso: gli servono per capire in quali termini tecnici risponderti. Ma non hai risposto a nessuna delle tre.
    Il regolamento del forum: la prima cosa da leggere.

  5. #5
    ghis non è in linea Novello
    Post
    5
    cerco di essere più preciso
    Questo è il codice che uso adesso
    codice:
    <%@LANGUAGE = VBScript%>
    <%
        Dim sc, cn, rs, quanti, pag, contatore
    
        sc = ""
        sc = sc & "driver={Microsoft Access Driver (*.mdb)};dbq="
        sc = sc & Server.MapPath("mdb-database/webstore7.mdb")
    
       
        Set cn = Server.CreateObject("ADODB.Connection")
        Set rs = Server.CreateObject("ADODB.Recordset")
    
        cn.Open sc
    
       quanti = 9
    
        pag = Request.QueryString("pag")
        If IsNumeric(pag) = False Or pag < 1 Then pag = 1
    
        
        contatore = 0
    %>
    <html>
    <head>
    <title>Elenco articoli</title>
    </head>
    <body>
    
    <table border="0"><tr>
    <%
        rs.Open "SELECT RiferimentoDiIcona, denominazione, prezzo FROM [Catalogo, articoli] ORDER BY RiferimentoDiIcona, denominazione, prezzo ASC", cn, 1
        rs.PageSize = quanti
        rs.AbsolutePage = pag
       While rs.EOF = False And contatore < quanti
            If contatore = 3 Then
                contatore = 0
                Response.Write "</tr><tr>"
            End If
    %>
        <td><IMG SRC="immagini/<%=rs("RiferimentoDiIcona")%> height="250" width="150" border="0"><br><%=rs("denominazione")%><br><%=rs("prezzo")%></td>
    <%
            rs.MoveNext
            contatore = contatore + 1
        Wend
       
    %>
    </tr></table>
    <p align="center">
    <%If pag > 1 Then%>
        <a href="elenco.asp?pag=<%=pag-1%>">Indietro</a>
    <%End If%>
    <%
        Dim x
        x = 1
        For x = 1 To rs.PageCount
            If CInt(pag) <> x Then
    %>
                [<a href="elenco.asp?pag=<%=x%>"><%=x%></a>]
    <%
            Else
    %>
                [<a href="elenco.asp?pag=<%=x%>"><b><%=x%></b></a>]
    <%
            End If
        Next
    %>
    <%If rs.EOF = False Then%>
        <a href="elenco.asp?pag=<%=pag+1%>">Avanti</a>
    <%End If%>
    </p>
    
    </body>
    </html>
    <%
    rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
    %>
    funziona ma non mi imposta i record a 9 per pagina e non mi visualizza l'immagine

    Il codice non è mio. L ho modificato per contestualizzarlo alla mia pagina
    Grazie

  6. #6
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,677
    La lettura del recordset "per pagine" ha senso solo nel caso di recordset con moltissimi record e credo che non sia il tuo caso. Ti consiglio di semplificare il codice facendo, nel ciclo While, una normale lettura sequenziale di un record alla volta. Elimina anche (provvisoriamente) la parte relativa alla paginazione avanti-indietro e includi nel tag <td></td> un solo valore, per esempio la denominazione. Più il codice è semplice, più sarà facile individuare gli errori.
    Il regolamento del forum: la prima cosa da leggere.

  7. #7
    ghis non è in linea Novello
    Post
    5
    Ho provato in tanti modi.
    Denominazione e prezzo me li carica in maniera corretta.
    Non mi carica a video l'immagine eppure il percorso è giusto.

    ho più di 20 prodotti in una sezione e volevo dividerli perchè diventa troppo lunga la pagina.
    Con questo codice funziona
    codice:
    <%@LANGUAGE = VBScript%>
    <%
       
        Dim sc, cn, rs, quanti, pag, contatore
        
        sc = ""
        sc = sc & "driver={Microsoft Access Driver (*.mdb)};dbq="
        sc = sc & Server.MapPath("mdb-database/webstore7.mdb")
        
        Set cn = Server.CreateObject("ADODB.Connection")
        Set rs = Server.CreateObject("ADODB.Recordset")
       
        cn.Open sc
        
        quanti = 9
        
        pag = Request.QueryString("pag")
        If IsNumeric(pag) = False Or pag < 1 Then pag = 1
    
            contatore = 0
    %>
    <html>
    <head>
    <title>Elenco articoli</title>
    <style>a { color: blue; }</style>
    </head>
    <body>
    
    <table align="center" width="300" border="1">
    <%
        
        rs.Open "SELECT Riferimentodifoto FROM [Catalogo, Articoli] ORDER BY Riferimentodifoto ASC", cn, 1
        
        rs.PageSize = quanti
        rs.AbsolutePage = pag
        
        While rs.EOF = False And contatore < quanti
    %>
        <tr><td><IMG SRC="immagini/<%=rs("RiferimentoDifoto")%> height="250" width="150" border="0"></td></tr>
    <%
            rs.MoveNext
            
            contatore = contatore + 1
        Wend
    %>
    </table>
    <p align="center">
    <%If pag > 1 Then%>
        <a href="elenco.asp?pag=<%=pag-1%>">Indietro</a>
    <%End If%>
    <%
        Dim x
        x = 1
        For x = 1 To rs.PageCount
            If CInt(pag) <> x Then
    %>
                [<a href="elenco.asp?pag=<%=x%>"><%=x%></a>]
    <%
            Else
    %>
                [<a href="elenco.asp?pag=<%=x%>"><b><%=x%></b></a>]
    <%
            End If
        Next
    %>
    <%If rs.EOF = False Then%>
        <a href="elenco.asp?pag=<%=pag+1%>">Avanti</a>
    <%End If%>
    </p>
    </body>
    </html>
    <%
        
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
    %>
    ma me li mette uno sotto l'altro e nn mi carica comunque le foto

  8. #8
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,677
    Quote Originariamente inviato da ghis Visualizza il messaggio
    ma me li mette uno sotto l'altro e nn mi carica comunque le foto
    ...e questo lo avevi già detto.
    Ti ho dato qualche suggerimento su come facilitare la ricerca degli errori, ma vedo che non sei interessato.
    Il regolamento del forum: la prima cosa da leggere.

  9. #9
    ghis non è in linea Novello
    Post
    5
    l'ho fatto ho lasciato un solo campo nel ciclo while ed ho risolto il problema dell' immagine
    l' impaginazione mi servirebbe a tre colonne e non singola.

    Non so come inserire il contatore che va a capo dopo la terza colonna mantenendo i record a 9 per pagina.

  10. #10
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Post
    2,677
    Per favore non continuare a postare l'intero codice. La parte di apertura della connessione (prima del body) non interessa al tuo problema.
    Le immagini ti vengono tutte incolonnate perché crei una riga di tabella per ogni record che leggi. Devi invece creare una riga <tr> composta da tre celle <td>. La variabile contatore dovrebbe servire a questo, ma non la usi.
    In pratica:
    - scrivi l'inizio della tabella e della prima riga: <table> e <tr>.
    - per ogni record letto scrivi una cella: <td>... </td>.
    - incrementa contatore e, se è arrivato a 3: chiudi la riga </tr> e azzeralo. Se non sei a EOF apri una nuova riga <tr>.
    - finito il ciclo chiudi la tabella: </table>.

    Ovviamente così funzionerà solo se i records sono un multiplo di 3, altrimenti ...
    Il regolamento del forum: la prima cosa da leggere.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi