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

    prendere l' "x"-esimo recordset.

    salve a tutti.
    una piccola parte di un sistema che sto programmando prevede la funzione di messaggistica interna per gli utenti registrati.
    faccio tutto con un unica tabella:
    messaggi(id_messaggio , mittente_id, destinatario_id, timestamp, testo, letto)
    dove "letto" è un booleano che mi dice se un messaggio è stato letto o no.

    il principio di lettura è questo:
    quando una persona riceve dei messaggi può cliccare su un link che apre una finestrella. all'interno di questa finestra legge il messaggio, può cliccare su un pulsante per segnarlo come gia letto (e a quel punto non verrà più preso in considerazione) oppure può navigare avanti e indietro fra i suoi messaggi ricevuti non ancora letti.

    bene. voi come fareste per muovervi all'interno di un recordset e aprire quello successivo o quello precedente a seconda di quale tasto viene premuto?
    spero di essermi spiegato

    attendo suggerimenti
    grazie, Luca
    Appartamenti in affitto nella riviera Romagnola - Cervia, Milano Marittina, Pinarella, Tagliata, Lido di Classe, Lido di Savio. www.cervia-affitti.com

  2. #2
    alla base c'è un codice in sql con where, il resto al paese mio si chiama "paginazione" e ci sono migliaia di post a riguardo,prova a cercare nel forum

  3. #3
    ho fatto un po di ricerche e sono arrivato a questo codice:

    codice:
    <%
    iPageSize = 1
    if request("page") = "" then
    	iPageCurrent = 1
    else
    	iPageCurrent = Cint(Request("page"))
    end if
    
    sql = "SELECT * FROM msg_elenco WHERE letto='0' AND destinatario_id=" & session("id_utente") & " ORDER BY id_messaggio"
    set rs = server.CreateObject("ADODB.Recordset")
    rs.pagesize = iPageSize
    rs.CacheSize = iPageSize
    rs.Open sql, conn, adOpenStatic, adLockReadOnly,adCmdText
    
    reccount = rs.RecordCount
    iPageCount = rs.PageCount
    
    if iPageCurrent > iPageCount then iPageCurrent = iPageCount
    if iPageCurrent < 1 then iPageCurrent = 1
    
    if iPageCount = 0 then
    	Response.Write "Non ci sono record"
    else
    	rs.AbsolutePage = iPageCurrent
    	iRecordsShown = 0
    
    	cont = 1
    	do while iRecordsShown < iPageSize AND NOT rs.EOF
    %>
                   
    <%
       	       cont = cont + 1
    	       iRecordsShown = iRecordsShown + 1
    	       rs.MoveNext
            loop
    	rs.Close
    	set rs = nothing
    end if
    %>
    poi ci dovrebbe essere la seconda parte (quella dove faccio le frecce "avanti" e "indietro" per navigare fra i messaggi).

    purtroppo, però, andando a testare questa prima parte, viene mostrato questo errore:

    "Il set di record corrente non supoprta i segnalibri. potrebbe trattarsi di una limitazione del provider o del tipo di cursore selezionato"

    sto testando tutto in locale. il provider sono io

    la riga incriminata è rs.absolutepage = iPageCurrent

    AIUTO!!!!
    Appartamenti in affitto nella riviera Romagnola - Cervia, Milano Marittina, Pinarella, Tagliata, Lido di Classe, Lido di Savio. www.cervia-affitti.com

  4. #4
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    rs.Open sql, conn, adOpenStatic, adLockReadOnly,adCmdText

    se non includi il file con le definizioni delle costanti (che non ricordo come si chiama, adoqualcosa.vbs) non è in grado di interpretare adOpenStatic, adLockReadOnly,adCmdText

    Apri il recordset così:

    rs.Open sql, conn, 3, 3
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  5. #5
    stesso errore...

    se può essere utile vi dico che uso mysql
    Appartamenti in affitto nella riviera Romagnola - Cervia, Milano Marittina, Pinarella, Tagliata, Lido di Classe, Lido di Savio. www.cervia-affitti.com

  6. #6
    se non erro mysql ha una clausola chiamata limit.

    La sintassi corretta non la so, ma se usi:
    limit 10,20
    dovrebbe prenderti solo i record dal 10 al 20.

    Ma se a te server 1 solo perchè no nutilizzo la calusola where ?
    Vuoi guadagnare con il tuo sito ?
    affiliati con noi e riceverai ottime percentuali !!!
    Travellero Affiliate Program
    Scambia link con noi

  7. #7
    la clausula "LIMIT" viene usata al posto di "SELECT TOP 10 * FROM..."
    si, a me serve solo un record, però sinceramente non saprei come fare. magari è una stupidata ma non ne vengo fuori.
    Tu come faresti?
    la situazione è che sul database ci sono n messaggi non letti destinati ad un determinato utente. quando questo utente si connette, cliccando su un link si apre una finestra dove compare solo il primo messaggio non letto. cliccando su "avanti" e "indietro" si devono poter scorrere tutti i suoi messaggi non letti.
    boh....
    Appartamenti in affitto nella riviera Romagnola - Cervia, Milano Marittina, Pinarella, Tagliata, Lido di Classe, Lido di Savio. www.cervia-affitti.com

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.