Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    problemi con impaginazione

    Salve a tutti, ho provato uno script relativo alla paginazione, ma non mi funziona, la causa principale per cui mi rivolgo a voi
    è il fatto della connessione come spiegavo nel post precedente, in quanto lo script originale usa un'altro tipo di connessione
    ovvero la connessione ADO, che non conosco, penso che l'errore sia riferito alla connessione. Lo script è il seguente:

    codice:
    '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("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = "& server.MapPath("ricette.mdb"))
    set recset = Server.CreateObject("ADODB.Recordset")
    
    
    cat = Request.QueryString("cat")
    
    if cat = "gastronomica" then
    piatto = Request.Form("piatto")
    tipo = Request.Form("tipo")
    
    sql = "Select * FROM ricette Where categoria ='"&piatto&"' AND merceologia ='"&tipo&"'"
    recset.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 = (recset.PageCount)
    End if
    
    'imposto la dimensione della pagina
    recset.PageSize = perpage
    'mi sposto all ultima pagina
    recset.AbsolutePage = page
    
    ' se non ci sono risultati lo notifico
    If recset.Eof or recset.Bof then 
    Response.Write "
    
    Non sono state trovate ricette</P>" 
    Else 
    %>
    <td colspan="2">sono state trovate <%= rectot2("tot2") %> ricette di <%= rectot("totale") %> presenti nei nostri database
    <%
    'scrivo i link ai 10 record
    For i = 1 to perpage
    If Not recset.EOF then
    		%> 
          <table width="799" border="1">
            <tr>
              <td width="494" align="center" valign="top"><%= recset("nome") %></td>
              <td width="289" rowspan="2" align="center" valign="top"><%= recset("foto") %></td>
            </tr>
            <tr>
              <td><%= recset("ricetta") %></td>
            </tr>
            <tr>
              <td colspan="2"><div align="right">Piatto: <%= recset("categoria") %> Tipo: <%= recset("merceologia") %> Opzioni: <%= recset("piatto") %> Provenienza: <%= recset("provenienza") %></div></td>
            </tr>
          </table>
          <% 
    	  recset.movenext
    	end if
    	next
    	end if
    	%>
        </td>
      </tr>
    </Table>
    <%
    
    'scrivo i numeri delle pagine
    %>
    
    
    Pagine:
    <%
    For pag= 1 to recset.PageCount
    if page = pag then
    'grassetto per la pagina corrente
    %>
    <A href=ricettegenerale.asp?page="<%= pag %>"><%= pag %></A>
    <%
    else
    'normale per le altre pagine
    %>
    <A href=ricettegenerale.asp?page="<%= pag %>"><%= pag %></A> 
    <%
    end if
    Next 
    %>
    </P> 
    <% 
    else 
    %>
      <tr>
        <td colspan="2"><p align="center">Per accedere alle ricette eseguire la ricerca</p>
            </tr>
    </table>
    <% 
    end if
    end if
    end if
    end if
    end if
    Invece l'errore è il seguente:

    Tipo di errore:
    ADODB.Recordset (0x800A0BB9)
    Gli argomenti non sono di tipo valido, non sono compresi nell'intervallo consentito o sono in conflitto.

    la linea riportata nell'errore è la seguente:

    recset.AbsolutePage = page

    in quanto se all'inizio riga metto l'apice del commento la pagina si carica ma lo script non funziona.
    Dove sbaglio???

    Grazie, ciao.

  2. #2
    Salve, scusate l'intrusione
    volevo precisare che avendo fatto diverse prove in questi giorni ho potuto constatare che si tratta sicuramente della stringa di connessione, come detto sopra, non conoscendo la procedura, vi chiederei gentilmente di guidarmi su come fare per connettermi.
    In più non ho capito una cosa:

    recset.Open sql, conn, 1, 3

    quell' 1, 3 a che serve ???

    grazie, ciao.

  3. #3
    Secondo me non è corretta questa condizione

    If page = "" then
    page = (recset.PageCount)
    End if


    Se la pagina non è stata passata nell'url allora il valore sarà 0, oppure 1.

    Fai una prova così:

    If page = "" then
    page = 1
    End if

  4. #4
    Io invece penso che l'orrore si qui:

    codice:
    cat = Request.QueryString("cat")
    
    if cat = "gastronomica" then
    piatto = Request.Form("piatto")
    tipo = Request.Form("tipo")
    alla pagina o arrivano dati in querystring o in form non é possibile che arrivino sia l'uno che l'altro ......

    o mi sbaglio?????

    ciao a tutti i formidabili esperti

  5. #5
    o mi sbaglio?????
    Sì.

    Request.form e request.querystring possono benissimo coesistere, ma devi ricordarti di inserire nella querystring dei link di paginazione quelle variabili che vengono recuperate con request.querystring, altrimenti nelle pagine diverse dalla prima tali variabili risulterebbero vuote. Nella fattispecie modifica i vari
    <A href=ricettegenerale.asp?page="<%= pag %>"><%= pag %></A>
    in
    Nota anche il diverso uso degli apici che, come erano, non direi andassero bene.

    Se avessi ancora problemi prova a sostituire

    recset.AbsolutePage = page

    con

    recset.AbsolutePage = cInt(page)

    in modo che il valore della pagina sia sicuramente numerico. Dopo la modifica dei link, comunque, quest'altra non dovrebbe più essere necessaria........


    Per quanto riguarda

    recset.Open sql, conn, 1, 3

    questo tipo di cursori non dovrebbe costituire un problema ai fini della paginazione, ma io preferisco usare in ogni caso

    recset.Open sql, conn, 3, 3

    I due numerini misteriosi sono costanti ADO.

    Il primo è il tipo di cursore:

    adOpenForwardOnly = 0
    adOpenKeyset = 1
    adOpenDynamic = 2
    adOpenStatic = 3

    Il secondo è il lock type:

    ReadOnly = 1
    Pessimistic = 2
    Optimistic = 3
    BatchOptimistic = 4

    Effettua le verifiche di cui sopra, poi fai sapere.......
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  6. #6
    Grazie, siete stati chiarissimi.
    In effetti, il problema, come diceva teorema, sta nel fatto che quando io clicco sul link relativo alla 2.3 ecc.. pagina, mi passa solo la variabile page in querystring, e annullando la pagina nel forum dandomi questo errore.

    ADODB.Recordset error '800a0bcd'
    Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

    e quindi non leggendo un recordset.

    Il problema sta nel fatto che io ho diverse opzioni di scelta per quanto riguarda la ricerca delle mie ricette e non saprei se sto procedendo nel modo esatto. In effetti potrei aggiungere tra le prime righe tutte le request.querystring che mi potrebbero occorrere per la paginazione, ma ripeto non so se sto procedendo nel modo esatto.
    Vi posto il codice della pagina intera in modo tale da potermi consigliare.
    Grazie per il vostro interesse.

    codice:
    <% 
    '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("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = "& server.MapPath("database.mdb"))
    set recset = Server.CreateObject("ADODB.Recordset")
    set rectot = Server.CreateObject("ADODB.Recordset")
    set rectot2 = Server.CreateObject("ADODB.Recordset")
    
    set rectot = conn.execute("Select COUNT(id) as totale FROM ricette")
    
    cat = Request.QueryString("cat")
    
    if cat = "gastronomica" then
    piatto = Request.Form("piatto")
    tipo = Request.Form("tipo")
    
    sql = "Select * FROM ricette Where categoria ='"&piatto&"' AND merceologia ='"&tipo&"'"
    recset.Open sql, conn, 1, 3
    
    set rectot2 = conn.execute("Select COUNT(*) as tot2 FROM ricette Where categoria ='"&piatto&"' AND merceologia ='"&tipo&"'")
    
    
    call tabella()
     
    else if cat = "libera" then
    
    termine = Request.Form("libera")
    set recset = conn.execute("Select * FROM ricette Where nome LIKE '%"&termine&"%' OR ricetta LIKE '%"&termine&"%' OR provenienza LIKE '%"&termine&"%'")
    set rectot2 = conn.execute("Select COUNT(*) AS tot2 FROM ricette Where nome LIKE '%"&termine&"%' OR ricetta LIKE '%"&termine&"%' OR provenienza LIKE '%"&termine&"%'")
    
    call tabella()
    
    else if cat = "territoriale" then
    
    provenienza = Request.Form("provenienza")
    set recset = conn.execute("Select * FROM ricette Where provenienza LIKE '"&provenienza&"%'")
    set rectot2 = conn.execute("Select COUNT(*) AS tot2 FROM ricette Where provenienza LIKE '"&provenienza&"%'")
    
    call tabella()
    
    else if cat = "opzionale" then
    
    opzione = Request.Form("opzione")
    set recset = conn.execute("Select * FROM ricette Where piatto = '"&opzione&"'")
    set rectot2 = conn.execute("Select COUNT(*) AS tot2 FROM ricette Where piatto = '"&opzione&"'")
    
    call tabella()
    
    else if cat= "alfabetica" then
    
    lettera = Request.QueryString("lettera")
    set recset = conn.execute("Select * FROM ricette Where nome LIKE '"&lettera&"%'")
    set rectot2 = conn.execute("Select COUNT(*) AS tot2 FROM ricette Where nome LIKE '"&lettera&"%'")
    
    call tabella()
    
    SUB tabella() 
    
    'imposto la variabile in modo da ottenere l ultima se non ne viene specificata un altra
    If page = "" then
    page = (recset.PageCount)
    End if
    
    'imposto la dimensione della pagina
    recset.PageSize = perpage
    'mi sposto all ultima pagina
    recset.AbsolutePage = page
    
    ' se non ci sono risultati lo notifico
    If recset.Eof or recset.Bof then 
    Response.Write "
    
    Non sono state trovate ricette</P>" 
    Else 
    %>
    <td colspan="2">sono state trovate <%= rectot2("tot2") %> ricette di <%= rectot("totale") %> presenti nei nostri database
    <%
    'scrivo i link ai 10 record
    For i = 1 to perpage
    If Not recset.EOF then
    		%> 
          <table width="799" border="1">
            <tr>
              <td width="494" align="center" valign="top"><%= recset("nome") %></td>
              <td width="289" rowspan="2" align="center" valign="top"><%= recset("foto") %></td>
            </tr>
            <tr>
              <td><%= recset("ricetta") %></td>
            </tr>
            <tr>
              <td colspan="2"><div align="right">Piatto: <%= recset("categoria") %> Tipo: <%= recset("merceologia") %> Opzioni: <%= recset("piatto") %> Provenienza: <%= recset("provenienza") %></div></td>
            </tr>
          </table>
          <% 
    	  recset.movenext
    	end if
    	next
    	%>
        </td>
      </tr>
    </Table>
    <%
    end if
    
    'scrivo i numeri delle pagine
    %>
    
    
    Pagine:
    <%
    For pag = 1 to recset.PageCount
    if page = pag then
    'grassetto per la pagina corrente
    %>
    &cat=<%= cat %>><%= pag %>
    <%
    else
    'normale per le altre pagine
    %>
    &cat=<%= cat %>><%= pag %> 
    <%
    end if
    Next 
    %>
    </P> 
    <%
    end SUB 
    else 
    %>
      <tr>
        <td colspan="2"><p align="center">RICETTE</p>
          
    
     --Parte tagliata-- </p></td>
      </tr>
    </table>
    <% 
    end if
    end if
    end if
    end if
    end if

  7. #7
    dai un'occhiata qui noi abbiamo risolto il problema cosi

    http://forum.html.it/forum/showthrea...ht=paginazione

    Juciara end artu da natal Brasile
    www.brasile-natal.com

  8. #8
    Perdonatemi, ma credo di essere arrivato alla conclusione:
    penso che adriana aveva ragione: se io metto

    piatto= Request.QueryString("piatto")
    piatto =Request.Form("piatto")

    mi dice che i dati sono in conflitto (o qualcosa del genere).
    allora io ho ovviato mettendo un trucchetto:

    codice:
    if cat = "gastronomica" then
    	if click = "si" then
    		piatto = Request.QueryString("piatto")
    		tipo = Request.QueryString("tipo")
    	else
    		piatto = Request.Form("piatto")
    		tipo = Request.Form("tipo")
    	end if
    sql = "Select * FROM ricette Where categoria ='"&piatto&"' AND merceologia ='"&tipo&"'"
    recset.Open sql, conn, 1, 3
    e aggiungendo al link ovviamente <a href="...click=si"> o true, il problema che funziona mi funziona per la prima pagina ovvero prende i dati dal form, mentre per le altre pagine esclude tutte le condizioni.
    Voi che sapete interpretare bene il codice perfavore corregetemi la sintassi, penso che il problema sia li.
    Grazie in anticipo.

  9. #9
    ho provato con il case select, ma mi fa la stessa cosa

    codice:
    case select cat
    case "gastronomica" 
    	if click = "si" then
    		piatto = Request.QueryString("piatto")
    		tipo = Request.QueryString("tipo")
    	else
    		piatto = Request.Form("piatto")
    		tipo = Request.Form("tipo")
    	end if
    sql = "Select * FROM ricette Where categoria ='"&piatto&"' AND merceologia ='"&tipo&"'"
    recset.Open sql, conn, 1, 3

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.