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

    record precedente - successivo

    ciao,

    ho visto che questo problema è già stato affrontato diverse volte, ma la mia domanda è un po' diversa.
    ho realizzato una pagina asp che viene richiamata da un filmato in flash, questa pagina restituisce il nome di un file mp3 in modo casuale da un elenco presente in una tabella in access.
    Un metodo per fare il cosidetto "record precedente" e "record successivo" sarebbe quello di fare una prima query cercando il record con ID < di quello selezionato e una seconda query cercando l'ID > sempre di quello selezonato.
    Però io volevo cercare una soluzione più elegante e usare cioè i recordset.

    il mio problema è che se voglio vedere con il .BOF o con il. EOF se il record casuale è il primo o l'ultimo ho sempre valore "false"

    posto lo script (in rosso la parte che non funziona):

    codice:
    <% randomize()
    id = request.querystring("id")
    if id ="" then
    query = "SELECT * FROM records"
    else
    query = "SELECT * FROM records WHERE idpromo=" & id
    end if
    set titoli = server.createobject("adodb.recordset")
    titoli.open query, connDB, 1, 1
    if not titoli.BOF and not titoli.EOF then
    cursore = Fix(titoli.RecordCount*Rnd())
    titoli.Move (cursore)
    response.write ("&file_mp3=" & titoli("file1"))
    response.write("&titolo="+Server.URLEncode(titoli("artista") & " """ & titoli("titolo") & """"))
    if not titoli.EOF=true then
    titoli.movenext
    end if
    response.write ("&avanti=" & titoli("idpromo"))
    
    
    
    
    else
    response.write("&titolo=file audio non trovato")
    end if %>
    grazie

  2. #2
    ma quando tu passi in querytring un ID otterrai da quella select, a logica, 1 solo record...come pensi di trovare il rpecedente o successivo? dovresti invece usare il metodo della paginazione (di script ce ne sono a bizzeffe ormai qui sul forum) impaginando i tuoi record con 1 file per pagina...credo
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    hai ragione, infatti nel frattempo ho trovatoquesta soluzione, che sembra funzionare bene nel caso la variabile ID abbia un valore.

    <% randomize()
    id = request.querystring("id")

    '** determina il qual'è il primo e l'ultimo record
    query = "SELECT * FROM records"
    set titoli = server.createobject("adodb.recordset")
    titoli.open query, connDB, 1, 1
    if not titoli.BOF and not titoli.EOF then
    titoli.movefirst
    rec_first = titoli("idpromo")
    titoli.movelast
    rec_last = titoli("idpromo")
    end if

    '** se l'ID ricevuto ha una valore allora cambia la query
    if id <>"" then
    query = "SELECT * FROM records WHERE idpromo=" & id
    end if
    set titoli = server.createobject("adodb.recordset")
    titoli.open query, connDB, 1, 1
    if not titoli.BOF and not titoli.EOF then
    cursore = Fix(titoli.RecordCount*Rnd())
    titoli.Move (cursore)
    response.write ("&file_mp3=" & titoli("file1"))
    response.write("&titolo="+Server.URLEncode(titoli( "artista") & " """ & titoli("titolo") & """"))


    '** record successivo
    query = "SELECT * FROM records WHERE idpromo > " & titoli("idpromo")
    set rec_successivo = server.createobject("adodb.recordset")
    rec_successivo.open query, connDB, 1, 1
    if rec_successivo.BOF and rec_successivo.EOF then
    response.write ("&next=" & rec_first)
    else
    response.write ("&next=" & rec_successivo("idpromo"))
    end if

    '** record precedente
    query = "SELECT * FROM records WHERE idpromo < " & titoli("idpromo")
    set rec_precedente = server.createobject("adodb.recordset")
    rec_precedente.open query, connDB, 1, 1
    if rec_precedente.BOF and rec_precedente.EOF then
    response.write ("&prev=" & rec_last)
    else
    response.write ("&prev=" & rec_precedente("idpromo"))
    end if
    else
    response.write("&titolo=file audio non trovato")
    end if %>
    magari può essere utile a qualcuno

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.