Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764

    Mostrare dei record (uno alla volta) a verificarsi di una condizione

    In una tabella ho una serie di record con delle date.

    27/10/2021 13:00:00
    28/10/2021 14:25:00
    29/10/2021 11:20:00

    Le date rappresentano il momento in cui il record deve apparire.

    In questo monento 27/10/2021 13:00, deve essere mostrato il primo record, fino alla data sucessiva (28/10/2021 14:25:00), quando verrà mostrato il secondo record e così via.


    Per il primo record confronto data e ora correnti, usando now(), e quando la data del primo record è maggiore o uguale alla data e ora attuali, mostro il record.

    Mi sto incartando sui record successivi.
    Mi sfugge come mostrare il secondo record al momento giusto (e non mostrare il primo), e così via per i successivi.
    Ultima modifica di Roby140569; 27-10-2021 a 13:20

  2. #2
    non capisco il problema: domani vedrai il secondo perché sarà l'unico che soddisfa i requisiti...

    eventualmente posta il codice che usi

  3. #3
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    così al volo senza verificare e senza dettagli...

    codice:
    select top 1 * from tabella where Cdate(data)=< now() order by data desc

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    domani me ne mostrerà 2, perché entrambi soddisfano i requisiti.

    codice:
    sql = "SELECT * FROM video ORDER BY data DESC"
        SET RS = Conn.Execute(sql)
        While Not RS.EOF
        
        adesso = now()
        data = RS("data")
        titolo = RS("titolo")
        video = RS("video")
        
        confronto = adesso - data
        
        If confronto  >= 0 Then
            Response.Write "<section id=""striscia-video-2021"">"
            Response.Write "<div class=""container-fluid"">"
            Response.Write "<div class=""box-video-2021"">"
            Response.Write "<div class=""row"">"
            Response.Write "<div class=""col-xs-12 col-sm-12 col-md-12 col-lg-12 row-gallery-partner col-centered-partners"">"
            Response.Write "<div class=""schede-partners-dettaglio"">"
            Response.Write "<h2 class=""agenda1 text-center"">"
            Response.Write titolo
            Response.Write "</h2>"
            Response.Write "<div class=""embed-responsive embed-responsive-16by9"">"
            Response.Write "<iframe src=""//player.vimeo.com/video/"
            Response.Write video
            Response.Write """ webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>"           
            Response.Write "</div>"
            Response.Write " </div>"
            Response.Write "</div>"
            Response.Write "</div>"
            Response.Write "</div>"
            Response.Write "</section>"
        End If
        
        RS.MoveNext
        Wend

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Quote Originariamente inviata da Vincent.Zeno Visualizza il messaggio
    così al volo senza verificare e senza dettagli...

    codice:
    select top 1 * from tabella where Cdate(data)=< now() order by data desc
    Il db è MySQL. Sorry, non lo avevo specificato.

  6. #6
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,783
    il concetto è sempre quello: il primo della lista discendente che soddisfa la condizione

    usa "limit" invece di "top 1"

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Risolto, grazie!

  8. #8
    Quote Originariamente inviata da Roby140569 Visualizza il messaggio
    Risolto, grazie!
    fa' vedere come, così aiuti qualche altro forumista che dovesse avere la stessa esigenza

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    764
    Quote Originariamente inviata da optime Visualizza il messaggio
    fa' vedere come, così aiuti qualche altro forumista che dovesse avere la stessa esigenza
    Ecco qui.

    codice:
    sql = "SELECT * FROM video WHERE data <= now() AND attiva = 1 ORDER BY data DESC LIMIT 1"
    SET RS = Conn.Execute(sql)
    
    titolo = RS("titolo")
    video = RS("video")
    
        Response.Write "<section id=""striscia-video-2021"">"
        Response.Write "<div class=""container-fluid"">"
        Response.Write "<div class=""box-video-2021"">"
        Response.Write "<div class=""row"">"
        Response.Write "<div class=""col-xs-12 col-sm-12 col-md-12 col-lg-12 row-gallery-partner col-centered-partners"">"
        Response.Write "<div class=""schede-partners-dettaglio"">"
        Response.Write "<h2 class=""text-center"">"
        Response.Write titolo
        Response.Write "</h2>"
        Response.Write "<div class=""embed-responsive embed-responsive-16by9"">"
        Response.Write "<iframe src=""//player.vimeo.com/video/"
        Response.Write video
        Response.Write """ webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>"           
        Response.Write "</div>"
        Response.Write "</div>"
        Response.Write "</div>"
        Response.Write "</div>"
        Response.Write "</div>"
        Response.Write "</section>"
    Ultima modifica di Roby140569; 27-10-2021 a 15:06

  10. #10
    come regola generale, cerca di far fare il più possibile al database; leggere tutto il recordset e poi scorrerlo e fare delle IF per selezionare i record non è una buona pratica: consumi un sacco di cicli macchina ed è poco performante; se invece fai da subito una selezione corretta sul db (come ti ha suggerito Vincent.Zeno) fai molta meno fatica ( e anche il server ringrazia )


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.